我对Application::sender
的使用有疑问。我有几个QPushButtons
,在一个函数中,我想检测按下了哪个按钮。
我知道使用Application::sender
可能是解决方案,但我遇到了麻烦。即我得到两个错误:
这是我的代码:
void MainWindow::on_button_click()
{
unsigned long i=0;
for(; i<buttons.size(); ++i)
{
if(buttons[i] == QApplication::sender())
break;
}
if(checks[i]->checkState() == false)
buttons[i]->setText("Undone");
else
buttons[i]->setText("Done!");
}
变量buttons
是vector
QPushButton *
答案 0 :(得分:1)
调用插槽所在对象的方法sender(),而不是QApplication的静态成员。
换句话说,删除QApplication ::并且您的代码应该按预期工作。
答案 1 :(得分:0)
sender()返回QObject。你需要QPushButton所以你必须使用铸造。这段代码可以使用:
QPushButton *button = qobject_cast<QPushButton*>(sender());
button->setText("New Text");