Questions tagged [qt]

Qt — кроссплатформенный инструментарий разработки ПО с графическим пользовательским интерфейсом на C++ и других языках программирования. Обязательно добавьте метку используемого языка.

Использование метки:

Метку рекомендуется добавлять, если вопрос возник с фреймворком Qt. Также рекомендуется добавлять метку версии Qt, например: , .

Дополнительно рекомендуется добавлять метку языка, например: , , .

Если вопрос возник с одной из привязок (binding) Qt, то стоит ее указывать, например: , , .

Подробнее:

Qt используется для разработки мультиплатформенных приложений и графических интерфейсов (GUI); однако, программы без GUI могут быть разработаны как консольные приложения. Примером не GUI программы используя Qt может быть вебфреймворк Cutelyst. Графические приложения, созданные с Qt, имеют нативный интерфейс.

Особенности:

  • В Qt используется обычный C++ с расширением включающим сигналы и слоты что позволяет просто обрабатывать события.

  • Поддерживает много компиляторов, включая GCC C++ и набор Visual Studio.

  • Предоставляет Qt Quick, который включает декларативный скриптовый язык QML, позволяющий использовать JavaScript для описания логики. С Qt Quick, быстрая разработка для мобильных устройств становится возможной, хотя логика также может быть написана с использованием машинного кода.

  • Qt может быть использован в других языках через привязки.

  • Запускается на основных десктопных платформах и некоторых мобильных платформах.

  • Широкая поддержка интернационализации.

  • Имеет особенности не связанные с GUI:

  • доступ к базам данных SQL

  • парсинг XML и JSON

  • работу с потоками thread

  • поддержку работы с сетью


Hello World:

#include <QApplication>
#include <QLabel>

int main(int argc, char *argv[]) { QApplication app(argc, argv);

QLabel *label = new QLabel(&quot;Hello Qt!&quot;);
label-&gt;show();

return app.exec();

}


IDE:


Инструменты:

Следующие инструменты Qt интегрированны в Qt Creator:

  • Qt Designer — для разработки и сборки пользовательских графических интерфейсов (GUI) с виджетами Qt.
  • qmake — для сборки приложения на разные платформы.
  • Qt Linguist — для локализации приложений.
  • Qt Assistant — для просмотра документации Qt.

Также есть инструменты:

  • makeqpf — создание предварительно обработанных шрифтов для встроенных устройств
  • Meta-Object Compiler (moc) — генерация мета-объектной информации для подклассов QObject.
  • User Interface Compiler (uic) — генерация C++ кода из файлов пользовательских интерфейсов. Resource Compiler (rcc) — встраивание ресурсов в приложения Qt при сборке.
  • Qt D-Bus XML compiler (qdbusxml2cpp) — утилита для конвертации описания интерфейса D-Bus в код C++.
  • D-Bus Viewer — утилита для интроспекции D-Bus объектов и сообщений.
  • Qt Quick Compiler — компилятор для QML.
  • Qt VS Tools — предназначен для разработчиков, которых хотят разрабатывать приложения Qt, используя Visual Studio, вместо Qt Creator.

Полезные ссылки:


Литература (на русском):

  • Макс Шлее "Qt 5.3. Профессиональное программирование на С++"
  • Марк Саммерфилд - "Qt Профессиональное программирование"
4601 questions
6
votes
2 answers

Механизм работы таймера в qt

Всем привет! Может кто-то пояснить механизм работы таймера qt. Он формирует сообщение в очереди сообщений или влияет на процесс обработки этой очереди? Например: Допустим у нас есть функция которая создает сигнал и кладет его в очередь потока. Это…
4
votes
0 answers

Политика размера в qt

Не могу понять политику размера в Qt, а именно как изменяется размещение виджетов в зависимости от политики: Fixed, Minimum, Maximum, Preferred, ..., Ignored. Я пытался написать программу, в которой увидел бы то, что написано в документации, но мои…
4
votes
5 answers

Инсталлер для Qt-приложения

