Qt 的入门我以为能够直接从窗口开始,而不是什么“Hello World!”。由于Qt 是一个基于图形界面的编程软件,图形界面编程是其核心所在。好久之前,那时候仍是Shell编程,操做的只是文本,如今能够操做图形界面,那么第一个“Hello”图形界面就是可以显示窗口并经过按钮将其关闭。编程
1 建立项目:New Project函数
2 选择模板:应用程序>>Qt Widgets Application>>选择字体
3 项目位置:设置项目名称>>选择项目位置>>下一步ui
4 构建套件:直接下一步this
5 详情:在基类中有三种类型。很显然MainWindow是最大的一个,那么无论什么程序,直接选择MainWindow就行了,不必在用什么Widget 或者 Dialog当基类。spa
6 汇总:单击完成设计
这样就建立了一个名为 Sample_Hello_World 的项目了。项目建立好了以后,软件会自动生成必要的一些代码。3d
在左侧的项目列表中有四个文件:mainwindow.h/main.cpp/mainwindow.cpp/mainwindow.uicode
mainwindow.h内容以下:对象
1 #ifndef MAINWINDOW_H 2 #define MAINWINDOW_H 3 4 #include <QMainWindow> 5 6 namespace Ui { 7 class MainWindow; 8 } 9 10 class MainWindow : public QMainWindow 11 { 12 Q_OBJECT 13 14 public: 15 explicit MainWindow(QWidget *parent = 0); 16 ~MainWindow(); 17 18 private: 19 Ui::MainWindow *ui; 20 }; 21 22 #endif // MAINWINDOW_H
使用时须要在public和private中间添加provate slots类成员函数:
1 private slots: 2 // ...
main.cpp内容以下:
1 #include "mainwindow.h" 2 #include <QApplication> 3 4 int main(int argc, char *argv[]) 5 { 6 QApplication a(argc, argv); 7 MainWindow w; 8 w.show(); 9 10 return a.exec(); 11 }
第1和第2行是头文件包含,其中QApplication是包含了类Application定义的头文件。相应的有QWidget、QDialog等头文件。
第6行建立了一个QApplication对象,第7行新建了一个主窗口(MainWindow)部件“w”,第8行调用内建函数显示窗口部件。而第10行则至关于Windows API中的消息循环,用于处理窗口中的“消息”与“动做”。
mainwindow.cpp的内容以下:
1 #include "mainwindow.h" 2 #include "ui_mainwindow.h" 3 4 MainWindow::MainWindow(QWidget *parent) : 5 QMainWindow(parent), 6 ui(new Ui::MainWindow) 7 { 8 ui->setupUi(this); 9 } 10 11 MainWindow::~MainWindow() 12 { 13 delete ui; 14 }
Qt中的“信号(SIGNAL)”和“槽(SLOT)”机制主要在这部分实现。槽函数须要在mainwindow.h中的private slots中进行函数原型说明,而信号和槽的链接放在第8行的下面。而槽函数的实现即函数体,则是放在第14行后面,即析构函数的后面。
mainwindow.ui是一个图形设计界面:
你能够从左侧拉入一些空间和部件放在窗口中,在右侧设置相应的属性。而后经过将部件与函数链接,实现信号与槽的链接。
能够直接单击界面右下角绿色三角形执行按钮,软件会编译运行当前的源程序。
下面是如何简单的添加一个退出按键,并与相应的函数链接。
首先在UI设计窗口中的左侧Buttom>>Push Buttom拉入主窗口,在右侧的属性栏中更改部件名称为“PushButtom_Quit”。能够适当的更改按键的大小和标签字体的样式与大小。部件的名称就是调用部件的接口。
接下来要作的就是将按键与函数链接起来。
在mainwindow.cpp中修改以下内容:
1 #include "mainwindow.h" 2 #include "ui_mainwindow.h" 3 4 MainWindow::MainWindow(QWidget *parent) : 5 QMainWindow(parent), 6 ui(new Ui::MainWindow) 7 { 8 ui->setupUi(this); 9 10 //以下为链接函数 11 connect(ui->PushButtom_Quit, SIGNAL(clicked()), this, SLOT(close())); 12 } 13 14 MainWindow::~MainWindow() 15 { 16 delete ui; 17 }
第11行中的close()函数为SLOT的内建函数,可直接调用。
(小技巧:当输入一个函数名后,只打出左括号,会当即弹出参数表,部分函数会弹出可做为参数的内建函数,对象会弹出对象中的属性列表。)
至此,一个添加了按键可实现单击退出功能的窗口就完成了。执行后效果:
<参考文献:C++ GUI Programming with Qt4, Second Edition. Jasmin Blanchette, Mark Summerfield>