我打开了 1 个 Qt Creator 实例,其中有 2 个 float 窗口(在新窗口中打开)。这给了我总共 3 个“编辑器窗口”。每个“编辑器窗口”有 3 个水平分割,给我 +-9 个打开的文档。我把它分布在 3 台这样的显示器上 .
我通常使我的工作站休眠,但如果我崩溃并必须重新启动,或者我在另一台机器上打开项目,我会丢失 float 窗口和拆分中的文档以及这些文档中滚动的位置,我必须手动启动过度重新安排一切。 我希望在项目加载时保存和调用此 float 获胜位置和编辑器 View 拆分数据 .
为了解决这个问题,我一直在从源代码构建 Qt Creator。我的第一个任务是移动初始(或 float )窗口。我已经找到了一些东西,但是 我找不到 EditorManager 的“父小部件”,它是上面提到的“编辑器管理器” .因此,只有编辑经理移动,这显然是我不想要的。 如何访问和移动初始父窗口和 float 窗口?
//editormanager.cpp
void EditorManagerPrivate::restoreFloatingWindows()
{
for (int i = 0; i < d->m_editorAreas.size(); ++i)
{
d->m_editorAreas[i]->move(100, 100); // don't want to move this
d->m_editorAreas[i]->parentWidget()->move(100, 100); //no effect
qDebug() << "pos" << d->m_editorAreas[i]->pos();
qDebug() << "pos parentWidget" << d->m_editorAreas[i]->parentWidget()->pos();
}
}
最佳答案
全部 QWidgets
从 Qt 5 开始,有一个指向包含窗口的指针。
http://doc.qt.io/qt-5/qwidget.html#window
就存储和调用几何和状态而言,这些方法非常有用:
http://doc.qt.io/qt-5/qwidget.html#saveGeometry
http://doc.qt.io/qt-5/qwidget.html#restoreGeometry
http://doc.qt.io/qt-5/qmainwindow.html#saveState
http://doc.qt.io/qt-5/qmainwindow.html#restoreState
使用时 QSettings
,启动一个数组,然后为每个窗口推送这些值。或者在加载项目时,提取每个值并使用适当的 setter 。
希望有帮助。
关于qt - 如何在 Qt Creator src 中获取和移动 EditorManager 的父窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32227872/