Qt 的窗口部件經過發射信號(signal)來代表一個用戶的動做已經發生了或者是一個狀態已經改變了。如點擊一個QPushButton時,按鈕會發送一個clicked()信號,信號能夠與函數(在qt裏稱作槽slot)相鏈接。能夠把信號理解爲MFC裏的事件。信號與槽的關係,咱們也能夠類比爲爲,事件驅動關係。函數
利用QT作UI設計的通常分爲兩派,發燒派採用Qt Creator設計,平臺友好,視覺衝擊強,流線式設計。微軟派採用Visual Studio開發,此派深受微軟毒害~ 已經難以自拔~ui
就我的而言,屬於微軟派,用久了想脫身也不容易了。this
這裏須要面對一個問題就是VS與Qt Creator中添加「信號與槽」是不同的,須要注意。spa
Step1:建立對話框窗口,選擇「建立界面」複選框設計
2.頭文件中添加「槽聲明」調試
3.源文件中進行「槽實現」(注意添加消息盒子的頭文件)
#ifndef ADDSOLTTOVS_H
code
#define ADDSOLTTOVS_H
blog
#include <QtWidgets/QDialog>
事件
#include "ui_addsolttovs.h"
開發
class AddSoltToVs : public QDialog
{
Q_OBJECT
public:
AddSoltToVs(QWidget *parent = 0);
~AddSoltToVs();
private:
Ui::AddSoltToVsClass ui;
////////槽聲明
public slots:
void Btn_Click();
};
#endif // ADDSOLTTOVS_H
4.打開UI,進入Qt Designer,創建槽
#include "addsolttovs.h"
#include <QMessageBox>
AddSoltToVs::AddSoltToVs(QWidget *parent)
: QDialog(parent)
{
ui.setupUi(this);
}
AddSoltToVs::~AddSoltToVs()
{
}
void AddSoltToVs::Btn_Click()
{
QMessageBox msg;
msg.setText("Hello World!");
msg.exec();
}
注意:別把槽的函數名寫錯了
注意:必定要把Designer關閉了再去調試咱們的VS主程序
5.運行結果
沒錯,這就意味着,咱們成功了。
誒呀。支持Creator的發燒友們歡呼吧~ 的確,很簡單~
1.打開 Qt Creator新建一個項目MyQtDemo
2.點擊mainwindow打開設計窗體在窗體上添加一個PushButton。點擊右鍵先把轉到槽
3.打開轉到槽窗體
4.點擊clicked()點擊肯定,在mainwindow.cpp裏添加QMesageBox
5.運行便可。
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QMessageBox>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_pushButton_clicked()
{
QMessageBox msg;
msg.setText("Hello World !");
msg.setStandardButtons(QMessageBox::Ok|QMessageBox::Cancel);
msg.setDefaultButton(QMessageBox::Cancel);
msg.exec();
}