Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt 下面的函数做什么?_Qt_Implementation_Signals Slots - Fatal编程技术网

Qt 下面的函数做什么?

Qt 下面的函数做什么?,qt,implementation,signals-slots,Qt,Implementation,Signals Slots,我正在寻找Qt的函数QObject::Qt_metacall(_c,_id,_a)的实现这是将给定函数名转换为索引的地方。但是我在他们的源代码中找不到函数的实现 int ssObject::qt_metacall(QMetaObject::Call _c, int _id, void **_a) { _id = QObject::qt_metacall(_c, _id, _a); if (_id < 0) return _id; if (_c ==

我正在寻找Qt的函数
QObject::Qt_metacall(_c,_id,_a)的实现这是将给定函数名转换为索引的地方。但是我在他们的源代码中找不到函数的实现

int ssObject::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
{
    _id = QObject::qt_metacall(_c, _id, _a);
    if (_id < 0)
        return _id;
    if (_c == QMetaObject::InvokeMetaMethod) {
        switch (_id) {
        case 0: readyToPrint(); break;
        case 1: readyToPrint1((*reinterpret_cast< int(*)>(_a[1]))); break;
               //''''

         }
    return _id;
   }
int-ssObject::qt\u元调用(QMetaObject::Call\u c,int\u id,void**a)
{
_id=QObject::qt_元调用(_c,_id,_a);
如果(_id<0)
返回_id;
if(_c==QMetaObject::InvokeMetMethod){
开关(_id){
案例0:readyToPrint();中断;
案例1:readyToPrint1(*重新解释投射([1]));中断;
//''''
}
返回_id;
}

为什么调用父类的
qt\u metacall

它调用具有索引id的类c的方法,该类的参数在列表a中


我相信实现是由moc生成的,因此它不在任何源树中。

它调用带有索引id的方法,该方法属于类c,参数在列表a中


我相信实现是由moc生成的,因此它不在任何源代码树中。

您应该能够在某处找到moc_qobject.cpp。它要求您构建Qt,因为此文件是自动生成的,就像您自己的moc文件一样

这是我的版本(windows上的4.6.1):

int-QObject::qt\u元调用(QMetaObject::Call\u c,int\u id,void**a)
{
如果(_id<0)
返回_id;
if(_c==QMetaObject::InvokeMetMethod){
开关(_id){
案例0:销毁(*重新解释铸造([1]));断裂;
案例1:破坏();断裂;
案例2:deleteLater();break;
案例3:d_func()->_q_重新注册计时器((*重新解释_cast(_a[1]));中断;
违约:;
}
_id-=4;
}
#ifndef QT_无属性
else if(_c==QMetaObject::ReadProperty){
void*_v=_a[0];
开关(_id){
案例0:*重新解释cast(\u v)=objectName();中断;
}
_id-=1;
}else if(_c==QMetaObject::WriteProperty){
void*_v=_a[0];
开关(_id){
案例0:setObjectName(*reinterpret_cast(_v));中断;
}
_id-=1;
}else if(_c==QMetaObject::ResetProperty){
_id-=1;
}else if(_c==QMetaObject::QueryPropertyDesignable){
_id-=1;
}else if(_c==QMetaObject::QueryPropertyScript可写){
_id-=1;
}else if(_c==QMetaObject::QueryPropertyStored){
_id-=1;
}else if(_c==QMetaObject::QueryPropertyEdit){
_id-=1;
}else if(_c==QMetaObject::QueryPropertyUser){
_id-=1;
}
#endif//QT\u NO\u属性
返回_id;
}

您应该能够在某处找到moc_qobject.cpp。它要求您构建Qt,因为此文件是自动生成的,就像您自己的moc文件一样

这是我的版本(windows上的4.6.1):

int-QObject::qt\u元调用(QMetaObject::Call\u c,int\u id,void**a)
{
如果(_id<0)
返回_id;
if(_c==QMetaObject::InvokeMetMethod){
开关(_id){
案例0:销毁(*重新解释铸造([1]));断裂;
案例1:破坏();断裂;
案例2:deleteLater();break;
案例3:d_func()->_q_重新注册计时器((*重新解释_cast(_a[1]));中断;
违约:;
}
_id-=4;
}
#ifndef QT_无属性
else if(_c==QMetaObject::ReadProperty){
void*_v=_a[0];
开关(_id){
案例0:*重新解释cast(\u v)=objectName();中断;
}
_id-=1;
}else if(_c==QMetaObject::WriteProperty){
void*_v=_a[0];
开关(_id){
案例0:setObjectName(*reinterpret_cast(_v));中断;
}
_id-=1;
}else if(_c==QMetaObject::ResetProperty){
_id-=1;
}else if(_c==QMetaObject::QueryPropertyDesignable){
_id-=1;
}else if(_c==QMetaObject::QueryPropertyScript可写){
_id-=1;
}else if(_c==QMetaObject::QueryPropertyStored){
_id-=1;
}else if(_c==QMetaObject::QueryPropertyEdit){
_id-=1;
}else if(_c==QMetaObject::QueryPropertyUser){
_id-=1;
}
#endif//QT\u NO\u属性
返回_id;
}

我发布的代码来自moc_ssObject.cppDoh..抱歉。我更新了答案并发布了我最近的Qt版本中的代码。我发布的代码来自moc_ssObject.cppDoh..抱歉。我更新了答案并发布了我最近的Qt版本中的代码。
int QObject::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
{
    if (_id < 0)
        return _id;
    if (_c == QMetaObject::InvokeMetaMethod) {
        switch (_id) {
        case 0: destroyed((*reinterpret_cast< QObject*(*)>(_a[1]))); break;
        case 1: destroyed(); break;
        case 2: deleteLater(); break;
        case 3: d_func()->_q_reregisterTimers((*reinterpret_cast< void*(*)>(_a[1]))); break;
        default: ;
        }
        _id -= 4;
    }
#ifndef QT_NO_PROPERTIES
      else if (_c == QMetaObject::ReadProperty) {
        void *_v = _a[0];
        switch (_id) {
        case 0: *reinterpret_cast< QString*>(_v) = objectName(); break;
        }
        _id -= 1;
    } else if (_c == QMetaObject::WriteProperty) {
        void *_v = _a[0];
        switch (_id) {
        case 0: setObjectName(*reinterpret_cast< QString*>(_v)); break;
        }
        _id -= 1;
    } else if (_c == QMetaObject::ResetProperty) {
        _id -= 1;
    } else if (_c == QMetaObject::QueryPropertyDesignable) {
        _id -= 1;
    } else if (_c == QMetaObject::QueryPropertyScriptable) {
        _id -= 1;
    } else if (_c == QMetaObject::QueryPropertyStored) {
        _id -= 1;
    } else if (_c == QMetaObject::QueryPropertyEditable) {
        _id -= 1;
    } else if (_c == QMetaObject::QueryPropertyUser) {
        _id -= 1;
    }
#endif // QT_NO_PROPERTIES
    return _id;
}