QT如何设置QTreeWidget行高?

时间:2019-05-11 17:13:04

标签: c++ qt c++17

我只是想将QTreeWidget中所有QTreeWidgetItems的高度设置为指定的高度。我不知道从哪里开始,在QT Designer或QTreeWidget QT规范网页上看不到任何内容。

有任何技巧或例子吗?我猜这是我忽略的非常简单的东西。谢谢

无法提供MVC,因为我不知道从哪里开始感到抱歉。

2 个答案:

答案 0 :(得分:1)

为了修改树项目行,

创建自己的自定义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;
    }
};

然后在您的班级中,将custome委托项设置为树,

并根据需要更改行高:

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);
        // ...
    }
};

答案 1 :(得分:0)

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

QTreeWidget::item{
    height:25px;//your preferred height
}