• 11059阅读
  • 5回复

【提问】不知道这个是不是qt4的 bug [复制链接]

上一主题 下一主题
离线yfy002
 

只看楼主 倒序阅读 楼主  发表于: 2005-07-19
写个windows下的程序,用的qt,需要访问windows下的HDC字段,记得以前是可以通过
QPixmap * retval;
retval->handle();
获得的,编译了下竟然说没有这个函数,而且竟然也没有提供替代的函数。
察看了下src\gui\images\qpixmap.h
发觉这个函数是提供的,只不过写成这样
#if !defined(Q_WS_WIN) && !defined(Q_WS_MAC)
  Qt::HANDLE handle() const;
#endif
而windows环境下是定义了Q_WS_WIN的。
见参考文档
Qt/Windows
When compiling for this platform, the macro Q_WS_WIN is defined.
而在源文件qpixmap.cpp的注释中
/*!
  Returns the pixmap's handle to the device context.

  \warning This function is Windows-specific; using it is
  non-portable.
*/
也既该函数仅适用windows平台。于是我把这些定义改成
#if defined(Q_WS_WIN)
。。。。。
#ndif
重新编译qt,再编译我的程序就可以了.
不知这个是不是qt4的bug
[ 此贴被XChinux在2005-08-02 09:11重新编辑 ]
我渴望平静,风却给了我涟漪
我的blog:
http://sungaoyong.cublog.cn
离线XChinux

只看该作者 1楼 发表于: 2005-07-19
可以到TrollTech的BBS上问一问,不知道这个是BUG,还是故意为之。。。
也发现许多以前在QT3.x时候使用的东西现在不能使用了。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线ruby5583
只看该作者 2楼 发表于: 2005-08-31
在开头加一个宏试一下
#define _WIN32_WINNT 0x0501
离线tdns

只看该作者 3楼 发表于: 2005-08-31
这个可不是Qt的bug,人家是故意这么做的,他是为了跨平台考虑的,并不希望你直接调用与平台相关的接口.在这一点上Qt4比3做得好,我理解这也是4封掉这个函数的原因.以前在linux下用Qt3的时候,我也直接用X的绘图函数在QWidget::handle()上画图,但在4中就只好用QPainter了.不过这么做的好处就是跨平台很容易,后来我把完全基于Qt4写的代码拿到windows上编译,几乎没费吹灰之力.
离线XChinux

只看该作者 4楼 发表于: 2005-08-31
经楼上的解答,看来这个帖子能算是解决了,呵呵。改为蓝色标题。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线yfy002

只看该作者 5楼 发表于: 2005-09-05
看了下,提供了个getdc()函数可以返回
我渴望平静,风却给了我涟漪
我的blog:
http://sungaoyong.cublog.cn
快速回复
限100 字节
 
上一个 下一个