簡體   English   中英

沒有與QAction匹配的信號,沒有“轉到插槽”菜單條目

[英]No matching signal for QAction, no “go to slot” menu entry

我已經自動生成了QMainWindow(MainWindows),其中包含QMenuBar(menuBar)和QMenu(menuWork)。

我在實際運行使用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();

請參閱QtAutoConnect

根據QMetaObject::connectSlotsByName()的文檔:

遞歸搜索給定對象的所有子對象,並將匹配的信號從它們連接到遵循以下形式的對象插槽:

void on_object-name_signal-name(signal-parameters);

因此,我認為您的廣告位應具有以下簽名:

void MainWindow::on_actionSystemSettings_triggered()
{
    //
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM