4

您能否让我知道如何在 QTreeView 中更改项目的位置。默认情况下,项目显示在最左侧和项目框的中心。但是我应该如何更改它以使其显示在顶部

4

1 回答 1

4

使用 Qt 内置项目模型

如果您正在使用例如QFileSystemModel,您必须从它继承并覆盖data()行为:

class MyFileSystemModel : public QFileSystemModel {
public:
  QVariant data(const QModelIndex & index, int role = Qt::DisplayRole) const {
    if (role == Qt::TextAlignmentRole)
      return Qt::AlignTop; //maybe different result depending on column/row
    else
      return QFileSystemModel::data(index, role);
  }

然后改用那个类。

使用自己的项目模型

如果您实现了自己的项目模型,您所要做的就是Qt::TextAlignmentRole处理data()

QVariant MyTreeModel::data (const QModelIndex &index, int role) const {
  if (role == Qt::TextAlignmentRole)
    return Qt::AlignTop; //maybe different result depending on column/row

  //handle other roles

  return QVariant();
}

树视图现在应该自动将项目对齐到顶部。

如果您想进一步自定义外观,以下QTreeView. 对于更多定制,我认为您必须实现自己的QTreeView子类。

使用 QStandardItemModel

如果您没有实现自己的模型但使用了您必须在将它们添加到模型之前QStandardItemModel调用 您setTextAlignment(Qt::Alignment alignment)的标准项目。Qt::AlignTop

于 2012-09-11T12:34:11.017 回答