QT как установить высоту строки QTreeWidget? - PullRequest
0 голосов
/ 11 мая 2019

Я просто хочу установить высоту всех QTreeWidgetItems в QTreeWidget на указанную высоту.Я понятия не имею, с чего начать, я не вижу ничего в QT Designer или на веб-странице спецификации QTreeWidget QT.

Какие-нибудь советы или примеры такого?Я предполагаю, что это что-то действительно простое, что я пропускаю или что-то в этом роде.Спасибо

Невозможно предоставить MVC, так как я понятия не имею, с чего начать, извините.

1 Ответ

1 голос
/ 12 мая 2019

Чтобы изменить строку элемента дерева,

создайте свой собственный настроенный 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);
        // ...
    }
};
...