2017-04-12 93 views
1

我想使用QTableView。這是一些測試的結果。Qt TableView刪除奇怪的盒子

TableView with 4 cells, every cell contains a misterious checkbox-like box

正如你可以看到,有一些箱子中的每一個細胞,內容爲「123」之前。這些盒子是什麼,我該如何刪除這些盒子?

我想我需要改變QTableView的一些屬性,但是我沒有找到與這些神祕盒子有關的屬性。 這裏是一些代碼,我用:

MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) 
{ 
    //... 

    TVLDataModel* model = new TVLDataModel(); 
    ui->uxTVLView->setModel(model); 
} 

TVLDataModel(繼承QAbstractTableModel)

int TVLDataModel::rowCount(const QModelIndex &parent) const 
{ 
    return 2; 
} 

int TVLDataModel::columnCount(const QModelIndex &parent) const 
{ 
    return 2; 
} 

QVariant TVLDataModel::data(const QModelIndex &index, int role) const 
{ 
    return 123; 
} 

回答

3

你應該改變你的QVariant TVLDataModel::data(const QModelIndex &index, int role) const函數來表示您正在使用的角色。例如Qt的:: EditRole,QT :: BackgroundRole等

例如:

QVariant TVLDataModel::data(const QModelIndex &index, int role) const 
{ 
    switch(role){ 
     case Qt::EditRole : 
     case Qt::DisplayRole :  
      return 123; 

     default : break; 
    } 
    return QVariant(); 
} 

否則,你會爲每ItemDataRole返回123。

+3

是的,正是這個問題。你本質上是返回(Qt :: CheckState)123爲Qt :: CheckStateRole。 – milianw

0

這些「奇怪」框是複選框。你的模型表明每個項目都是可檢查的。