如何从QMainWindow调用方法?

时间:2017-08-28 19:13:05

标签: qt c++11 windows-10 qt5 moc

我需要从MainWindow类中调用一个方法,该方法从MainWindow外部的类继承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"));

我的问题是如何调用调用此方法?

1 个答案:

答案 0 :(得分: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),