【问题标题】:How to GET row height in QTreeWidget/QTreeView如何在 QTreeWidget/QTreeView 中获取行高
【发布时间】:2012-07-06 13:07:13
【问题描述】:

我只想从 QTreeWidgetItem 中获取行高。我搜索了很多,但没有任何结果。

我想要做的是调整包含 QTreeWidget 的包装小部件的大小,以使树中的所有行都可见(或者说,它将是一个无底的扩展小部件)。

sizeHint 将始终返回 -1,因为我从未设置过它们。

【问题讨论】:

    标签: qt qtreewidget


    【解决方案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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-03-06
        • 1970-01-01
        • 2013-09-17
        • 2019-09-29
        • 1970-01-01
        • 2014-06-12
        • 2015-11-20
        • 1970-01-01
        相关资源
        最近更新 更多