Здравствуйте. Что-то сходу ничего не нашел, поэтому спрошу здесь. Есть ли какая утилитка, которая сделает проект Qt (exe + необходимые dll) инсталлятором со стандартными настройками (путь, запуск после установки и пр.)? UPD: Все необходимые файлики…
Ray
  • 2,230
  • 5
  • 38
  • 72
4
votes
1 answer

shared data в Qt

Здравствуйте. У меня возникли небольшие непонимания концепции shared data в Qt. Я прочел соотв. раздел в книги Макса Шлее, а затем ещё одну статью на сайте нокии, где об этом говорилось, но до конца не понял. Я понял, что при простом присваивании…
Daniel
  • 691
3
votes
1 answer

Виджет размером больше, чем QWIDGETSIZE_MAX

на QScrollArea есть виджет на котором рисуется картинка с помощью qpainter. Размеры этой картинки должны быть больше QWIDGETSIZE_MAX. Возможно ли это как-нибудь провернуть? стек виджетов?
3
votes
2 answers

Частый вызов QWidgetBackingStore sync

В приложении появилась проблема. При некоторых режимах работы приложения слишком часто вызывается QWidgetBackingStore sync, который ест примерно 20-25% процессорного времени приложения. Результат работы профайлера на картинке: В документации по…
3
votes
2 answers

Qt5: подключение библиотек

Пытаюсь написать простую программу, подключаю #include но пишет, что библиотека не найдена. Раньше было так же с #include , но поменял на #include Искал в интернете нашел, что надо добавить QT +=…
trane294
  • 519
3
votes
2 answers

Игровой цикл

Делаю кроссплатформенную игру с использованием Qt (из Линукса). Именно Qt выбрал, потому что в перспективе понадобится графический интерфейс для всяких редакторов, а также он предустановлен практически во все Linux'ы. Пробовал использовать…
devoln
  • 5,441
3
votes
1 answer

Как разместить окно программы по центру экрана не зная разрешения?

Как разместить окно программы по центру на любом мониторе не зная разрешения в Qt. На одномониторной системе.
2
votes
0 answers

QTextEdit. Проблема с setEnabled

Нажимая два раза на TextEdit(кастомный класс, наследующий QTextEdit) устанавливаю флаг Enabled = true, а если нажать все этого TextEdit-а, то флаг(или аттрибут, как такое называется?) Enabled = false. Все работает, но если выделить текст и потом…
Kaznachei
  • 603
2
votes
1 answer

В чем разница между установщиками до Qt_5.8 и после?

В чём разница между установщиками qt-opensource-windows-x86-msvc2015_64-5.8.0.exe и qt-opensource-windows-x86-5.9.5.exe ? Раньше я работал на Qt_4.8, там был стандартный установщик. qt_(тип программного обеспечения) _ (поддерживаемая операционная…
timob256
  • 2,907
2
votes
0 answers

Qt сокет и прием данных, перевед с ASCII в символы

На сокет передаю данные, числа, но вместо них приходят их коды. Например число 450, его код 52 53 48 . Как мне преобразовать этот код в строку типа String, или в число int, что бы с ним можно было работать дальше? Код приема сокета: QByteArray arr…
Alex Sh
  • 119
2
votes
1 answer

Запуск в таймере одного класса, функций из другого

У меня есть классы MyServer и MainWindow. Как запустить в таймере класса MainWindow функцию из класса MyServer Таймер: connect(tmrserver, SIGNAL(timeout()), this, SLOT(updateServer())); Класс : сlass MyServer : public QObject { …
Alex Sh
  • 119
2
votes
1 answer

Управление таймером с кнопки

Как можно управлять таймером при помощи кнопки: У меня основная часть(чтение данных и постройка графиков) крутится в таймере(обновляется раз в секунду): connect(tmr, SIGNAL(timeout()), this, SLOT(updateData())); Хочу сделать так: нажал кнопку -…
Alex Sh
  • 119
2
votes
2 answers

Qt parent widget for Dialog

Почему если дочернему виджету ставить родителя, то дочерний "вставляется" в родительский? Как этого избежать? Я просто хочу сделать всплывающий диалог, но при указании родителя он почему то вставляется в него.
backuot
  • 103
1
2 3
15 16