2012-09-11 45 views

回答

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::TextAlignmentRoledata()

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你的標準項目。

+0

不,他沒有實現他自己的物品模型。如果他這樣做,你會知道如何做這樣一個簡單的事情。 – Blood

+0

我更新了我的答案,以解釋使用Qt的內置模型 – ar31

+0

我必須在QTreeView上使用並讓我看看我可以實現QItemDelegate。 – bhaskar

相關問題