我有一个子类QWindow的对象。我将它添加到QMainWindow
的布局中,将其包装到QWidget
容器中,如下所示:
myWinContainer= QWidget::createWindowContainer(myWindow,this);
vbox->addWidget(myWinContainer);
myWinContainer->setFixedSize(640,360);
然后是全屏模式。我试图直接在myWindow
(QWindow)上设置屏幕模式:
myWindow->setParent(nullptr);
myWindow->showFullScreen();
窗户全屏显示。但是当我从全屏退出时,我无法将其重新置于其小部件中。
myWindow->setWindowState(Qt::WindowNoState);
myWindow->setParent(p);//where p is cached pointer to parent: myWindow->parent()
myWindow->showNormal();
窗口与主窗口保持分离。
然后我尝试通过myWindow的父窗口小部件(myWinContainer
)进行全屏显示。在这种情况下,每次我将myWinContainer
插回其父级时:
vbox->insertWidget(0,myWinContainer);
布局对象,它会因内部错误而崩溃。
答案 0 :(得分:0)
也许您需要重新创建窗口容器:
class Foo : public QWidget {
QWidget * m_container = {};
QWindow m_window;
QVBoxLayout m_vBox;
// ...
};
void Foo::contain() {
// invoke each time the window is shown not-full-scale
delete m_container; // removes from the layout, too
m_container = QWidget::createWindowContainer(&m_window, this);
m_container->setFixedSize(640,360);
m_vBox->addWidget(myWinContainer);
}