我知道有很多问题都是一样的,但没有一个能帮助我:
class Form1 : public QMainWindow {
Q_OBJECT
public:
Form1();
virtual ~Form1();
public slots:
void langChange(const char* lang_label);
private:
Ui::Form1 widget;
void setLangStrings();
};
From1构造函数:
Form1::Form1() {
widget.setupUi(this);
connect(widget.btnL0, SIGNAL(clicked(bool)), this, SLOT(langChange("en")));
connect(widget.btnL1, SIGNAL(clicked(bool)), this, SLOT(langChange("fr")));
setLangStrings();
}
我也实现了这个langChange函数:
void Form1::langChange(const char* lang_label)
{
GL_LANG = lang_label;
setLangStrings();
}
调用connect函数时出现这个愚蠢的错误:
No such slot Form1::langChange("sl") in Form1.cpp:15
我正在将NetBeans与QDesigner一起用于UI。我必须说这个QT4很难学。
答案 0 :(得分:4)
您根本无法将SIGNAL与bool作为参数连接到SLOT,并使用const char *作为参数。要做这种事情,你必须使用QSignalMapper。您有一个示例如何在文档中使用它。在你的情况下,它非常简单,所以你应该很容易处理它。
答案 1 :(得分:0)
SLOT功能必须具有与SIGNAL功能相同的签名
编辑:从官方Qt文档(http://qt-project.org/doc/qt-4.8/signalsandslots.html):
信号的签名必须与接收的签名相匹配 插槽。 (事实上,一个插槽的签名可能比它的信号更短 收到因为它可以忽略额外的参数。)