Содержание
- 2. Кросс-платформенная библиотека QT разработана финской компанией Trolltech, ныне принадлежит корпорации Nokia. Qt реализована на языке программирования
- 3. QT Кросс-платформенная среда для разработки приложений с графическим интерфейсом на C++ Подразумевает коммерческое и свободное лицензирование
- 4. QT – полный инструментарий для программирования Поддержка 2-х и 3-хмерной графики Возможность интернационализации Использование форматов JSON,
- 5. Используют QT QT используют более 4000 компаний: Adobe, Amazon, Tesla Canon, Bosch, Sun, NASA, Google, Oracle,
- 6. Написаны на QT Рабочий стол KDE, используемый в Linux Редактор трехмерной графики Autodesk Maya Viber Telegram
- 8. Модули QT для других языков программирования PyQt Perl Qt Qt# PHP Ruby …..
- 9. Установка Qt https://download.qt.io/official_releases/qt/ Установка Qt предполагает регистрацию в Qt и создание Qt Account, данное действие необходимо
- 15. Qt Creator
- 21. Код консольной программы #include #include int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); std::cout return
- 23. Код оконной программы #include "mainwindow.h" #include #include int main(int argc, char *argv[]) { QApplication a(argc, argv);
- 25. Модули Qt QtCore QtGui QtWidgets QtQuick QtQML QtNetwork QtSql QtSvg QtXml QtXmlPattern QtMultimedia QtMultimediaWidgets QtPrintSupport QtTest
- 26. Пространство имен Qt Qt:: red using namespace Qt;
- 27. QtCore Контейнерные классы: QList, QVector, QMap, QVariant, QString Классы ввода-вывода QIOdevice, QtextStream, QFile Классы процессов и
- 28. QtCore Класс приложения: QCoreApplication Классы поддержки анимации: QAbstractAnimation , QVariantAnimation Классы для машины состояний: QStateMachine, QState
- 29. QCoreApplication Должен создаваться в приложение только один раз Управляет событиями между приложением и операционной системой Передает
- 30. Модуль QtGui Предоставляет классы интеграции с оконной системой, с OpenGL Класс QWindow Класс QGuiApplication Содержит механизм
- 31. Модуль QtWidgets QWidget QVBoxLayout, QHBoxLayout QLabel, QLCDNumber QPushButton,QCheckButton,QRadioButton QSlider, QScrollBar QLineEdit, QSpinBox QComboBox, QToolBox QMainWindow, QMenu
- 32. QApplication QCoreApplication, QGuiApplication Используется для : Получения событий клавиатуры, таймера, мыши и др. Обеспечивает правильное завершение
- 33. Дполнительные модули Qt QtWebEngineCore QtWebEngineWidgets Qt 3D QtBluetooth QtLocation QtSensors QtCharts QtDataVisualization QtVirtualKeyboard QtRemoteObjects
- 34. Философия объектной модели QObject – основной базовый класс. Все классы, имеющие сигналы и слоты, должны быть
- 35. Философия объектной модели QObject содержит в себе поддержку: сигналов и слотов, таймера, Механизма объединения объектов в
- 36. Механизм сигналов и слотов Функции обратного вызова callback functions Механизм сигналов и слотов
- 37. Метаобъектный компилятор (MOC) Анализирует классы на наличие в их определении макроса Q_OBJECT и внедряет в отдельный
- 38. Преимущества механизма сигналов и слотов Каждый класс, унаследованный от QObject, может иметь любое количество сигналов и
- 39. Недостатки сигналов-слотов Сигналы и слоты не являются частью С++, перед компиляцией программы требуется запуск дополнительного компилятора
- 40. Механизм сигналов и слотов У вас звонит телефон и вы нажимаете на кнопку для ответа (или
- 41. Сигнал Это методы, которые могут выполнять пересылку сообщений Причина появления сигнала – изменение состояния управляющего элемента
- 42. Сигнал Сигнал определяется в классе как метод, только без реализации Всю работу по реализации кода для
- 43. Определение сигнала в своем классе class Mysignal { Q_OBJECT … signals: void doIt(); … };
- 44. Определение сигнала в своем классе void MySignal:: doIt() { QMetaObject:: activate( this, &staticMetaObject, 0,0); }
- 45. Реализация сигнала emit doIt(); class MySignal { Q_OBJECT public: void sendSignal () { emit doIt();} signals:
- 46. Слоты Это методы, которые присоединяются к сигналам Слоты определяются в классе как public, private, protected В
- 47. Создание слота для своего класса class MySlot { Q_OBJECT public: MySlot(); public slots: void slot() {
- 48. Соединение объектов QObject :: connect ( const QObject * sender, const char* signal, const QObject* receiver,
- 49. Соединение объектов type: Qt:: DirectConnection Qt:: QueuedConnection Qt::AutoConnection
- 50. Соединение объектов QObject :: connect ( const QObject * sender, const QMetaMethod& signal, const QObject* receiver,
- 51. Пример соединения объектов void main() { ….. QObject:: connect(pSender, SIGNAL( signalMethod()), pReceiver, SLOT(slotMethod())); …. } QObject::
- 52. MyClass :: MyClass ():QObject () { … connect(pSender, SIGNAL( signalMethod()), pReceiver, SLOT(slotMethod())); ... }
- 53. MyClass :: MyClass ():QObject () { … connect(pSender, SIGNAL( signalMethod()), SLOT(slot())); ... } void MyClass:: slot()
- 54. Отслеживание ошибки соединения bool bOk =true; bOk &= connect(pcmd1, SIGNAL( clicked()), pobjReceiver1, SLOT( slotButtonClicked())); Q_ASSERT(bOk);
- 55. Передача сигнала без обработки MyClass :: MyClass ():QObject () { … connect(pSender, SIGNAL( signalMethod()), SIGNAL(mySignal())); ...
- 57. Скачать презентацию