相关疑难解决方法(0)

如何在Qt中维护小部件的宽高比?

如何在Qt中维护窗口小部件的宽高比以及如何使窗口小部件居中呢?

user-interface qt widget aspect-ratio

32
推荐指数
4
解决办法
3万
查看次数

Qt:组织我的布局和 QSizePolicy

我的 Qt/C++ 程序的主窗口如下所示:

主窗口

正如您在图片中看到的,该窗口主要由以下部分组成:

  • 左边的菜单
  • 两块“画布”

我想要的描述很简单:我希望在调整窗口大小时,两个画布都占用尽可能多的空间,但仍然保持正方形(宽度=高度)。我一直在努力实现这一目标,但没有成功。

让我快速描述一下这些对象:

  • 窗口是Window我创建的派生 QWidget 的类。它有QGridLayout一个布局。
  • 窗口的布局具有三个小部件:左侧菜单LeftMenu *menu和画布Canvas *leftCanvas, *rightCanvas。和LeftMenu都是Canvas派生 QWidget 的自定义类。

(注意:左侧菜单实际上由 3 个不同的小部件(子菜单)组成,窗口还有一个状态栏和一个顶部菜单,但我认为这对我的问题并不重要。)

我一直在“玩”(一点也不开心)QSizePolicy等,试图让画布的大小表现得像我想要的那样(在窗口内尽可能大,但保持高度/宽度比= 1),不成功。让我描述一下我的最新尝试,以防对您有用(如果您已经知道我的问题的解决方案,则不必继续阅读):

我重写了方法heightForWidth()sizeHint()对于minimumSizeHint()Canvas 像这样:

class Canvas : public QWidget
{
    Q_OBJECT

    friend class Window;

public:
    explicit Canvas(Window* window);
    ...

private:
    void resizeEvent(QResizeEvent *resizeEvent) override;
    int heightForWidth(int width) const override {return width;}
    QSize sizeHint() const override
    {
        int size = std::min(width(), height());
        return …
Run Code Online (Sandbox Code Playgroud)

c++ layout qt resize

5
推荐指数
0
解决办法
5426
查看次数

标签 统计

qt ×2

aspect-ratio ×1

c++ ×1

layout ×1

resize ×1

user-interface ×1

widget ×1