【发布时间】:2019-09-29 05:56:21
【问题描述】:
我只是想将 QTreeWidget 中所有 QTreeWidgetItems 的高度设置为指定的高度。我不知道从哪里开始,我在 QT Designer 或 QTreeWidget QT 规范网页中看不到任何内容。
有任何提示或示例吗?我猜这是我忽略的非常简单的东西。谢谢
无法提供 MVC,因为我不知道从哪里开始抱歉。
【问题讨论】:
-
那些函数似乎只获取行高而不设置它们?
我只是想将 QTreeWidget 中所有 QTreeWidgetItems 的高度设置为指定的高度。我不知道从哪里开始,我在 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;
}
};
然后在您的班级中,将客户委托项目设置为树,
并根据需要更改行高:
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);
// ...
}
};
【讨论】:
也许您可以尝试在 QtreeWidget 中添加以下样式表:
QTreeWidget::item{
height:25px;//your preferred height
}
【讨论】: