我需要从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"));
我的问题是如何调用调用此方法?
答案 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),