您能否让我知道如何在 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 回答