第一步是安装环境,因为之前已经安装过qt了,所以这里直接跳过这一步。
我找了很多书籍,qt学习基本都是以qtcreator开始教的,建个项目,在ui上直接操作,我觉得熟了可以这样搞,一开始学习还是要脚踏实地,自己写。
第一个qt程序
// qt.cpp
#include <QtDebug> int main( ) { qDebug() << "Hello Qt World!"; return 0; }
保存后,输入 qmake -project 得到qt-cli.pro 文件(以文件夹命名的)
文件内容长这样
再输入 qmake 会生成Makefile
接着输入make 会生成可执行文件
执行./qt-cli 即可运行
这不像是图形界面,连个窗口都没有,加个窗口
#include <QApplication> #include <QMainWindow> int main(int argc, char* argv[]) { QApplication a(argc, argv); // 必须要,少了编译报错 QMainWindow w; w.show(); return a.exec(); // 必须要,少了编译报错 }
编译前一定要在.pro 文件中加上 greaterThan(QT_MAJOR_VERSION, 4): QT += widgets ,不是会报一堆错
可以认为这4行就是一切套路的开始,基本每个qt程序都有它。
结果
设置窗口标题,大小等
#include <QApplication> #include <QMainWindow> int main(int argc, char* argv[]) { QApplication a(argc, argv); // 必须要,少了编译报错 // QApplication b(argc, argv); // 不要加,程序会出莫名其妙的问题 QMainWindow w; w.show(); w.setWindowTitle("QT"); // 设置标题 w.resize(1000,500); // 设置大小 QMainWindow x; // 再产生一个窗口 x.show(); x.setWindowTitle("GTK"); x.setFixedSize(300, 500); // 设置固定大小,没有最大化的按钮了 // b.exec(); // 不要加,程序会出莫名其妙的问题 return a.exec(); // 必须要,少了编译报错 }
去掉最大化,最小化,关闭等按钮
#include <QApplication> #include <QMainWindow> int main(int argc, char* argv[]) { QApplication a(argc, argv); // 必须要,少了编译报错 // QApplication b(argc, argv); // 不要加,程序会出莫名其妙的问题 QMainWindow w; w.setWindowTitle("QT"); w.resize(1000,500); // 设置大小 //w.setWindowFlags(Qt::WindowCloseButtonHint | Qt::WindowMaximizeButtonHint | Qt::WindowMinimizeButtonHint); w.setWindowFlags(Qt::WindowCloseButtonHint); // 只有关闭 w.setWindowFlags(Qt::WindowMaximizeButtonHint); // 只有最大化 w.setWindowFlags(Qt::WindowMinimizeButtonHint); // 只有最小化 // 最终结果只有最小化,因为最后设置最小化把上面的覆盖了 w.show(); QMainWindow x; // 再产生一个窗口 x.show(); x.setWindowTitle("GTK"); x.setFixedSize(300, 500); // 设置固定大小,没有最大化的按钮了 // b.exec(); // 不要加,程序会出莫名其妙的问题 return a.exec(); // 必须要,少了编译报错 }
关闭所有按钮(不知道有没有更好的办法)
#include <QApplication> #include <QMainWindow> int main(int argc, char* argv[]) { QApplication a(argc, argv); QMainWindow w; w.setWindowTitle("QT"); w.setFixedSize(1000,500); // 设置固定大小后没有最大化按钮 w.setWindowFlags(Qt::WindowMaximizeButtonHint); // 只开启最大化按钮 // 结果就是什么按钮没有 w.show(); return a.exec(); }
结果