我有一个像程序这样的文本编辑器,它是一个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)
由于一个错字编辑 ...!
你忘记了Q_OBJECT宏.
另外 - 考虑使用此表示法来获取插槽自动连接(setupUI将自动为您连接这些插槽).
void on_buttonFind_clicked();
void on_buttonClose_clicked();
Run Code Online (Sandbox Code Playgroud)