Я могу использовать QT в качестве Библиотеки C++, не используя ее платформу UI

Имеет смысл использовать QT для того, чтобы повысить производительность в приложении MFC, на самом деле не используя спокойную систему пользовательского интерфейса?

Я в настоящее время смотрю или хорошая библиотека производительности для моего основанного на MFC приложения, с полезными контейнерными классами, строка algorithmus, распараллеливая классы, классы ввода-вывода и так далее. QT API очень хорош, по-моему. Однако, так как я не хочу переключать свой UI на QT (просто слишком много усилия), я задаюсь вопросом, может ли QT использоваться хорошо в приложении MFC без какого-либо QT UI.

Заранее спасибо за Ваши мнения.

Fabian

6
задан Ben James 25 December 2009 в 22:39
поделиться

6 ответов

Qt разделена на несколько модулей (QtGui - один из них). Вы можете вручную выбрать, какие модули используются вашим приложением, линковкой только против нужных вам библиотек.

Я не могу ответить, будет ли Qt интероперабельной с MFC. Но по крайней мере, QString предлагает преобразование в std::string и char*/wchar, что должно вам немного помочь.

Документация по Qt предоставляет обзор по модулям.

Как указал Даниэль ниже, вы должны быть осведомлены о цикле обработки событий. Однако, можно использовать цикл обработки событий без GUI модуля. Вы можете вызвать processEvents на QCoreApplication, чтобы обработать все события в очереди, а затем вернуться. Есть одно предостережение с отложенным удалением, но документация описывает обходной путь.

.
10
ответ дан 8 December 2019 в 03:53
поделиться

Есть некоторые классы утилит, которые можно использовать, но есть очень важное предостережение. Qt очень сильно зависит от своего цикла обработки событий. Цикл обработки событий запускается вызовом QApplication::exec(). Теперь многие классы Qt зависят от сигналов, а механизм слотов - это Qt. Сигналы и слоты полностью зависят от цикла обработки событий для корректной работы.

Это полностью верно для модулей GUI, но также верно и для некоторых других модулей. Можно ожидать, что каждый класс, производный от QObject, будет использовать сигналы и слоты и поэтому будет непригоден без цикла обработки событий.

7
ответ дан 8 December 2019 в 03:53
поделиться

Конечно, вы можете использовать инструментарий QT без использования его GUI-библиотеки.

В зависимости от ваших потребностей, вы можете захотеть рассмотреть библиотеки boost, которые предоставляют вменяемый набор API, который помогает во многих вещах. Лично я использую ее для работы с сетевыми сокетами в многоплатформенном режиме, но в ней есть гораздо больше.

.
5
ответ дан 8 December 2019 в 03:53
поделиться

да, вы можете, вы должны просто исключить Модуль QtGui из вашего проекта (.pro), потому что он включен по умолчанию.

 QT -= gui 

так используется только Основной Модуль.

.
3
ответ дан 8 December 2019 в 03:53
поделиться

Mumble project использует Qt для клиента и сервера, при этом сервер не имеет вообще никакого UI кода, все еще широко используя остальной Qt API.

2
ответ дан 8 December 2019 в 03:53
поделиться

Если она нужна только для классов коллекции, почему бы просто не использовать библиотеку std:::

.
0
ответ дан 8 December 2019 в 03:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: