Qt插槽连接无法在子对话框下工作

Dew*_*rld -1 c++ qt qt4

我有一个像程序这样的文本编辑器,它是一个QMainWindow继承的类.在那里,当我点击查找,连接,

connect(actionFind,SIGNAL(triggered()),this,SLOT(actionFindTriggered()));
Run Code Online (Sandbox Code Playgroud)

激活.而这个功能的定义是

void    MainWindow::actionFindTriggered() {
    new Find(this);
}
Run Code Online (Sandbox Code Playgroud)

我的Find班级是

class Find : public QDialog, public Ui::Dialog
{
public:
    Find(QWidget *parent=0);

private:
    Ui::Dialog *ui;

public slots:
    void    buttonFindTriggered();
};
Run Code Online (Sandbox Code Playgroud)

而定义是

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";
}
Run Code Online (Sandbox Code Playgroud)

问题是什么

当我从主窗口单击查找时,查找窗口成功运行但无法建立连接.我在控制台上收到以下消息,

Object::connect: No such slot QDialog::buttonFindTriggered() // Edited
Object::connect:  (sender name:   'buttonFind')
Object::connect:  (receiver name: 'Dialog')
Run Code Online (Sandbox Code Playgroud)

由于一个错字编辑 ...!

elc*_*uco 6

你忘记了Q_OBJECT宏.

另外 - 考虑使用此表示法来获取插槽自动连接(setupUI将自动为您连接这些插槽).

void on_buttonFind_clicked();
void on_buttonClose_clicked();
Run Code Online (Sandbox Code Playgroud)