【问题标题】:Is there a simple way to restore widget sizes in Qt?有没有一种简单的方法可以在 Qt 中恢复小部件的大小?
【发布时间】:2009-03-25 09:28:12
【问题描述】:

我正在寻找一种在 Qt 应用程序中保留窗口大小的方法。

我已经看到可以对每个小部件使用以下方法:

saveGeometry()

但实际上,我不觉得这是一种令人满意的方法。有setAutosaveGeometry(True)之类的吗?

我特别在寻找一种方法来存储表格列的宽度。

【问题讨论】:

    标签: qt qtgui


    【解决方案1】:

    QHeaderView 类还有两种方法可以在 QByteArray 中保存和恢复其状态:saveState() 和 restoreState()

    可以通过 Horizo​​ntalHeader() 和 verticalHeader() 方法访问表格视图的标题。

    【讨论】:

      【解决方案2】:

      saveGeometry 返回一个 QByteArray 值,您需要将它存储在某个地方。

      例子:

      void MainWindow::closeEvent(QCloseEvent *event){
          QSettings 设置;
      
          settings.setValue("几何", saveGeometry());
      }

      要读取几何图形,请调用 restoreGeometry 函数:

      MainWindow::MainWindow(QWidget *parent):QMainWindow(parent) {
          [...]
      
          QSettings 设置;
      
          restoreGeometry(settings.value("geometry").toByteArray());
      
          [...]
      }

      要了解有关窗口几何形状的更多信息,请阅读the documentation

      【讨论】:

      • 我已经知道了。我正在寻找一种方法来恢复 QTableView 的布局,而不仅仅是窗口几何图形。
      【解决方案3】:

      请参阅Restoring a Window's Geometry 上的 Qt 文档。

      【讨论】:

      • 这不存储窗口子项的几何形状。 (但并非所有这些都应该存储......)
      猜你喜欢
      • 2011-04-22
      • 1970-01-01
      • 1970-01-01
      • 2011-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多