将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
,但没有成功,但是因为我只需要一个 View ,所以ViewerWidget
应该可以,还是不可以?我查看了示例,但没有成功使用其中一个作为起点。
有什么提示吗?提前致谢。
最佳答案
您可以尝试一下,其中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