Qt UI для существующего проекта C++
-
20-09-2019 - |
Вопрос
Я уже написал программу на C++ и хотел бы написать для нее графический интерфейс.Я понимаю, что Qt — замечательный инструмент, однако у Qt есть свои классы, которые меня очень смущают.например:вместо String в Qt есть класс с именем QString.
Мне интересно, могу ли я смешивать код C++ и код Qt в C++?
Решение
Да, вы можете очень легко смешивать Qt и STL.
Графический интерфейс занимает QString
s, но молча создаст эту форму std::string
или char*
, QStrings
возвращенный из Qt, можно преобразовать с помощью toStdString()
или toAscii()
.
Qt включает набор классов коллекций, но вам не обязательно их использовать.
Qt хорошо выглядит как современный C++, есть несколько «дополнительных возможностей» для обработки механизма событий сигналов и слотов, но они больше усложняют среду сборки, чем код.
редактировать: спасибо, Билл
Другие советы
Я не рекомендую смешивать код std C++ и код Qt.
Скажем, ваш код на C++ представляет собой логику, тогда код Qt должен быть предназначен только для графического интерфейса.Используя шаблоны MVC/MVP или аналогичным образом, разделите свою логику и пользовательский интерфейс.
Таким образом, в будущем будет проще запускать ваш код с использованием пользовательского интерфейса или без него.
короче да, можно!например, QString по сути является строкой и имеет метод toAscii(), поэтому вы можете легко использовать Qt для своих проектов.Хотя вы МОЖЕТЕ столкнуться с некоторыми проблемами при интеграции Qt в Visual Studio (при условии, что вы ее используете), вы сможете смешивать код C++ и код Qt (который находится на C++).
ага!Qt — это то, что вы можете использовать в своем коде на C++.Qt в основном предназначен для графического пользовательского интерфейса, но это хорошие классы для сокетов, контейнеров, сети...Вы можете использовать STL и другие обычные классы или те, которые предлагает вам Qt.Самый важный момент заключается в том, что если вы используете Qt в своем коде перед основной компиляцией, вам следует выполнить мета-компиляцию, чтобы подготовить ее для вашего компилятора.Следует обратить внимание на одну вещь: Qt не является стандартным. Это означает, что, хотя он поддерживает Windows, Linux и Mac OS, его нельзя использовать на других платформах.
Их можно использовать вместе.
C++ имеет долгую историю, а реализация и поддержка STL развивались вместе с языком.Я думаю, что бывшая команда Trolltech решила, что у них недостаточно контроля над качеством и доступностью реализаций STL, чтобы заставить библиотеку Qt зависеть от нее.В результате Qt имеет собственный заголовок QTL, QtAlgorithms и QString.
Они позаботились о том, чтобы сделать их совместимыми с STL:
- большинство контейнеров имеют интерфейс, аналогичный интерфейсу STL (например:доступ к итератору, push_back(), пустой() и т.д.)
- Контейнеры Qt можно конвертировать в контейнеры STL или из них (например:QVector::toStdVector, QList::fromStdList)
- Контейнеры Qt можно использовать с алгоритмами STL.
- QString можно преобразовать в/из std::string и std::wstring с помощью toStd(W)String/fromStd(W)String
Лично мне QString нравится больше, чем std::string, он проще в использовании и мощнее.
Да, ты можешь.
На самом деле я создал оболочку Qt-GUI для набора функций на основе C.Никаких проблем с интеграцией Qt, только низкий уровень C (который приводит к утечке памяти...).
Глянь сюда: http://code.google.com/p/qhocr/