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();
}

ツリービューで、アイテムが自動的に一番上に配置されます。

外観をさらにカスタマイズしたい場合は、で使用される役割を次に示しますQTreeViewQTreeViewさらにカスタマイズするには、独自のサブクラスを実装する必要があると思います。

QStandardItemModelの使用

独自のモデルを実装していないが使用した場合は、モデルに追加する前に、標準のアイテムをQStandardItemModel呼び出す必要があり ます。setTextAlignment(Qt::Alignment alignment)Qt::AlignTop

于 2012-09-11T12:34:11.017 に答える