2017-08-28 19 views
0

我需要從我的主窗口類,從QMainWindow類繼承從主窗口外面一類的東西調用的方法是這樣的:如何從QMainWindow調用方法?

Q_ASSERT(QMetaObject::invokeMethod(mainWindow, "attachmentDownloadComplete")); 

mainWindow是類MainWindow : public QMainWindow

的錯誤是:

no matching function for call to 'QMetaObject::invokeMethod(MainWindow*&, const char [27])' 
    Q_ASSERT(QMetaObject::invokeMethod(mainWindow, "attachmentDownloadComplete")); 

我的問題是如何設法調用調用此方法?

+0

你確定申報'attachmentDownloadComplete'作爲信號或插槽? – Macias

+0

是的,它被聲明爲插槽。 – Jack

+0

你能證明你是如何申報的嗎? – eyllanesc

回答

0

問題是,您嘗試調用的插槽有一個輸入參數。

當你有一個輸入參數,你需要用Q_ARG.

前指定參數:

在我的主要窗口,我有一個插槽,如下圖所示。

public slots: 

    void doSomeTest(const char* name) { std::cout << "testing Something"; } 

在調用它的其他文件時,應該如下所述。 按預期進行測試和工作。

QMetaObject::invokeMethod(mainWin, "doSomeTest", Q_ARG(const char*, "test test")); 

第一個參數 - 您的主窗口對象。

第二個參數 - 插槽名稱。

從所有輸入參數的第三個類型。

如果您有任何返回類型使用

Q_RETURN_ARG(RETURN_TYPE, RETURN_VALUE_PARAMETER),