[英]No matching signal for QAction, no “go to slot” menu entry
我在實際運行使用QtCreator創建的QAction時遇到問題。 為了運行例如actionSystemSettings,我向MainWindows添加了插槽,因此它看起來像這樣:
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private slots:
void on_menuWork_actionSystemSettings();
private:
Ui::MainWindow *ui;
};
和這個:
void MainWindow::on_menuWork_actionSystemSettings() {
qDebug() << "Yay!";
}
它提示:
QMetaObject :: connectSlotsByName:沒有匹配信號on_menuWork_actionSystemSettings()
我猜這是一個愚蠢的錯誤,我只是忘記了一些東西,但是閱讀文檔卻沒有任何幫助。 我沒有“去插槽”菜單項,它應該自動創建一些模板……至少Visual Studio for C#做到了。
在定義插槽時,正確的方法是:
on_<widget_name>_<signal>
例如,如果您必須命名廣告位
private slots:
on_actionSystemSettings_triggered();
根據QMetaObject::connectSlotsByName()
的文檔:
遞歸搜索給定對象的所有子對象,並將匹配的信號從它們連接到遵循以下形式的對象插槽:
void on_object-name_signal-name(signal-parameters);
因此,我認為您的廣告位應具有以下簽名:
void MainWindow::on_actionSystemSettings_triggered()
{
//
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.