如何设置QTreeWidget行高

问题描述 投票:0回答:2

我想将QTreeWidget中所有QTreeWidgetItems的高度设置为指定高度。我在 Qt Designer 或 QTreeWidget 类文档中看不到任何内容。

c++ qt qtreewidget
2个回答
2
投票

为了修改树项目行,

创建您自己的自定义

QItemDelegate
并覆盖 sizeHint() 函数。

例如:

class ItemDelegate : public QItemDelegate
{
private:
    int m_iHeight;
public:
    ItemDelegate(QObject *poParent = Q_NULLPTR, int iHeight = -1) :
        QItemDelegate(poParent), m_iHeight(iHeight)
    {
    }

    void SetHeight(int iHeight)
    {
        m_iHeight = iHeight;
    }

    // Use this for setting tree item height.
    QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const
    {
        QSize oSize = QItemDelegate::sizeHint(option, index);

        if (m_iHeight != -1)
        {
            // Set tree item height.
            oSize.setHeight(m_uHeight);
        }

        return oSize;
    }
};

然后在您的班级中,将自定义委托项设置到树中,

并根据需要更改行高:

class YourClass
{
private:
    QTreeWidget *m_poTreeWidget;
    ItemDelegate m_oItemDelegate;
public:
    void InitTree()
    {
        // do stuff
        m_oItemDelegate.SetHeight(30); // set row height
        m_poTreeWidget->setItemDelegate(&m_oItemDelegate);
        // ...
    }
};

2
投票

也许您可以尝试在 QtreeWidget 中添加以下样式表:

QTreeWidget::item{
    height:25px;//your preferred height
}
© www.soinside.com 2019 - 2024. All rights reserved.