4
您可以讓我知道如何在QTreeView中改變項目的位置。默認情況下,該項目顯示在最左邊和項目框的中心。但是我應該如何改變它,這樣它會在頂部QTreeview:如何更改文本項目的defalut位置
您可以讓我知道如何在QTreeView中改變項目的位置。默認情況下,該項目顯示在最左邊和項目框的中心。但是我應該如何改變它,這樣它會在頂部QTreeview:如何更改文本項目的defalut位置
使用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();
}
樹視圖現在應該自動對齊項目到最佳。
如果要進一步定製外觀,here是由QTreeView
使用的角色。對於更多的定製,我認爲你必須實現你自己的QTreeView
子類。
使用QStandardItemModel
如果您沒有實現自己的模式,但使用QStandardItemModel
你必須將它們添加到模型之前調用 setTextAlignment(Qt::Alignment alignment)
與Qt::AlignTop
你的標準項目。
不,他沒有實現他自己的物品模型。如果他這樣做,你會知道如何做這樣一個簡單的事情。 – Blood
我更新了我的答案,以解釋使用Qt的內置模型 – ar31
我必須在QTreeView上使用並讓我看看我可以實現QItemDelegate。 – bhaskar