如何在 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 中获取行高的主要内容,如果未能解决你的问题,请参考以下文章

如何在图像中找到明亮区域(以及如何在图像中找到阴影区域)

在QGIS中如何添加天地图的WMTS

如何在表单提交后保留文本(如何在提交后不删除自身?)

如何在异步任务中调用意图?或者如何在 onPostExecute 中开始新的活动?

在 Avkit 中如何使用这三行代码,以及如何将音乐静音”

如何在 JDBC 中启动事务?