首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将osgEarth的ViewerWidget放入选项卡式MdiArea中?

如何将osgEarth的ViewerWidget放入选项卡式MdiArea中?
EN

Stack Overflow用户
提问于 2013-07-22 00:58:06
回答 2查看 938关注 0票数 2

将osgEarth的ViewerViewer放入QMdiArea有什么特别之处吗?我创建了一个QMdiArea作为中心小部件(称为setCentralWidget),而不是直接将osgEarth的查看器作为中心小部件。

代码语言:javascript
复制
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应该是可以的,或不?

我看过这些例子,但没有成功地使用其中的一个作为起点。

有什么提示吗?先谢谢你。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-22 14:52:10

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

代码语言:javascript
复制
   QMdiSubWindow* sw = mdiArea->addSubWindow(viewerWidget); 
   sw->setGeometry(...); 

否则,OSG可能会变得混乱。

Gwaldron在osgEarth论坛here上得到了这个答案,它起作用了。

此外,为viewerWidget设置最小大小也会有所帮助(例如,在TabWidget上定位)。请参阅我的问答here

票数 1
EN

Stack Overflow用户

发布于 2013-07-23 15:15:41

您可以尝试这样做,其中Form1是一个QDialog

在main.cpp中

代码语言:javascript
复制
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格式

代码语言:javascript
复制
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配合使用效果很好

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17774690

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档