QT 转载地址:https://blog.csdn.net/u011194506/article/details/79414540
进行动态绑定信号槽时,如何正确找到当前操作的控件?
答:变通方法,setProperty
例如QPushButton
void QMainWindow::init_view()
{
QPushButton *btn = NULL;
for(int i = 0; i < 10; i++)
{
btn = new QPushButton(QStringLiteral("打开"), this);
btn->setProperty("index", QString::number(i));
QObject::connect(btn, &QPushButton::clicked, this, &QMainWindow::open_clicked);
}
}
void QMainWindow::open_clicked()
{
QPushButton *btn = qobject_cast<QPushButton*>(sender());
if(btn == NULL)
{
return;
}
QString index = btn->property("index").toString();
qDebug().noquote() << "open" << index;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
通过此变通方法,获取当前操作的控件时哪一个?