我有一个像程序这样的文本编辑器,它是一个QMainWindow
继承的类。在那里,当我点击查找时,连接
connect(actionFind,SIGNAL(triggered()),this,SLOT(actionFindTriggered()));
激活。而且该功能的定义是
void MainWindow::actionFindTriggered() {
new Find(this);
}
我的Find
课程是
class Find : public QDialog, public Ui::Dialog
{
public:
Find(QWidget *parent=0);
private:
Ui::Dialog *ui;
public slots:
void buttonFindTriggered();
};
定义是
Find::Find(QWidget *parent)
: QDialog(parent)
{
ui = new Ui::Dialog;
ui->setupUi(this);
show();
this->
connect(ui->buttonClose, SIGNAL(clicked()), this, SLOT(close()));
connect(ui->buttonFind, SIGNAL(clicked()), this, SLOT(buttonFindTrigddgered()));
}
void Find::buttonFindTriggered() {
qDebug() << "FIND ACTIVATED";
}
当我从主窗口点击查找时,查找窗口成功运行但无法进行连接。我在控制台上获得了以下消息,
Object::connect: No such slot QDialog::buttonFindTriggered() // Edited
Object::connect: (sender name: 'buttonFind')
Object::connect: (receiver name: 'Dialog')
由于拼写错误,已编辑 ...!
答案 0 :(得分:6)
您忘记了Q_OBJECT宏。
另外 - 考虑使用此表示法来获取插槽自动连接(setupUI会自动连接这些插槽)。
void on_buttonFind_clicked();
void on_buttonClose_clicked();
答案 1 :(得分:1)
如错误消息所示,它找不到插槽:
buttonFindTrigddgered()
因为它应该是:
buttonFindTriggered()