我有1个Qt Creator实例打开,有2个浮动窗口(在新窗口中打开).这给了我总共3个“编辑窗口”.每个“编辑器窗口”有3个水平分割,给我-9个打开的文档.我有这个分散在3个监视器上,如 .
我通常休眠我的工作站,但如果我遇到崩溃并且必须重新启动或者我在另一台机器上打开项目,我会丢失浮动窗口和分割中的文档以及这些文档中滚动的位置,我必须手动启动重新安排一切.我正在寻找保存和回忆这个浮动获胜位置和编辑器视图拆分项目负载数据.
为了解决这个问题,我一直在从源代码构建Qt Creator.我的第一个任务是移动初始(或浮动)窗口.我已经找到了一些东西,但我找不到EditorManager的“父窗口小部件”,这是上面提到的“编辑管理器”.因此,只是编辑经理移动,这显然是我不想要的.如何访问和移动初始父窗口和浮动窗口?
//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(); } }从Qt 5开始,所有QWidgets都有一个指向包含窗口的指针.
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.
希望有所帮助.