c++ - QT - 检测按下哪个按钮
问题描述
我在使用Application::sender
. 我有几个QPushButtons
,在一个功能中,我想检测按下了哪个按钮。
我知道使用Application::sender
可能是解决方案,但是我遇到了麻烦。即我得到两个错误:
- 调用没有对象参数的非静态成员函数
- “发件人”是“QObject”的受保护成员
这是我的代码:
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 *
解决方案
调用插槽所在对象的方法 sender() ,而不是 QApplication 的静态成员。
换句话说,删除 QApplication:: 并且您的代码应该按预期工作。
推荐阅读
- dev-c++ - Dev-C++(实际上是 WxDev-C++ 7.4.2.569 - 项目检查器和编译器日志不显示
- assembly - 正常执行时出现地址边界错误,但与 gdb 一起工作正常
- python - 为什么在我将循环设置为 false 后我的代码没有结束?
- python - 在 python 中处理深度嵌套的 json 数据的最佳实践
- javascript - 如何让一个 JS 函数打开一个新的 HTML 页面然后运行?
- python - 如何将 VBA 项目添加到 Excel 文件 *AND* 使用 pandas to_excel (Python) 向其写入数据帧?
- java - 搜索名称矩阵的方法,仅打印第一行
- python - 使用 CNN 进行图像反卷积
- scheme - 牛顿法的平方根
- r - is.vector() 和 is.numeric() 函数有什么区别?