【问题标题】:Prevent QDockWidget autosizing behaviour防止 QDockWidget 自动调整大小行为
【发布时间】:2016-04-05 19:37:40
【问题描述】:

Qt 5.5.0

在我的应用程序中,我有一个 QGraphicsView 作为主要小部件和一个 QDockWidget 作为属性。 目标是让用户在图形视图中选择一个项目,并根据项目显示该项目的适当属性。

我通过拥有一个包含每个属性小部件的布局的属性管理器小部件来实现这一点。我连接了信号和插槽以获取当前选定的项目,然后显示()我需要的小部件并隐藏()其余部分。

这很好用!但是,在选择不同的项目时,码头基于所示的窗口小部件缩小或增长。这非常刺耳,而且相当烦人。但问题是,当用户手动调整扩展坞的大小时,它会保持该大小。我希望保持的大小是默认的,而不是这种自动调整大小的行为。


我尝试过的事情:

我已尝试更改扩展坞和主窗口的 sizePolicy():无效。

我为我的属性管理器设置了一个最小尺寸,这确实可以防止在显示一组较小的属性时停靠栏缩小。但是,我仍然希望用户能够根据需要将扩展​​坞缩小到更小的尺寸,而这种方法可以防止这种情况......


结论:

当用户调整扩展坞的大小时,是否设置了一个标志或其他东西来告诉它保持该大小?如果是这样,有没有办法手动设置它?

我还没有尝试继承 QDockWidget 或 QMainWindow。是否有我可以重写以实现正确行为的方法?

感谢您的帮助!

【问题讨论】:

  • This 可能会给你一些信息。
  • @LogicStuff 非常感谢,我需要的是 QSizePolicy::Ignored :)
  • 如果我有更多的支持 - 只是我需要的信息。

标签: c++ qt qdockwidget


【解决方案1】:

所有必要的就是打电话

setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Expanding);

在我的属性管理器小部件(QDockWidget 的中心小部件)的构造函数中

我还重载了 sizeHint() 函数以返回可观的默认大小。

【讨论】:

    【解决方案2】:

    首先,创建您的停靠小部件:

    QDockWidget *dock = new QDockWidget;
    

    现在将大小政策设置为停靠的小部件。

    如果码头是垂直的:

    dock->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Expanding);
    

    如果码头是水平的:

    dock->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Ignored);
    

    将小部件设置为停靠:

    QWidget *myWidget = new QWidget;
    dock->setWidget(myWidget);
    

    现在将大小政策设置为停靠的小部件。

    如果码头是垂直的:

    dock->widget()->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Expanding);
    

    如果码头是水平的:

    dock->widget()->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Ignored);
    

    最后,将停靠栏添加到主窗口:

    如果码头是垂直的:

    mainWindow->addDockWidget(Qt::LeftDockWidgetArea, dock);
    mainWindow->resizeDocks({dock}, {0}, Qt::Horizontal);
    

    如果码头是水平的:

    mainWindow->addDockWidget(Qt::TopDockWidgetArea, dock);
    mainWindow->resizeDocks({dock}, {0}, Qt::Vertical);
    

    【讨论】:

      猜你喜欢
      • 2011-01-22
      • 2012-11-16
      • 1970-01-01
      • 2012-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-02
      • 2014-09-04
      相关资源
      最近更新 更多