c++ - 没有匹配的函数可供调用 - 编译器说我在调用是 (QObject *) 时调用 (QObject *&)

标签 c++ qt qtcore qt-signals qmetaobject

这是代码:

void invokeQMLFunction2Arg(QObject * object, QString func, QVariant p1, QVariant p2) {
    QMetaObject::invokeMethod(object, func, Qt::DirectConnection, Q_ARG(QVariant, p1), Q_ARG(QVariant, p2));
}

这是错误:

error: no matching function for call to 'QMetaObject::invokeMethod(QObject*&, QString&, Qt::ConnectionType, QArgument<QVariant>, QArgument<QVariant>)'

我错过了什么?我使用指针调用 invokeMethod(),但编译器提示它是指针引用。

最佳答案

您正在尝试将 QString 传递给第二个参数,而它应该是 const char* 。将其转换为正确的类型,因为没有隐式转换。您需要决定以哪种方式将其转换为 QByteArray首先,这是您可能会编写的一个示例:

QMetaObject::invokeMethod(object, func.toUtf8().constData(), Qt::DirectConnection, Q_ARG(QVariant, p1), Q_ARG(QVariant, p2));

关于c++ - 没有匹配的函数可供调用 - 编译器说我在调用是 (QObject *) 时调用 (QObject *&),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23197572/

相关文章:

C++ getters 和 setters 最佳风格

qt - matplotlib - 在 Qt 表单上编写 TeX

c++ - 如何将 Switch Qml 添加到 qt widgets?

c++ - QT检测目录和子文件夹更改

c++ - Q_UNUSED 有副作用吗?

c++ - 递增引用变量不起作用

c++ - 在运算符表达式上下文中纠正重载解析的内置运算符候选的行为

qt - 如何在无边框窗口中保持阴影

python - PyQt:如何使用自定义消息生成光栅图像

c++ - OpenCV更好地检测红色?