我可以将QPainter / QPaintDevice用于非Qt应用程序的现有本机窗口吗?

时间:2014-02-14 15:17:29

标签: image winapi qt4 qpainter

我维护一个大型的Win32应用程序,我想将它的一些部分迁移到Qt(目前使用4.8)。第一部分是将图像和形状的渲染转换为Qt。该应用程序的核心是巨大的,无法作为一个整体进行转换。

我设法使用QImage进行编译和链接。 我可以启动应用程序并将图像加载到QImage对象中。

然后我尝试使用以下代码从我现有的Win32窗口创建一个QWidget:

class MyWidget : public QWidget
{
public:
    void create(HWND hwnd)
    {
        QWidget::create(hwnd);
    }
};

这是必要的,因为create是QWidget的受保护成员(是的,我现在的方法有点不经意......)。

然后我尝试了:

qWin.create(hwnd);
QRect rect(...);
qWin.paintEngine()->drawImage(myImage.rect(), myImage, rect); 

使用

在QWidgetPrivate :: QWidgetPrivate中断言
  

qFatal(“QWidget:必须在之前构建一个QApplication   的QPaintDevice“);

有没有办法做到这一点?

我可以以某种方式为非Qt应用程序的现有本机窗口提供QPainter或QPaintDevice吗?

0 个答案:

没有答案