Qt sender()函数

sender函数原型:

复制代码
QObject *sender() const;

如果在由信号激活的插槽中调用该函数,返回指向发送信号的对象的指针,否则返回0,该指针仅在从该对象的线程上下文调用此函数的槽执行期间有效。

主要代码如下:

其中运用了QList类直接foreach循环连接槽函数或者每个按钮都连接

复制代码
QList<QPushButton *> btnColor; //此代码写入MainWindow.h文件中


btnColor << ui->btn_1 << ui->btn_2 << ui->btn_3 ;
foreach (QPushButton *btn, btnColor) {
    connect(btn, SIGNAL(clicked(bool)), this, SLOT(changeColor()));
}


//connect(ui->btn_1, &QPushButton::clicked, this, &changeColor);
//connect(ui->btn_2, &QPushButton::clicked, this, &changeColor);
//connect(ui->btn_3, &QPushButton::clicked, this, &changeColor);

//槽函数
void MainWindow::changeColor()
{
    QPushButton *pBtn = (QPushButton*)sender();
    QMessageBox::about(this, "tips", pBtn->text());

    int index = btnColor.indexOf(pBtn);

    qDebug() << "index == " << index ;

}

mainWindow.ui

结果:每个按键对应着每个按键的截图;index就是按照上面的btnColor依次排序,btn_1的序号为0,btn_2的序号为1,btn_3的序号为2.

参考:Qt sender()用法详解-CSDN博客

相关推荐
9527(●—●)几秒前
windows系统python开发pip命令使用(菜鸟学习)
开发语言·windows·python·学习·pip
松涛和鸣6 分钟前
32、Linux线程编程
linux·运维·服务器·c语言·开发语言·windows
sali-tec7 分钟前
C# 基于halcon的视觉工作流-章69 深度学习-异常值检测
开发语言·图像处理·算法·计算机视觉·c#
我是唐青枫8 分钟前
深入理解 C#.NET 运算符重载:语法、设计原则与最佳实践
开发语言·c#·.net
水煎包V:YEDIYYDS88821 分钟前
QT modbus 通信教程,把modbus封装到线程单例中,在线程内完成数据收发,解析。把重要数据以信号方式通知到qml层展示,解决UI卡顿
qt·modbus·线程服务
张np35 分钟前
java基础-Deque 接口
java·开发语言
柒壹漆38 分钟前
用Python制作一个USB Hid设备数据收发测试工具
开发语言·git·python
LXS_35740 分钟前
Day 16 C++提高之模板
开发语言·c++·笔记·学习方法
盒马盒马42 分钟前
Rust:内部可变性 & 型变
开发语言·后端·rust
沐知全栈开发43 分钟前
XSLT `<value-of>` 元素详解
开发语言