您现在的位置是:首页 > 正文

Qt: 在SLOT中获取sender(触发SIGNAL的控件)

2024-04-01 05:36:04阅读 2

Qt开发,有个场景是点击三个不同的按钮,触发同一个事件(SLOT),要在SLOT方法中区分三个不同的按钮:

connect(ui->btnType1, SIGNAL(clicked()),this,SLOT(changeType2()));
connect(ui->btnType2, SIGNAL(clicked()),this,SLOT(changeType2()));
connect(ui->btnType3, SIGNAL(clicked()),this,SLOT(changeType2()));
...

void FormCL3P::changeType2()
{
   //获取被点击的按钮
   //?
}

那么怎样在SLOT中获取当前的sender呢?网上查到了答案。

用sender()方法:

void FormCL3P::changeType2()
{
    QObject* btn = sender();
    if (btn == ui->btnType1){ ... }
    if (btn == ui->btnType2){ ... }
    if (btn == ui->btnType3){ ... }
}

参考:In qml, How can i get signal sender from slot/function? | Qt Forum

网站文章

  • android设备兼容解决,设备兼容处理-[Android_YangKe]

    Android 的设计是让所有应用程序可以运行在不同类型设备上。主要设备有:手机、平板、电视。作为一个开发者,适配的范围为应用程序提供了一个巨大的潜在用户,为了我们的产品可以成功在所有设备上进行使用,...

    2024-04-01 05:35:23
  • apache2.4添加对多版本php的支持

    需求 fedora26下使用yum安装好apache2.4 和 php7.0后,需要添加apache2.4对php5.6的支持. 方法 介绍方法前,需要理解一个文件,libphp5.0.so,当php作为apache的一个模块运行,随apache一起启动时,需要在编译php时生成此文件,并在apache配置文件中修改配置项,加载这个文件. 因此如果想添加多版本支持,只需通过编译生成不同版本...

    2024-04-01 05:35:16
  • docker下运行pycharm无法显示问题

    报错:pycharm-community-2020.3.2/jbr/lib/libjcef.so: libnss3.so: cannot open shared object file: No such file or directory解决方案:sudo apt-get install libxi6 libxtst6 libxrender1

    2024-04-01 05:35:09
  • 最早应用计算机岩土三维模型技术,基于三维地质模型的岩土工程设计与可视分析...

    赵帅权 姚显瑞摘 要:基于三维地质模型的岩土工程数字化的应用,成为我国岩土工程领域的主要发展方向。岩土工程的三维地质建模和可视化分析研究,提高了岩土工程的信息化管理水平,在岩土工程领域具有一定的应...

    2024-04-01 05:35:01
  • Failed to start firewalld.service: Unit is masked

    Failed to start firewalld.service: Unit is masked

    2024-04-01 05:34:20
  • Android面试知识总结

    Android面试知识总结

    2020-08-05:ZK:初 1.AIDL 2.handler 3.A Activity 起 B Activity ,及Back后生命周期。 4.ANR 5.内存泄漏 6.cotentprovide...

    2024-04-01 05:34:08
  • BUUCTF笔记之N1BOOK

    BUUCTF笔记之N1BOOK

    1.[第一章 web入门]常见的搜集robots.txt得到一部分flag:flag1:n1book{info_1备份文件index.php~得到第二部分flag:flag2:s_v3ry_im访问.index.php.swp得到第三部分flag:flag3:p0rtant_hack}

    2024-04-01 05:33:27
  • linux下graphviz安装与使用

    linux下graphviz安装与使用

    用命令行安装软件apt-get install graphvizsudo apt-get install graphviz graphviz-doc这样会安装dot语言的执行文件,执行文件路径在/usr/bin/dot编写dot文件:vim text.dot 例如:digraph G {        hello [shape=box];        worl...

    2024-04-01 05:33:22
  • java Map

    1:HashMap 的数据结构?A:哈希表结构(链表散列:数组+链表)实现,结合数组和链表的优点。当链表长度超过 8 时,链表转换为红黑树。transientNode[]table;2:HashMap...

    2024-04-01 05:33:16
  • 《Flutter 控件大全》第一零二:Wrap

    《Flutter 控件大全》第一零二:Wrap

    如果你对Flutter还有疑问或者技术方面的疑惑,欢迎加入Flutter交流群(微信:laomengit)。 同时也欢迎关注我的Flutter公众号【老孟程序员】,公众号首发Flutter的相关内容。 Flutter地址:http://laomengit.com 里面包含160多个组件的详细用法。 Wrap可以为子控件进行水平或者垂直方向布局,且当空间用完时,Wrap会自动换行,也是常说的...

    2024-04-01 05:32:35