在下面的示例中,儘管應該有2列,但每個子項都只有1列。樹視圖列計數的混淆
(MyTreeModel是化QAbstractItemModel的子類。)
int MyTreeModel::columnCount(const QModelIndex &rParent /*= QModelIndex()*/) const
{
if (rParent.isValid())
{
return 2;
}
else
{
return 1;
}
}
在以下示例中,示出QTreeView則2列父項目和子項1列按預期方式。
int MyTreeModel::columnCount(const QModelIndex &rParent /*= QModelIndex()*/) const
{
if (rParent.isValid())
{
return 1;
}
else
{
return 2;
}
}
因此,子項目的列號似乎受其父項目的列號限制。這是標準行爲嗎?難道我做錯了什麼 ?
我猜'QTreeView'根據根項目值檢測所需的列數。出於性能原因,它不能遍歷整個樹來檢測列數。驗證它的最佳方法是選擇'QTreeView'的源代碼。 –
@MarekR是100%的權利。列計數僅爲根項目計算。如果你在任何一行中都需要較少的列 - 只需不填充它們並在:: index –
@Marek R中返回無效的QModelIndex它會遍歷整個樹來檢測列數(我使用斷點檢查它)。但是它不會調用MyTreeModel中的數據(..)函數來獲取大於父列數 – SRF