1
在Qt5中繪製X11根窗口仍然有可能嗎?如果是這樣,如何實現?據我所知,通過更改Qt4現有的(剛創建)的QWidget的WID:Qt5:繪製X11根屏幕(並更改現有QWidget的WId
class Foo : public QWidget;
Foo:Foo(WId id)
: QWidget()
{
if (id) {
create(id, false, true);
}
}
顯然,這已不再可能,儘管看起來像只小的改動底層代碼
使用
QWidget::fromWindowContainer(QWindow::fromWinId(QX11Info::appScreen()))
的認可替代方法。
不爲我工作:我得到2級或多或少標準的Windows +錯誤消息:
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( )覆蓋。
我看到類似的問題已被問到,但仍未得到答覆,我希望這一個有更多的成功。
Doh,是的。我需要檢查是否確實直接使用appScreen()(並且這不僅僅是在詢問我的問題時忽略),還是將它提供給函數以獲取相應的根窗口ID。 編輯:我做過但QDesktopSomething類的功能,應該返回一個QWidget對應的根窗口,並給了我或多或少相同的結果)。 – RJVB