【发布时间】:2012-07-06 13:07:13
【问题描述】:
我只想从 QTreeWidgetItem 中获取行高。我搜索了很多,但没有任何结果。
我想要做的是调整包含 QTreeWidget 的包装小部件的大小,以使树中的所有行都可见(或者说,它将是一个无底的扩展小部件)。
sizeHint 将始终返回 -1,因为我从未设置过它们。
【问题讨论】:
标签: qt qtreewidget
我只想从 QTreeWidgetItem 中获取行高。我搜索了很多,但没有任何结果。
我想要做的是调整包含 QTreeWidget 的包装小部件的大小,以使树中的所有行都可见(或者说,它将是一个无底的扩展小部件)。
sizeHint 将始终返回 -1,因为我从未设置过它们。
【问题讨论】:
标签: qt qtreewidget
int QTreeWidget::rowHeight(const QModelIndex& index) const
应该够了。
【讨论】:
QStyle,但我不知道任何细节。
用给定的QTreeWidgetItem 调用此QTreeWidget 方法的结果的高度可以解决问题(对于QTreeWidget——当然,这对QTreeView 不可用):
QRect QTreeWidget::visualItemRect (const QTreeWidgetItem* item) const;
【讨论】:
我相信这可以通过调整 QTreeWidget 上的 sizePolicy 和包含 QTreeWidget 本身的包装小部件来解决。
即将垂直属性的大小策略更改为 Expanding。
【讨论】:
在 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
【讨论】: