【问题标题】:QT how to set QTreeWidget row height?QT如何设置QTreeWidget行高?
【发布时间】:2019-09-29 05:56:21
【问题描述】:

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

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

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

【问题讨论】:

  • 那些函数似乎只获取行高而不设置它们?

标签: c++ qt c++17


【解决方案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;
    }
};

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

并根据需要更改行高:

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
    }
    

    【讨论】:

      猜你喜欢
      • 2015-04-14
      • 2011-02-08
      • 2016-02-14
      • 2013-09-17
      • 1970-01-01
      • 2012-07-06
      • 2021-04-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多