当你觉得写代码是一件重复性极高的工作时,这时你就应该考虑换个方式来实现了。

提高代码效率,减少代码量。

代码片:

  1. void Widget::onClicked()
  2. {
  3. QPushButton* button = qobject_cast<QPushButton*>(sender());
  4. QRadioButton* radio = qobject_cast<QRadioButton*>(sender());
  5. if (button)
  6. {
  7. QString text = button->text();
  8. ui->label_2->setText(text);
  9. }
  10. else if(radio)
  11. {
  12. QString text = radio->text();
  13. ui->label_2->setText(text);
  14. }
  15. }

实例:

1、在Qt creator中拖拽出如下界面:

2、添加槽函数。

  1. private slots:
  2. void onClicked();

3、添加信号与槽的关联。

  1. connect(ui->pushButton,SIGNAL(clicked(bool)),this,SLOT(onClicked()));
  2. connect(ui->pushButton_2,SIGNAL(clicked(bool)),this,SLOT(onClicked()));
  3. connect(ui->pushButton_3,SIGNAL(clicked(bool)),this,SLOT(onClicked()));
  4. connect(ui->pushButton_4,SIGNAL(clicked(bool)),this,SLOT(onClicked()));
  5. connect(ui->radioButton,SIGNAL(clicked(bool)),SLOT(onClicked()));
  6. connect(ui->radioButton_2,SIGNAL(clicked(bool)),SLOT(onClicked()));
  7. connect(ui->radioButton_3,SIGNAL(clicked(bool)),SLOT(onClicked()));
  8. connect(ui->radioButton_4,SIGNAL(clicked(bool)),SLOT(onClicked()));

4、实现槽函数。

  1. void Widget::onClicked()
  2. {
  3. QPushButton* button = qobject_cast<QPushButton*>(sender());
  4. QRadioButton* radio = qobject_cast<QRadioButton*>(sender());
  5. if (button)
  6. {
  7. QString text = button->text();
  8. ui->label_2->setText(text);
  9. }
  10. else if(radio)
  11. {
  12. QString text = radio->text();
  13. ui->label_2->setText(text);
  14. }
  15. }

5、运行截图:

当然了,这里我只是举个例子,在实际的应用中大家可以扩展其功能的。

http://blog.csdn.net/rl529014/article/details/52144009

qobject_cast<QPushButton*>(sender()) 简化信号与槽的编写(sender()取得发信号的对象后,就取得了它的全部信息,为所欲为)的更多相关文章

  1. Qt: qobject_cast<QPushButton*>(sender()) 简化信号与槽的编写

    当你觉得写代码是一件重复性极高的工作时,这时你就应该考虑换个方式来实现了. 提高代码效率,减少代码量. 代码片: void Widget::onClicked() { QPushButton* but ...

  2. QT的信号与槽机制介绍

      信号与槽作为QT的核心机制在QT编程中有着广泛的应用,本文介绍了信号与槽的一些基本概念.元对象工具以及在实际使用过程中应注意的一些问题. QT是一个跨平台的C++ GUI应用构架,它提供了丰富的窗 ...

  3. 2.QT-窗口组件(QWidget),QT坐标系统,初探消息处理(信号与槽)

    本章主要内容如下: 1) 窗口组件(QWidget) 2) QT坐标系统 3) 消息处理(信号与槽) 窗口组件(QWidget) 介绍 Qt以组件对象的方式构建图形用户界面 Qt中没有父组件的顶级组件 ...

  4. QT的信号和槽机制简介

    信号与槽作为QT的核心机制在QT编程中有着广泛的应用,本文介绍了信号与槽的一些基本概念.元对象工具以及在实际使用过程中应注意的一些问题. QT是一个跨平台的C++ GUI应用构架,它提供了丰富的窗口部 ...

  5. 用 VS Code 搞 Qt6:让信号和槽自动建立连接

    Qt 具备让某个对象的信号与符合要求的槽函数自动建立连接.弄起来也很简单,只要调用这个静态方法即可: QMetaObject::connectSlotsByName(...); connectSlot ...

  6. QT 建立信号和槽的联系(事件处理)

    Qt中事件处理机制叫做“信号”和“槽”signal &slot. 其模型为: 对象a中有一个信号signal:XXX(代表一个事件) 对象b中有一个槽slot:YYY(事件处理函数) 用con ...

  7. 信号与槽(可以与第三方库混用,首次见到QObject::destroyed的使用)

    信号与槽用于对象之间的通信.信号与槽机制是Qt的核心特性和区别于其他框架的特性. Introduction 在GUI程序中,当我们改变一个widget,经常需要其他的widget得到通知.更普遍的是, ...

  8. C++框架_之Qt的信号和槽的详解

    C++_之Qt的信号和槽的详解 1.概述 信号槽是 Qt 框架引以为豪的机制之一.所谓信号槽,实际就是观察者模式.当某个事件发生之后,比如,按钮检测到自己被点击了一下,它就会发出一个信号(signal ...

  9. QT从入门到入土(三)——信号和槽机制

    摘要 信号槽是 Qt 框架引以为豪的机制之一.所谓信号槽,实际就是观察者模式.当某个事件发生之后,比如,按钮检测到自己被点击了一下,它就会发出一个信号 (signal).这种发出是没有目的的,类似广播 ...

随机推荐

  1. SQL Server 存储过程之嵌套游标

    下面是一个订单取消的含2个游标的存储过程 set ANSI_NULLS ON set QUOTED_IDENTIFIER ON go ALTER PROCEDURE [dbo].[CancelOrde ...

  2. 《Head First 设计模式》学习笔记——命令模式

    在软件系统,"行为请求者"与"行为实施者"通常存在一个"紧耦合".但在某些场合,比方要对行为进行"记录.撤销/重做.事务" ...

  3. C++调用IDL程序的做法(二)

    作者:朱金灿 来源:http://blog.csdn.net/clever101 上次提到使用IDLDrawWidget Control 3.0来调用IDL程序,但是我们还有一些问题没有解决,比如C+ ...

  4. javascript 中英文字符长度和截断处理

    因:javascript中的String类自带的length属性 和 substr()方法虽然能判断和截取出字符个数,但是对字节个数却没有处理的方法(众所周知,中文字符占两个字节,英文只占一个) 果: ...

  5. 微信公众平台通用接口API指南

    微信公众平台 通用接口 消息接口 开发模式 作者:方倍工作室原文:http://www.doucube.com/index.php?m=Article&a=show&id=5 微信公众 ...

  6. 在服务器中无法自宿主启动一个webapi项目,引出查看系统端口是否被占用

    在windows server下启动一个webapi的.net core项目报错 如下图: 让我以为服务器还需要别的配置.后来发现原来是线程被占用了. 在windows下查看某线程是否被占用的命令如下 ...

  7. Java文件运用

    1.使用java修改文件内容: package fileopt; import java.io.BufferedReader; import java.io.BufferedWriter; impor ...

  8. sqlplus 上下工具

    http://yunpan.cn/QNXXpjP9aBy6v 訪问password 420b 想在Unix.Linux环境下使用sqlplus,像在win以下一样,实现上下翻页. 怎么办呢? 首先要确 ...

  9. PHP正则表达式入门教程[转]

      思维导图 点击下图,可以看具体内容!     介绍          正则表达式,大家在开发中应该是经常用到,现在很多开发语言都有正则表达式的应用,比如javascript,java,.net,p ...

  10. IOC DI SL的一些理论

    本文来自圣杰的简书 圣杰 yubinfeng的 这篇文章也很不错 很简单