如何在 QMdiArea 中显示 QWindow
How to show QWindow inside QMdiArea
我有一个继承 QWindow 和 QOpenGLFunctions_3_3_Core 的 OpenGLWindow class,它正在打开 collada dae 文件(在简单项目中工作正常)。
我还有一个继承自 QWidgets 的 pdfViewer class。
我想在 MdiArea class 中显示这个 windows:
void MainViewer::CreateSubWindow(QString &pathToFile)
{
if (pathToFile.endsWith(".pdf"))
{
PdfViewer *newViewer=new PdfViewer(&pathToFile);
m_LoadedFiles->insert(pathToFile,newViewer);//this qhash save inform of current opened docs, i need it
m_MainMdiArea->addSubWindow(static_cast<PdfViewer*>(m_LoadedFiles->value(pathToFile)))->show();
}
if (pathToFile.endsWith(".dae"))
{
DaeViewer *newViewer=new DaeViewer(pathToFile);
m_LoadedFiles->insert(pathToFile, newViewer);
m_MainMdiArea->addSubWindow(m_LoadedFiles->value(pathToFile))->show();
static_cast<DaeViewer*>(m_LoadedFiles->value(pathToFile))->OpenGLWindow::show();
newViewer->setAnimating(true);
}
mdiSubWindowsCount++;
}
得到相同的结果:
我了解到QWidget和QWindow的显示方法不同。
我想在 myMdiArea 中查看我的 openGlWindow 但不知道如何调用显示方法
解决方案:
DaeViewer *newViewer=new DaeViewer(pathToFile);
m_MainMdiArea->addSubWindow(QWidget::createWindowContainer(newViewer))->show();
我有一个继承 QWindow 和 QOpenGLFunctions_3_3_Core 的 OpenGLWindow class,它正在打开 collada dae 文件(在简单项目中工作正常)。
我还有一个继承自 QWidgets 的 pdfViewer class。
我想在 MdiArea class 中显示这个 windows:
void MainViewer::CreateSubWindow(QString &pathToFile)
{
if (pathToFile.endsWith(".pdf"))
{
PdfViewer *newViewer=new PdfViewer(&pathToFile);
m_LoadedFiles->insert(pathToFile,newViewer);//this qhash save inform of current opened docs, i need it
m_MainMdiArea->addSubWindow(static_cast<PdfViewer*>(m_LoadedFiles->value(pathToFile)))->show();
}
if (pathToFile.endsWith(".dae"))
{
DaeViewer *newViewer=new DaeViewer(pathToFile);
m_LoadedFiles->insert(pathToFile, newViewer);
m_MainMdiArea->addSubWindow(m_LoadedFiles->value(pathToFile))->show();
static_cast<DaeViewer*>(m_LoadedFiles->value(pathToFile))->OpenGLWindow::show();
newViewer->setAnimating(true);
}
mdiSubWindowsCount++;
}
得到相同的结果:
我了解到QWidget和QWindow的显示方法不同。
我想在 myMdiArea 中查看我的 openGlWindow 但不知道如何调用显示方法
解决方案:
DaeViewer *newViewer=new DaeViewer(pathToFile);
m_MainMdiArea->addSubWindow(QWidget::createWindowContainer(newViewer))->show();