Имеет смысл использовать QT для того, чтобы повысить производительность в приложении MFC, на самом деле не используя спокойную систему пользовательского интерфейса?
Я в настоящее время смотрю или хорошая библиотека производительности для моего основанного на MFC приложения, с полезными контейнерными классами, строка algorithmus, распараллеливая классы, классы ввода-вывода и так далее. QT API очень хорош, по-моему. Однако, так как я не хочу переключать свой UI на QT (просто слишком много усилия), я задаюсь вопросом, может ли QT использоваться хорошо в приложении MFC без какого-либо QT UI.
Заранее спасибо за Ваши мнения.
Fabian
Qt разделена на несколько модулей (QtGui - один из них). Вы можете вручную выбрать, какие модули используются вашим приложением, линковкой только против нужных вам библиотек.
Я не могу ответить, будет ли Qt интероперабельной с MFC. Но по крайней мере, QString предлагает преобразование в std::string и char*/wchar, что должно вам немного помочь.
Документация по Qt предоставляет обзор по модулям.
Как указал Даниэль ниже, вы должны быть осведомлены о цикле обработки событий. Однако, можно использовать цикл обработки событий без GUI модуля. Вы можете вызвать processEvents на QCoreApplication, чтобы обработать все события в очереди, а затем вернуться. Есть одно предостережение с отложенным удалением, но документация описывает обходной путь.
. Есть некоторые классы утилит, которые можно использовать, но есть очень важное предостережение. Qt очень сильно зависит от своего цикла обработки событий. Цикл обработки событий запускается вызовом QApplication::exec()
. Теперь многие классы Qt зависят от сигналов, а механизм слотов - это Qt. Сигналы и слоты полностью зависят от цикла обработки событий для корректной работы.
Это полностью верно для модулей GUI, но также верно и для некоторых других модулей. Можно ожидать, что каждый класс, производный от QObject
, будет использовать сигналы и слоты и поэтому будет непригоден без цикла обработки событий.
Конечно, вы можете использовать инструментарий QT без использования его GUI-библиотеки.
В зависимости от ваших потребностей, вы можете захотеть рассмотреть библиотеки boost, которые предоставляют вменяемый набор API, который помогает во многих вещах. Лично я использую ее для работы с сетевыми сокетами в многоплатформенном режиме, но в ней есть гораздо больше.
.да, вы можете, вы должны просто исключить Модуль QtGui из вашего проекта (.pro), потому что он включен по умолчанию.
QT -= gui
так используется только Основной Модуль.
.Mumble project использует Qt для клиента и сервера, при этом сервер не имеет вообще никакого UI кода, все еще широко используя остальной Qt API.
Если она нужна только для классов коллекции, почему бы просто не использовать библиотеку std:::
.