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

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

代码片:

  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. List&lt;Map&lt;String, String&gt;&gt; 开启 Map&lt;String, List&lt;String&gt;&gt;

    将List变成Map结构体,下面的文字是没有水平! 写作方法传送前土壤很长一段时间.我不知道有没有好的解决办法.我们也希望提供! Map<String, String> map1 = ne ...

  2. 哪个项目管理工具好用到哭?JIRA VS 华为软件开发云

    一.产品介绍 JIRA是Atlassian公司出品的项目与事务跟踪工具,被广泛应用于缺陷跟踪.客户服务.需求收集.流程审批.任务跟踪.项目跟踪和敏捷管理等工作领域. 华为软件开发云 (DevCloud ...

  3. RedisMQ

    RedisMQ 本次和大家分享的是RedisMQ队列的用法,前两篇文章队列工厂之(MSMQ)和队列工厂之RabbitMQ分别简单介绍对应队列环境的搭建和常用方法的使用,加上本篇分享的RedisMQ那么 ...

  4. 你不从地址栏中增加曝光量所需的数据库ID方法

    <p><span style="font-size: 18px;"></span></p> 当你想隐藏数据库id时,你能够使用 Ha ...

  5. WPF版的HideCaret()

    原文:WPF版的HideCaret() WPF版的HideCaret() 周银辉 事情是这样的: 一般说来,对于那些拥有句柄的TextBox(RichTextBox同理)控件,比如win32的,Win ...

  6. springboot 配置拦截器

    1 有这样一个需求 服务端对部分请求URL需要验证身份.如果验证错误,停止请求,按照既定的数据格式返回:如果验证正确,继续执行请求. 2 需要这样做 1. 将指定格式的请求拦截下来: 2. 获取参数, ...

  7. Ubuntu 15.04 clang++ 3.6 编译boost 1.59/1.55

    Ubuntu 15.04已经可以直接通过apt-get insall 安装clang 3.6, 并且预装的gcc版本是4.9.2.这些安装过程在这里介绍. 首先下载boost源码 wget -O bo ...

  8. linq to entity DistinctBy && DefaultIfEmpty

    根据某属性去重 使用第三方库: https://github.com/morelinq/MoreLINQ Install-Package morelinq -Version 3.0.0 data.Di ...

  9. AngularJS 计时器

    <div ng-controller="MyController"> <!--显示$scope.clock的now属性--> <h1>hello ...

  10. windows server疑难杂症

    1.某些网址.服务访问失败,可能的原因:增强的安全配置关闭增强的安全配置,并且重启电脑!!!http://jingyan.baidu.com/article/6181c3e076ac0b152ff15 ...