我想从 QTabWiget 中取消停靠 QWidget(设置为 centralWidget)。该选项卡包含一些打开的场景图内容(OpenGL 窗口)。从列表中删除选项卡并将其放入新的对话框窗口(=> 从选项卡中取消停靠)时,场景数据似乎已损坏。它适用于“标准小部件”,但 osg 似乎忘记了场景。
令人惊讶的是,在使用 QDockWidget 时可以取消停靠(取消停靠窗口后可以看到场景)。
任何人都知道如何在不破坏 osgViewer 的情况下取消停靠选项卡?
要求从选项卡取消停靠并在新对话框窗口中显示的代码:
QWidget* gv = // points to an osgViewer in a qt widget
QDialog* dlg = new QDialog(this);
dlg->setWindowTitle("hello earth");
QHBoxLayout* pMainLay = new QHBoxLayout;
gv->setMinimumSize(100,100);
gv->setGeometry(100,100,300,300);
pMainLay->addWidget(gv);
dlg->setLayout(pMainLay);
ui->tabWidget->removeTab(0); // removes the tab at position 0 (docked window)
dlg->show(); // should show the undocked dialog
在新对话框中没有什么可看的。我错过了什么吗?如何将 osg 视图正确“复制”到新的小部件/对话框中?我应该为这种任务使用复合查看器吗?似乎甚至没有可见的空 osg 视图(没有蓝色画布)......