gpt4 book ai didi

c++ - 如何将 osgEarth 的 ViewerWidget 放入带标签的 MdiArea?

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:49:44 28 4
gpt4 key购买 nike

把osgEarth的ViewerViewer放到QMdiArea里有什么特别的吗?我创建了一个 QMdiArea 作为中心 Widget(称为 setCentralWidget),而不是直接将 osgEarth 的查看器作为中心 widget。

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

关于c++ - 如何将 osgEarth 的 ViewerWidget 放入带标签的 MdiArea?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17774690/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com