【问题标题】:Qt window resize problemQt窗口调整大小问题
【发布时间】:2011-09-26 16:32:56
【问题描述】:

在调整大小后重绘 QWidget 窗口时遇到问题。我试过update()repaint()adjustSize(),但似乎都遇到了同样的问题:只有部分窗口被重绘,导致底部和右侧的窗框不显示。窗口也没有完全调整大小。

以防万一,窗口位于QMdiArea 中。

谢谢。

        //  ... some subwidget resizing and moving.
        calibrationWindowUIs[activeWindow].layoutWidget2->move(QPoint(oldXLeft, 30 + height + 21));
        calibrationWindowUIs[activeWindow].layoutWidget1->move(QPoint(oldXRight, 30 + height + 21));

        //  Set window size.
        calibrationWindows[activeWindow]->setMinimumSize(calibrationWindowUIs[activeWindow].tabWidget->geometry().width() + 40, calibrationWindowUIs[activeWindow].tabWidget->geometry().height() + 40);
        calibrationWindows[activeWindow]->update();

注意:我是 Qt 新手;也许我的布局有问题?

编辑:我可能没有提供足够的信息。好吧,老实说,我仍然需要更深入地研究布局和相关材料。我在这里尝试做的是使用 Qt Designer 来设计窗口。我犯了一个愚蠢的错误:我没有为整个窗口使用整体父布局,而是用几个较小的布局破解了它,因此我必须单独移动和调整大小。查看 Qt Designer 屏幕(红色矩形是唯一的布局):。

发生的情况是,在右侧的帧中,我正在播放一个可以具有各种分辨率的视频剪辑。我希望框架根据此分辨率调整大小,这也意味着按钮和窗口必须相应地移动/调整大小。这就是调整窗口大小的地方。我确信有一个比我在这里做的更优雅的解决方案,但我在这里尝试处理其他几种情况,因此缺乏代码质量。

结果是,当我加载剪辑时,窗口尝试调整大小,但效果不佳;结果如下:

如果窗口被拖动,它会“弹出”到正确的大小;然而,与此同时,它看起来很丑。

还有几个问题:您是否使用 Qt Designer 来设计您的 UI?我发现以编程方式可以更好地控制界面。我在设计器中无法做的一件事是拥有一个由主小部件作为父级的布局,即相当于拥有以下代码:

QVBoxLayout* layout = new QVBoxLayout;
this->setLayout(layout);

放置在设计器中的布局似乎总是创建这个“layoutWidget”子小部件,您放置的布局是然后的父级。有什么办法吗?

【问题讨论】:

  • 你能想出一个不起作用的最小代码吗?
  • 只是为了确定,您确定这不是布局问题?例如,一个小部件不会调整大小,而不是一个绘图问题?截图或许也有帮助。
  • 看看你的一些代码会很方便。它对我有用。
  • 抱歉,不在。这是代码的最后几行。
  • 仍然很难说会发生什么。请检查您传递给 setMinimumSize 的宽度和高度是否正确,并尝试使用调整大小而不是更新。

标签: c++ qt resize window


【解决方案1】:

我们混合使用设计器和代码来创建布局,Qt 布局系统有时可能非常不直观。但我可能不会在一个设计器 ui 文件中布局一整套选项卡,我会为每个选项卡制作每个自己的小部件,然后通过代码或在设计器中通过提升到自定义类来组装它们。通过将所有选项卡的所有功能放在一个文件中,您几乎可以保证一个大而笨重的类,这为您提供了更好的职责分离。

当小部件在设计器中有子小部件时,您可以通过从上下文菜单中添加它来为其分配布局。确保未选择任何内容,然后单击要在其中创建布局的小部件的背景,选择布局,所有小部件子项都将被分配布局。

有助于创建布局层次结构。查看您的第一个屏幕截图,我可能会使用垂直布局,右侧项目的顶部和底部有间隔,按钮栏左右有间隔的水平布局,所有项目一起使用网格布局。如果没有垫片,您的物品将在窗口增大时扩展。垫片可以让您更好地控制调整大小时的行为。

【讨论】:

  • 第二段开启了它的思路
【解决方案2】:

您正在致电setMinimumSize()。没关系,但你也应该打电话给resize()

【讨论】:

    猜你喜欢
    • 2021-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多