【发布时间】:2017-03-08 09:48:03
【问题描述】:
在 Qt5 中是否仍然可以在 X11 根窗口上绘制,如果可以,如何?据我了解,这通过更改现有(刚刚创建的)QWidget 的 WId 在 Qt4 中起作用:
class Foo : public QWidget;
Foo:Foo(WId id)
: QWidget()
{
if (id) {
create( id, false, true );
}
}
尽管看起来只是对底层代码进行了微小的更改,但这显然不再可能。
使用的认可替换方法
QWidget::fromWindowContainer(QWindow::fromWinId(QX11Info::appScreen()))
对我不起作用:我收到或多或少 2 个标准窗口以及错误消息:
QXcbConnection: XCB error: 8 (BadMatch), sequence: 850, resource id: 37748756, major code: 7 (ReparentWindow), minor code: 0
QXcbConnection: XCB error: 8 (BadMatch), sequence: 962, resource id: 37748760, major code: 7 (ReparentWindow), minor code: 0
QWidget::paintEngine: Should no longer be called
QPainter::begin: Paint device returned engine == 0, type: 1
我自己没有调用paintEngine,也没有在我的QWidget::paintEvent()覆盖之外进行任何绘画。
我看到有人问过类似的问题,但仍未得到解答,我希望这个问题更成功。
【问题讨论】: