gpt4 book ai didi

Qt 小部件调整为宽度 = 256,而它不应该

转载 作者:行者123 更新时间:2023-12-02 20:04:59 25 4
gpt4 key购买 nike

表单设置:
QSplitter (在图像上突出显示)包含 QTreeWidget (左)和QTableWidget (对):



QSplitter 中这两个小部件的非默认属性:

  • QTreeWidget
    最小尺寸/宽度 = 150
  • QTableWidget
    最小尺寸/宽度 = 300
    sizePolicy/水平拉伸(stretch) = 1

  • 基本上,上面的设置指定了这两个组件的最小宽度,并且 QTableWidget是在表单调整大小期间会改变其宽度的那个。
    右侧的按钮放在 QVBoxLayout它的大小是固定的。

    问题:

    调整表单大小时 QTreeWidget的宽度从最小 150 到未知 256,然后才 QTableWidget开始增长,而我预计 QTreeWidget完全不增加宽度,因为 QTableWidget是一个,将水平拉伸(stretch)设置为 1。

    请注意,这与 QSplitter 无关,因为当我将这两个小部件放在 QHBoxLayout 中时也会发生同样的情况反而。

    更新:

    设置 QTreeWidget maximumSize/Width 为 150(与 minimumSize/Width 相同)以避免调整此小部件的大小,提供以下内容:


    QTreeWidget现在固定为 150,但是当调整窗口大小时,两个小部件之间会出现空白。这个差距增长到256-150=106,然后 QTableWidget开始扩大。
    基本上结果是相似的,但这次是 QTreeWidget 所占用的区域现在致力于这个空白。

    我开始觉得这可能是一个 Qt 错误。

    技术信息:
  • Ubuntu 10.04 (Lucid Lynx) x86_64
  • GCC 4.4.3
  • Qt 4.6.2
  • 最佳答案

    256 宽度的尺寸提示被硬编码为 QAbstractScrollArea . (为什么?我不知道。)这是来自 qabstractscrollarea.cpp 的方法:

    QSize QAbstractScrollArea::sizeHint() const
    {
    return QSize(256, 192);
    #if 0
    Q_D(const QAbstractScrollArea);
    int h = qMax(10, fontMetrics().height());
    int f = 2 * d->frameWidth;
    return QSize((6 * h) + f, (4 * h) + f);
    #endif
    }

    我不确定 0 发生了什么宏......也许有人开始实现非硬编码宽度但没有完成,这是为了测试?

    无论如何,您可以通过子类化 QTreeView 来解决它。并实现您自己的尺寸提示,例如:
    class MyTreeView : public QTreeView {
    public:
    explicit MyTreeView(QWidget *parent = NULL) : QTreeView(parent) { }
    QSize sizeHint() const {
    return QSize(150, 192);
    }
    };

    关于Qt 小部件调整为宽度 = 256,而它不应该,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8546777/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com