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.运行便可。
相关文章
相关标签/搜索