• 10439阅读
  • 8回复

[提问]关于Q_PRIVATE_SLOT的问题 [复制链接]

上一主题 下一主题
离线davie
 

只看楼主 倒序阅读 楼主  发表于: 2015-07-22
关键词: Q_PRIVATE_SLOTQT5
环境:windows 7 + Vs2010 +QT5.1.1
看着这个写了个例子,见附件,但总是提示window.open('http://www.qtcn.org/bbs/attachment/Mon_1507/17_141042_2dd9adcea540c01.png?6');" style="max-width:700px;max-height:700px;" onload="if(is_ie6&&this.offsetWidth>700)this.width=700;" >
文件见附件中源码 Q_PRIVATE_SLOT.rar (340 K) 下载次数:5 ,请高手帮忙看看
离线davie

只看该作者 1楼 发表于: 2015-07-22
我发现需要在moc_MyClass.cpp文件中手动添加#include "MyClass_P.h",有没有知道怎么不用手工添加
离线dbzhang800

只看该作者 2楼 发表于: 2015-07-22
在你的 MyClass.cpp 最后面加入 #include"moc_MyClass.cpp"



离线davie

只看该作者 3楼 发表于: 2015-07-23
回 dbzhang800 的帖子
dbzhang800:在你的 MyClass.cpp 最后面加入 #include"moc_MyClass.cpp"
 (2015-07-22 17:02) 

这个我加了,不行;从stackoverflow 中的http://stackoverflow.com/questions/6605681/qt-c-forward-declaration-problem中我知道是前置声明引起的,而且生成的moc文件需要一个完整的定义,所以不行,而且我的MyclassPrivate和MyClass类是分开实现的,也有一种解决办法,把它们放在一起,但是这样就不能实现分离了。
现在我知道的唯一的可靠方案,是1楼所说的方法,期待其他方法
离线dbzhang800

只看该作者 4楼 发表于: 2015-07-23
好吧,我下载你的源码看了一眼。

我可以肯定的告诉你,我前面说的就是就是你要的答案。

但是我看到你用的是VS的工程文件,这中间会不会有问题,我就不清楚了。比如:
你的工程文件是qmake生成的,还是VS的qt插件生成的。
你的工程文件是按我说的做之前生成的,还是之后生成的。

我个人买不起商业版的VS,所以不能亲测,也不知道VS的qt插件是否存在BUG(印象中,几年之前,国外有人抱怨过生成的vs工程文件不能正确处理这种问题)。
离线dbzhang800

只看该作者 5楼 发表于: 2015-07-23
说实话,我不清楚你为什么要用Q_PRIVATE_SLOT这种私有宏。而且你打包的源码中,不仅包括编译中生成的中间文件,还包括 qobject_p.h 这种Qt的私有头文件【我不知道你是否清楚这意味这什么】。

言归正传:
如果你对moc的用法感兴趣的话,你可以看看我当时为QextSerialPort参与者写的:
https://github.com/qextserialport/qextserialport/blob/wiki/Three_Usage_Of_MOC.md
离线davie

只看该作者 6楼 发表于: 2015-07-23
回 dbzhang800 的帖子
dbzhang800:好吧,我下载你的源码看了一眼。
我可以肯定的告诉你,我前面说的就是就是你要的答案。
但是我看到你用的是VS的工程文件,这中间会不会有问题,我就不清楚了。比如:
....... (2015-07-23 10:39) 

用的是VS插件
离线davie

只看该作者 7楼 发表于: 2015-07-23
回 dbzhang800 的帖子
dbzhang800:说实话,我不清楚你为什么要用Q_PRIVATE_SLOT这种私有宏。而且你打包的源码中,不仅包括编译中生成的中间文件,还包括 qobject_p.h 这种Qt的私有头文件【我不知道你是否清楚这意味这什么】。
言归正传:
如果你对moc的用法感兴趣的话,你可以看看我当时为QextSerialPort参与者写 .. (2015-07-23 10:48) 

主要是想学一下这个怎么用,所以有Qt私有的头文件
好的,去你给的链接看看
离线shanfeng

只看该作者 8楼 发表于: 2017-03-14
回 davie 的帖子
davie:主要是想学一下这个怎么用,所以有Qt私有的头文件
好的,去你给的链接看看 (2015-07-23 12:08) 

请问这个问题最终怎么解决的? 谢谢
快速回复
限100 字节
 
上一个 下一个