Вопрос

Я уже написал программу на C++ и хотел бы написать для нее графический интерфейс.Я понимаю, что Qt — замечательный инструмент, однако у Qt есть свои классы, которые меня очень смущают.например:вместо String в Qt есть класс с именем QString.

Мне интересно, могу ли я смешивать код C++ и код Qt в C++?

Это было полезно?

Решение

Да, вы можете очень легко смешивать Qt и STL.

Графический интерфейс занимает QStrings, но молча создаст эту форму 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/

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top