前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Qt Creator和VS2010中添加槽信号_差异与详解

Qt Creator和VS2010中添加槽信号_差异与详解

作者头像
战神伽罗
发布2019-07-24 15:00:49
1.9K0
发布2019-07-24 15:00:49
举报

1.前言:

Qt 的窗口部件通过发射信号(signal)来表明一个用户的动作已经发生了或者是一个状态已经改变了。如点击一个QPushButton时,按钮会发送一个clicked()信号,信号可以与函数(在qt里称做槽slot)相连接。可以把信号理解为MFC里的事件。信号与槽的关系,我们也可以类比为为,事件驱动关系。 利用QT做UI设计的一般分为两派,发烧派采用Qt Creator设计,平台友好,视觉冲击强,流线式设计。微软派采用Visual Studio开发,此派深受微软毒害~ 已经难以自拔~ 就个人而言,属于微软派,用久了想脱身也不容易了。 这里需要面对一个问题就是VS与Qt Creator中添加“信号与槽”是不一样的,需要注意。

2.Visual Studio2010中添加槽

Step1:创建对话框窗口,选择“创建界面”复选框

2.头文件中添加“槽声明”

代码语言:javascript
复制
  1. #ifndef ADDSOLTTOVS_H
  2. #define ADDSOLTTOVS_H
  3. #include <QtWidgets/QDialog>
  4. #include "ui_addsolttovs.h"
  5. class AddSoltToVs : public QDialog
  6. {
  7. Q_OBJECT
  8. public:
  9. AddSoltToVs(QWidget *parent = 0);
  10. ~AddSoltToVs();
  11. private:
  12. Ui::AddSoltToVsClass ui;
  13. ////////槽声明
  14. public slots:
  15. void Btn_Click();
  16. };
  17. #endif // ADDSOLTTOVS_H

3.源文件中进行“槽实现”(注意添加消息盒子的头文件)

代码语言:javascript
复制
  1. #include "addsolttovs.h"
  2. #include <QMessageBox>
  3. AddSoltToVs::AddSoltToVs(QWidget *parent)
  4. : QDialog(parent)
  5. {
  6. ui.setupUi(this);
  7. }
  8. AddSoltToVs::~AddSoltToVs()
  9. {
  10. }
  11. void AddSoltToVs::Btn_Click()
  12. {
  13. QMessageBox msg;
  14. msg.setText("Hello World!");
  15. msg.exec();
  16. }

4.打开UI,进入Qt Designer,建立槽

注意:别把槽的函数名写错了

注意:一定要把Designer关闭了再去调试我们的VS主程序

5.运行结果

没错,这就意味着,我们成功了。

3.Qt Creator中添加槽过程

诶呀。支持Creator的发烧友们欢呼吧~ 的确,很简单~

1.打开 Qt Creator新建一个项目MyQtDemo

2.点击mainwindow打开设计窗体在窗体上添加一个PushButton。点击右键先把转到槽

3.打开转到槽窗体

4.点击clicked()点击确定,在mainwindow.cpp里添加QMesageBox

代码语言:javascript
复制
  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. MainWindow::~MainWindow()
  11. {
  12. delete ui;
  13. }
  14. void MainWindow::on_pushButton_clicked()
  15. {
  16. QMessageBox msg;
  17. msg.setText("Hello World !");
  18. msg.setStandardButtons(QMessageBox::Ok|QMessageBox::Cancel);
  19. msg.setDefaultButton(QMessageBox::Cancel);
  20. msg.exec();
  21. }

5.运行即可。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.前言:
  • 2.Visual Studio2010中添加槽
  • 3.Qt Creator中添加槽过程
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档