qt - 如何在 Qt Creator src 中获取和移动 EditorManager 的父窗口?

标签 qt qt-creator

我打开了 1 个 Qt Creator 实例,其中有 2 个 float 窗口(在新窗口中打开)。这给了我总共 3 个“编辑器窗口”。每个“编​​辑器窗口”有 3 个水平分割,给我 +-9 个打开的文档。我把它分布在 3 台这样的显示器上 this .

我通常使我的工作站休眠,但如果我崩溃并必须重新启动,或者我在另一台机器上打开项目,我会丢失 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/

相关文章:

C++如何让两个程序进行通信?

css - QMessageBoxes 在 OSX 中有非常奇怪的行为

c++ - 从代码访问在 UI 中创建的 Qt 布局?

qt - 如何在 qt creator 中指定不同的工作目录?

QtCreator 新项目 Qt Quick Controls vs. Qt Quick

c++ - 如何将 QVideoWidget 设置为全屏并在全屏小部件中设置音量 slider ?

qt - 什么是 arm-linux-gcc 以及如何在 ubuntu 中安装它

c++ - 如果 QTimer 不停止会发生什么

c++ - 程序无法在其他 Windows 机器上正常运行

c++ - 如何为 linux 机器创建 Qt 可执行文件