2012-05-31 66 views
1

我正在使用延遲加載的QTableView控件。在自定義QAbstractItemModel和QTableView中損壞的選擇

我有成千上萬條記錄需要顯示,當我使用簡單的QListWidget方法時,它會嚴重滯後。

現在我用化QAbstractItemModel具有以下data方法:

QVariant MyModel::data(const QModelIndex & index, int role) const 
{ 
    int col = index.column(); 
    int row = index.row(); 

    if (role == Qt::DecorationRole && col == 0) 
    {    
     return getIcon(row); // icons in the first column 
    } 
    else if (role == Qt::DisplayRole && col == 1) 
    { 
     return getText(row); // text in the second column    
    } 
    else 
    { 
     return QVariant(); 
    } 
} 

結果表視圖的偉大工程:它是快速和流暢。

雖然存在一個主要問題:選擇被徹底打破。

當我選擇一個項目/項目時,它們沒有突出顯示爲藍色,我需要滾動表格以便重新繪製並顯示藍色背景。 (我正在使用Windows 7.)

另外,我在選擇項目時看不到虛線的矩形。

我檢查過,表視圖的選擇模型不爲null。此外,我還研究了Qt中的其他一些模型實現,它們有類似的數據方法,但是它們沒有選擇問題。

我也試過從QAbstractTableItem和繼承,沒有。

感謝您的幫助。

回答

0

對不起這個愚蠢的問題...

我解決了這個通過刪除以下行:

tableView->setRootIndex(model->index(0, 0));