c++ - QT如何设置QTreeWidget的行高?

标签 c++ qt c++17

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

有这样的提示或示例吗?我猜这是我忽略的非常简单的事情。谢谢

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

最佳答案

为了修改树项行,

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

然后在你的类中,将客户委托(delegate)项设置为树,

并根据需要更改行高:

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

关于c++ - QT如何设置QTreeWidget的行高?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56092583/

相关文章:

c++ - 如何确定 'sequenced before'其他人是什么?

c++ - 你会推荐我什么项目来加快 C++ 的速度

c++ - 打印即时创建的负数会在 C++ 中给出错误的输出

c++ - 错误 `QObject` 子类和复制构造函数 : `QObject::QObject(const QObject&) is private`

c++ - qt 文件读取行总是在第二次读取时返回 -1

c++ - 为什么删除此类型别名中的 const 限定符?

c++ - 如何使用 TinyXML 保存对 XML 文件的更改?

c++ - 如何与QT QSqlRelationalTableModel中的mysql表建立关系?

c++ - 使用 std::atomic 中的方法时是否隐式调用 load()?

c++ - 如何返回带有捕获的 unique_ptr 的 lambda