一.下载安装QT5
二.QT5开发工具
三.QT5数据类型
四.QT5语法
五.QT5窗口界面框架
在项目Application中: QT Widgets Application(桌面QT应用) QT Console Application(控制台QT应用) QT for Python-Empty / Window(用Python开发QT应用) QT Quick Application-Empty / Scroll / Stack /Swipe(移动平台开发QT应用)
1.QWidget
QWidget widget; widget.setWindowTitle(QObject::tr("k5")); widget.resize(400, 300); widget.move(200, 100); widget.show(); int x = widget.x(); qDebug("x:%d", x); int y = widget.y(); qDebug("y:%d", y);
2.QDialog
(1)窗口框架
QDialog类继承与QWidget类 注意:添加hellodialog.ui文件的时候,要把里面的 <class>HelloDialog</class> <widget class = "QDialog" name = "HelloDialog"> 改过来,不然会无法识别 ui 这个指针
// hellodialog.h #ifndef HELLODIALOG_H #define HELLODIALOG_H #include <QDialog> namespace Ui{ class HelloDialog; } class HelloDialog : public QDialog{ Q_OBJECT public: explicit HelloDialog(QWidget* parent = nullptr); ~HelloDialog(); private: Ui::HelloDialog* ui; }; #endif // HELLODIALOG_H
// hellodialog.cpp#include "hellodialog.h" #include "ui_hellodialog.h" HelloDialog::HelloDialog(QWidget* parent) : QDialog(parent), ui(new Ui::HelloDialog) { ui->setupUi(this); } HelloDialog::~HelloDialog() { delete ui; }
// main.cpp #include "hellodialog.h" #include <QApplication> int main(int argc, char* argv[]) { QApplication a(argc, argv); HelloDialog w; w.show(); return a.exec(); }
(2)附加窗口
//模态对话框 QDialog* dialog = new QDialog(this); dialog->setModal(true); dialog->show();QDialog dialog;dialog.setModal(true);dialog.show()
//非模态对话框 QDialog* dialog = new QDialog(this); dialog->show(); QDialog dialog; dialog.show()
(3)对话框状态
QDialog dialog; if (dialog.exec() == QDialog::Accepted)
六.QT5控件
七.QT5绘制
八.QT5多线程和多进程
1.多线程
QThread是Qt线程中一个公共的抽象类,所有的线程类都是从QThread抽象类中派生的,需要实现QThread中的虚函数run(),通过调用start()函数 QThread对多线程的支持: 1.QThreadStorage 提供逐线程数据存储 2.QMutex 互斥锁 3.QMutexLocker 自动互斥锁 4.QReadLocker 和 QWriteLocker 自动读写锁 5.QReadWriteLocker 读写锁 6.QSemphore 互斥信号量 7.QWaiteCondition 等待条件
2.多进程
QT通过QProcess类来启动一个程序与其通信 QT对多进程的支持: 1.共享内存(shared memory) 2.TCP/IP: C/S程序,网络交互 3.D-Bus:信号槽机制扩展到进程级别 4.QCOP(Qt COmmunication Protocol):QCOP是Qt内部的一种通信协议,只用于 Qt for Embeded Linux版本
九.QT5网络
十.QT5文件