将osgEarth的ViewerViewer放入QMdiArea有什么特别之处吗?我创建了一个QMdiArea作为中心小部件(称为setCentralWidget),而不是直接将osgEarth的查看器作为中心小部件。
QMdiArea *mdiArea = new QMdiArea(this);
setCentralWidget(mdiArea); // call to QMainWindows method, snippet is taken from app's MainWindow
mdiArea->addSubWindow(viewerWidget); // this doesn't work, globe is not drawn我试过的所有东西都不起作用..。除了osgEarth的ViewerWidget被设置为我的MainWindow的中心小部件之外。我也尝试了MultiViewerWidget,但没有任何成功,但因为我只需要一个视图,ViewerWidget应该是可以的,或不?
我看过这些例子,但没有成功地使用其中的一个作为起点。
有什么提示吗?先谢谢你。
发布于 2013-07-22 14:52:10
尝试在启动UI之前设置子窗口的几何体。
QMdiSubWindow* sw = mdiArea->addSubWindow(viewerWidget);
sw->setGeometry(...); 否则,OSG可能会变得混乱。
Gwaldron在osgEarth论坛here上得到了这个答案,它起作用了。
此外,为viewerWidget设置最小大小也会有所帮助(例如,在TabWidget上定位)。请参阅我的问答here。
发布于 2013-07-23 15:15:41
您可以尝试这样做,其中Form1是一个QDialog
在main.cpp中
int main()
{
QApplication a(argc, argv);
Form1 w=new Form1();//qdialog
.................//do something to initial the map
w.loadWidget(viewerWidget);
w.show();//the order of the loadwiget() and show() is important!!!!!
a.exec();
}Form1.cpp格式
void Form1::loadWidget(QWidget *qwidget)
{
qwidget->setMinimumSize( ui.mdiArea->width(),ui.mdiArea->height());
QMdiSubWindow * subW=ui.mdiArea->addSubWindow(qwidget);
subW->setWindowFlags(Qt::SubWindow | Qt::FramelessWindowHint);
subW->maximumSize();
}这与qt 4.8.4+osgearth 2.3配合使用效果很好
https://stackoverflow.com/questions/17774690
复制相似问题