QTabWiget から QWidget をドッキング解除したい (centralWidget として設定されている)。このタブには、いくつかの Open Scene Graph コンテンツ (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ビューが表示されていないようです(青いキャンバスはありません)...