• 6030阅读
  • 3回复

[求助]qt嵌入IE,其中NewWindow2怎么进行信号连接? [复制链接]

上一主题 下一主题
离线berryz2007
 

只看楼主 倒序阅读 楼主  发表于: 2008-01-21
— 本帖被 XChinux 执行加亮操作(2008-07-17) —
不会弄
离线ak123space
只看该作者 1楼 发表于: 2008-01-21
你好,又见面了。我是AK47,,我原来的AK47++的帐号密码忘记了。你的问题我晚上回家看了。
QT好象确实,没有导入这个NewWindow2, NewWindow也一样,我现在怀疑可能跟函数名字的长度有关系.
我跟踪了
int QMetaObject::indexOfSignal(const char *signal) const
{
    int i = -1;
    const QMetaObject *m = this;
    while (m && i < 0) {
        for (i = priv(m->d.data)->methodCount-1; i >= 0; --i)
            if ((m->d.data[priv(m->d.data)->methodData + 5*i + 4] & MethodTypeMask) == MethodSignal
                && strcmp(signal, m->d.stringdata
                          + m->d.data[priv(m->d.data)->methodData + 5*i]) == 0) {
                i += m->methodOffset();
                break;
            }
        m = m->d.superdata;
    }
#ifndef QT_NO_DEBUG
    if (i >= 0 && m && m->d.superdata) {
        int conflict = m->d.superdata->indexOfMethod(signal);
        if (conflict >= 0)
            qWarning("QMetaObject::indexOfSignal:%s: Conflict with %s::%s",
                      m->d.stringdata, m->d.superdata->d.stringdata, signal);
    }
#endif
    return i;
}
最后没从任何匹配的信号

不过
connect(WebBrowser, SIGNAL(FrameNavigateComplete(const QString&)),this, SLOT(test(const QString&)));
我尝试了一下,可以知道点了哪个连接,不过同时还是会打开IE. 是否要把IE不设置为默认浏览器??
晚了。睡觉去了。
离线berryz2007

只看该作者 2楼 发表于: 2008-01-22
windows控件信号连接。
在QMetaObject.cpp文件的int QMetaObject::indexOfSignal(const char *signal) const函数中会将所有的信号与你所使用的进行比较。
跟踪监视m->d.stringdata+ m->d.data[priv(m->d.data)->methodData + 5*i]即可得到实际的信号参数类型是否与自己写的一致。我的错误就是类型不一致,导致输出窗口显示没有信号连接

好了,就这样吧。
离线phpower
只看该作者 3楼 发表于: 2009-03-09
你好。首先,你使用的类型是根据文档中的类型。因为跟踪发现,就算你使用了文档中正确的类型,内部翻译的比较的时候时候,还是会不一致。
所以不是你自己写错了。
快速回复
限100 字节
 
上一个 下一个