C++ 重载运算符上的QMetaObject调用

C++ 重载运算符上的QMetaObject调用,c++,qt,qmetaobject,C++,Qt,Qmetaobject,是否有人尝试调用重载运算符,如forQMetaObject::invokeMethod中所述: 您只需将信号或插槽的名称传递给此函数, 不是全部签名 将返回-1。最好的方法是将您的运算符放在函数名的前面。普通函数就是这样调用的。我尝试了你的建议,但仍然不起作用:QMetaObject::invokeMethod:没有这样的方法Worker::operator“你是关于函数名的,普通函数都是这样调用的。”什么?您可以直接呼叫操作员,因此(&worker)->操作员抱歉,英语不好。我的意思是你是对的

是否有人尝试调用重载运算符,如for
QMetaObject::invokeMethod
中所述:

您只需将信号或插槽的名称传递给此函数, 不是全部签名


将返回
-1
。最好的方法是将您的
运算符放在函数名的前面。普通函数就是这样调用的。我尝试了你的建议,但仍然不起作用:QMetaObject::invokeMethod:没有这样的方法Worker::operator“你是关于函数名的,普通函数都是这样调用的。”什么?您可以直接呼叫操作员,因此
(&worker)->操作员抱歉,英语不好。我的意思是你是对的,这通常适用于普通函数。但是,当您尝试使用重载运算符时,它找不到该方法。也许这与主运行中心和@GeneralFailure有关,你是对的!我已经添加了更多信息。好的,我会接受这个策略。但是,我不确定是否在基本运算符中
class Worker : public QObject
{
    Q_OBJECT
public:
    explicit Worker(QObject *parent = 0);

    Q_INVOKABLE virtual void operator<<(char p);

};
QMetaObject::invokeMethod( &worker, QT_STRINGIFY2( operator<<(char) ), Qt::QueuedConnection, Q_ARG( char, 'a') );
QMetaObject::invokeMethod( &worker,
                           "operator<<",
                           Qt::QueuedConnection,
                           Q_ARG( char, 'a') );
qDebug() << worker.metaObject()->indexOfMethod( "operator<<" );