Qt Creator和VS2010中添加槽信號_差別與詳解

1.前言:

 

 

Qt  的窗口部件經過發射信號(signal)來代表一個用戶的動做已經發生了或者是一個狀態已經改變了。如點擊一個QPushButton時,按鈕會發送一個clicked()信號,信號能夠與函數(在qt裏稱作槽slot)相鏈接。能夠把信號理解爲MFC裏的事件。信號與槽的關係,咱們也能夠類比爲爲,事件驅動關係函數

利用QT作UI設計的通常分爲兩派,發燒派採用Qt Creator設計,平臺友好,視覺衝擊強,流線式設計。微軟派採用Visual Studio開發,此派深受微軟毒害~ 已經難以自拔~ui

就我的而言,屬於微軟派,用久了想脫身也不容易了。this

這裏須要面對一個問題就是VS與Qt Creator中添加「信號與槽」是不同的,須要注意。spa

 

2.Visual Studio2010中添加槽

Step1:建立對話框窗口,選擇「建立界面」複選框設計

2.頭文件中添加「槽聲明」調試

 

 
  1. #ifndef ADDSOLTTOVS_Hcode

  2. #define ADDSOLTTOVS_Hblog

  3.  
  4. #include <QtWidgets/QDialog>事件

  5. #include "ui_addsolttovs.h"開發

  6.  
  7. class AddSoltToVs : public QDialog

  8. {

  9. Q_OBJECT

  10.  
  11. public:

  12. AddSoltToVs(QWidget *parent = 0);

  13. ~AddSoltToVs();

  14. private:

  15. Ui::AddSoltToVsClass ui;

  16. ////////槽聲明

  17. public slots:

  18. void Btn_Click();

  19. };

  20.  
  21. #endif // ADDSOLTTOVS_H

  22.  
3.源文件中進行「槽實現」(注意添加消息盒子的頭文件)
 
  1. #include "addsolttovs.h"

  2. #include <QMessageBox>

  3.  
  4. AddSoltToVs::AddSoltToVs(QWidget *parent)

  5. : QDialog(parent)

  6. {

  7. ui.setupUi(this);

  8. }

  9.  
  10. AddSoltToVs::~AddSoltToVs()

  11. {

  12. }

  13. void AddSoltToVs::Btn_Click()

  14. {

  15. QMessageBox msg;

  16. msg.setText("Hello World!");

  17. msg.exec();

  18. }

4.打開UI,進入Qt Designer,創建槽

 

 

注意:別把槽的函數名寫錯了

 

注意:必定要把Designer關閉了再去調試咱們的VS主程序

5.運行結果

沒錯,這就意味着,咱們成功了。

3.Qt Creator中添加槽過程

誒呀。支持Creator的發燒友們歡呼吧~  的確,很簡單~

1.打開 Qt Creator新建一個項目MyQtDemo

2.點擊mainwindow打開設計窗體在窗體上添加一個PushButton。點擊右鍵先把轉到槽

3.打開轉到槽窗體

4.點擊clicked()點擊肯定,在mainwindow.cpp裏添加QMesageBox

 

 
  1. #include "mainwindow.h"

  2. #include "ui_mainwindow.h"

  3. #include <QMessageBox>

  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. }

  15.  
  16. void MainWindow::on_pushButton_clicked()

  17. {

  18. QMessageBox msg;

  19. msg.setText("Hello World !");

  20. msg.setStandardButtons(QMessageBox::Ok|QMessageBox::Cancel);

  21. msg.setDefaultButton(QMessageBox::Cancel);

  22. msg.exec();

  23. }

5.運行便可。
相關文章
相關標籤/搜索