【发布时间】:2014-01-16 00:03:23
【问题描述】:
我有一个 C++ 上的 Qt 应用程序,我想为 QPushButton 分配一个插槽。但我想传递一些参数,因为我有不止一个 QPushButton 在做类似的事情,所以我想要一个函数,但里面有一个参数,但 Qt 一直告诉我没有这样的插槽。谁能告诉我为什么以及我应该怎么做?
提前谢谢你
在我的.h文件中:(一开始是私有的,但我在搜索问题时更改了它)
public slots:
void handleButton(int row, int col);
然后在.cpp中:
void fieldWindow::handleButton(int row, int col){
cout << row << " " << col << endl;
}
再次在同一个 .cpp 中:
connect(this->buttonsField[i][j], SIGNAL(released()), this, SLOT(handleButton(i,j)));
这是在两个嵌套循环中完成的,因此 i 和 j 定义明确。
我的错误是:
QObject::connect: No such slot fieldWindow::handleButton(i,j) in ..\Proj1\fieldwindow.cpp:41
QObject::connect: (receiver name: 'fieldWindow')
我在互联网上读到了一些我应该说 handleButton(int, int); 的东西,但是我应该如何传递参数?
【问题讨论】:
-
connect语句不接受SIGNAL(...)表达式中的任何参数。SIGNAL是一个宏,它将函数 signature 封装在要传递给connect的字符串中。 -
所以应该是
handleButton(int,int)?!但是我该如何传递参数呢?!
标签: c++ qt qt5 qobject qpushbutton