2

ViewerViewer将 osgEarth's放入 a有什么特别之处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

我尝试的一切都没有奏效......除了 osgEarthViewerWidget被设置为我的MainWindow. 也尝试过MultiViewerWidget但没有任何成功,但因为我只需要一个视图ViewerWidget应该可以,还是不行?

我查看了这些示例,但没有成功使用其中一个作为起点。

有什么提示吗?提前致谢。

4

2 回答 2

1

你可以试试这个,哪里Form1QDialog

在 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

于 2013-07-23T07:15:41.243 回答
1

在启动 UI 之前尝试设置子窗口的几何图形。

   QMdiSubWindow* sw = mdiArea->addSubWindow(viewerWidget); 
   sw->setGeometry(...); 

否则 OSG 可能会变得混乱。

Gwaldron 在此处的 osgEarth 论坛中得到了这个答案,它奏效了。

为 viewerWidget 设置最小尺寸也会有所帮助(例如,用于在 TabWidget 上定位)。在这里查看我的问题和答案。

于 2013-07-22T06:52:10.063 回答