首页| 论坛| 消息

标题:【提问】不知道这个是不是qt4的 bug
作者:yfy002
日期:2005-07-19 17:28
内容:

写个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


#1 [XChinux 07-19 18:12]
可以到TrollTech的BBS上问一问,不知道这个是BUG,还是故意为之。。。
也发现许多以前在QT3.x时候使用的东西现在不能使用了。
#2 [ruby5583 08-31 11:21]
在开头加一个宏试一下
#define _WIN32_WINNT 0x0501
#3 [tdns 08-31 15:22]
这个可不是Qt的bug,人家是故意这么做的,他是为了跨平台考虑的,并不希望你直接调用与平台相关的接口.在这一点上Qt4比3做得好,我理解这也是4封掉这个函数的原因.以前在linux下用Qt3的时候,我也直接用X的绘图函数在QWidget::handle()上画图,但在4中就只好用QPainter了.不过这么做的好处就是跨平台很容易,后来我把完全基于Qt4写的代码拿到windows上编译,几乎没费吹灰之力.
#4 [XChinux 08-31 15:24]
经楼上的解答,看来这个帖子能算是解决了,呵呵。改为蓝色标题。
#5 [yfy002 09-05 08:54]
看了下,提供了个getdc()函数可以返回

回复 发表
主题 版块