QTreeViewでアイテムの位置を変更する方法を教えてください。デフォルトでは、アイテムボックスの左端と中央に表示されますが、上に表示されるように変更するにはどうすればよいですか。
質問する
5334 次
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 に答える