QT 给按钮添加编号避免重复代码
时间: 2023-12-25 20:04:58 浏览: 150
在QT中,可以使用QObject::sender()方法获取信号的发送者,然后通过判断发送者的类型来执行不同的操作。为了避免重复代码,可以将多个按钮的信号连接到同一个槽函数中,在槽函数中根据发送者的编号执行相应的操作。以下是一个示例代码:
```cpp
// 在按钮的构造函数中设置编号
QPushButton *btn1 = new QPushButton("Button 1", this);
btn1->setProperty("id", 1);
QPushButton *btn2 = new QPushButton("Button 2", this);
btn2->setProperty("id", 2);
// 将多个按钮的信号连接到同一个槽函数中
connect(btn1, &QPushButton::clicked, this, &MyWidget::onButtonClicked);
connect(btn2, &QPushButton::clicked, this, &MyWidget::onButtonClicked);
// 在槽函数中根据发送者的编号执行相应的操作
void MyWidget::onButtonClicked()
{
QPushButton *btn = qobject_cast<QPushButton*>(sender());
if (btn) {
int id = btn->property("id").toInt();
switch (id) {
case 1:
// 执行按钮1的操作
break;
case 2:
// 执行按钮2的操作
break;
default:
break;
}
}
}
```
在上面的示例代码中,我们使用QPushButton::setProperty()方法为按钮设置了一个名为"id"的属性,然后在槽函数中通过QPushButton::property()方法获取该属性的值,从而判断按钮的编号。这样,我们就可以在一个槽函数中处理多个按钮的信号,避免了重复代码。
阅读全文