Qt学习笔记(一) 第一个Qt应用程序
使用Qt Creator向導創建一個QtGui應用程序,會生成一個.pro工程定義文件和幾個.h/.cpp源代碼文件。
?
首先看工程定義文件的內容:
QT?????? += core gui
TARGET = firstQtApp
TEMPLATE = app
SOURCES += main.cpp/
??????? mainwindow.cpp
HEADERS? += mainwindow.h
?
QT += 表示需要加載的庫模塊。Core模塊是每個Qt應用程序都需要的。因為這是一個Gui程序,所以加載了Gui模塊。
TARGET = 表示編譯后可執行程序的名稱。
TEMPLATE = 表示應用程序的類型。這里是一個app程序。還可以是lib等。
SOURCES += 表示添加到工程里的源代碼文件。
HEADERS += 表示添加到工程里的頭文件。
?
再來看main.cpp里面的內容。這里面只有整個程序的主函數。代碼如下:
#include<QtGui/QApplication> #include"mainwindow.h" ? intmain(intargc,char*argv[]) { ??? QApplicationa(argc,argv); ??? MainWindoww; ??? w.show(); ??? returna.exec(); }?
這段代碼是由Qt Creator向導自動生成的。
第一步先創建了一個QApplication的對象。每個Qt 應用程序都必須有一個QApplication的對象。這個對象代表的就是這個應用程序本身。而且每個應用程序只允許有一個QApplication的對象。構造函數需要兩個參數,這是Qt對命令行參數的支持。
第二步創建了主窗口對象。窗口/窗口部件是UI中的可視化元素,叫做widget。這相當于windows中的控件和容器。
第三步調用w.show()使窗口可見。
最后調用a.exec()將程序控制權交給Qt,程序開始進入事件循環,等待用戶操作。
?
再來看MainWindow里面的代碼:
首先是類聲明:
#include<QtGui/QMainWindow>
#include<QLabel>
#include<QPushButton>
?
classMainWindow:publicQMainWindow
{
??? Q_OBJECT
public:
??? MainWindow(QWidget*parent=0);
??? ~MainWindow();
??? //datamembers
private:
??? QLabel*label;
??? QPushButton*pushButton;
};
這個類繼承自QMainWindow。由于定義了自己的信號和槽,所以在類的開頭使用了Q_OBJECT宏。然后聲明了兩個窗口部件作為數據成員,QLabel和QPushButton。
類的實現代碼:
#include"mainwindow.h"
#include<QVBoxLayout>
?
MainWindow::MainWindow(QWidget*parent)
??? :QMainWindow(parent)
{
??? label=newQLabel(tr("ThisismyfirstQtApplication"));
pushButton=newQPushButton(tr("Exit"));
?
??? QVBoxLayout*layout=newQVBoxLayout;
??? layout->addWidget(label);
??? layout->addWidget(pushButton);
??? connect(pushButton,SIGNAL(clicked()),
??????????? this,SLOT(close()));
?
??? QWidget*widget=newQWidget(this);
??? widget->setLayout(layout);
??? setCentralWidget(widget);
}
?
首先構造了兩個窗口部件,使用布局管理中的QVBoxLayout(垂直布局),將兩個部件添加到layout里面,從而布局這兩個部件。然后將pushButton的clicked()信號和當前窗口的close()槽連接起來。當用戶點下Button的時候,窗口的close()槽便會調用,從而關閉窗口。信號和槽有點類似于MFC中的消息映射。
然后使用一個widget來承載設置好的layout,最后將widget和窗口綁定。
?
總結
以上是生活随笔為你收集整理的Qt学习笔记(一) 第一个Qt应用程序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 生信分析和美图资源推荐!!!
- 下一篇: pandas学习笔记三之处理丢失数据