如何在 QTreeWidget/QTreeView 中获取行高
Posted
技术标签:
【中文标题】如何在 QTreeWidget/QTreeView 中获取行高【英文标题】:How to GET row height in QTreeWidget/QTreeView 【发布时间】:2012-07-06 13:07:13 【问题描述】:我只想从 QTreeWidgetItem 中获取行高。我搜索了很多,但没有任何结果。
我想要做的是调整包含 QTreeWidget 的包装小部件的大小,以使树中的所有行都可见(或者说,它将是一个无底的扩展小部件)。
sizeHint 将始终返回 -1,因为我从未设置过它们。
【问题讨论】:
【参考方案1】:int QTreeWidget::rowHeight(const QModelIndex& index) const
应该够了。
【讨论】:
谢谢,但它是受保护的功能。是否有任何公共功能? 如果你只是显示文本,有办法通过查询当前的QStyle
,但我不知道任何细节。
它们确实包含其他小部件。我想我应该推导出来。【参考方案2】:
用给定的QTreeWidgetItem
调用此QTreeWidget
方法的结果的高度可以解决问题(对于QTreeWidget
——当然,这对QTreeView
不可用):
QRect QTreeWidget::visualItemRect (const QTreeWidgetItem* item) const;
【讨论】:
【参考方案3】:我相信这可以通过调整 QTreeWidget 上的 sizePolicy
和包含 QTreeWidget 本身的包装小部件来解决。
即将垂直属性的大小策略更改为 Expanding
。
【讨论】:
两者现在都在扩展,但似乎不起作用。我正在使用设计器,但我确实明确调用了 setSizePolicy。【参考方案4】:在 Designer 中将 QTreeView
提升为在 ctreeview.h
中定义的一些 CTreeView
类,如下所示:
#ifndef CTREEVIEW_H
#define CTREEVIEW_H
#include <QTreeView>
class CTreeView : public QTreeView
Q_OBJECT
public:
explicit CTreeView(QWidget *parent = Q_NULLPTR) : QTreeView(parent)
// or
// using QTreeView::QTreeView; // Use inherited constructors (C++11)
int rowHeight(const QModelIndex &index) const
return QTreeView::rowHeight(index);
;
#endif // CTREEVIEW_H
【讨论】:
以上是关于如何在 QTreeWidget/QTreeView 中获取行高的主要内容,如果未能解决你的问题,请参考以下文章