对不起,这个问题可能是重复的,但是我不得不问,因为我无法使其正常工作。
我正在用这样的for循环动态制作QPushButtons
。
for (int var = 0; var < size; ++var) {
QPushButton *copyr = new QPushButton("copy");
...
}
我已经成功地将这些新的小部件添加到布局中,但是我无法在其上绑定功能。我试图像互联网上的许多来源所建议的那样连接SLOT上的该按钮:
connect (copyr , SIGNAL( clicked() ), this, SLOT( c2c(txt) ) );
但是我无法使其正常工作,并且我正在kp遇到类似:
的错误No such SLOT ClassName::c2c(txt)
事件通常在.h文件中定义,并且也存在于.cpp文件中。 任何想法为什么会发生这种情况以及如何解决呢?
答案 0 :(得分:1)
首先,对连接使用新的语法:
connect(copyr, &QPushButton::clicked, this, &ClassName::c2c);
但是,您不能将不提供参数的信号连接到需要一个信号的插槽。在这里,您有多种选择:
如果希望连接代码中的参数到达插槽,则将连接包装在lambda中:
connect( copyr, &QPushButton::clicked, [this, txt](){ this->c2c(txt); } );