QTableView在每个单元格中都有不需要的复选框

时间:2010-03-07 15:21:32

标签: c++ qt qt4 qtableview

我刚刚开始使用Qt编程,我正在尝试使用QTableView控件创建一个简单的表格数据布局,其中我自己创建的模型类继承自QAbstractTableModel。出于某种原因,我的表格视图最终看起来像这样:

alt text http://users.nerdland.net/tyler/files/pics/qtableview_checkboxes.png

在每个单元格中看起来像复选框(但在我点击它们时什么都不做)的东西是什么,我怎么让它们消失?我没有更改任何QTableView属性,除了对象的名称。

如果重要,我的模型代码很简单:

MyTableModel::MyTableModel(QObject* parent)
  : QAbstractTableModel(parent)
{
}

MyTableModel::~MyTableModel()
{
}

int MyTableModel::rowCount(const QModelIndex& parent) const
{
  return 1000; 
}

int MyTableModel::columnCount(const QModelIndex& parent) const
{
  return 5;
}

QVariant MyTableModel::data(const QModelIndex& index, int role) const
{
  return "Foo";
}

对话框UI是在Qt Designer中构建的,在对话框的类中,我将模型附加到视图中,如下所示:

MyTableModel testModel = new MyTableModel(this);
ui.testTable->setModel(testModel);

除此之外,我不对ui.testTable执行任何操作。

使用Qt 4.6。

2 个答案:

答案 0 :(得分:48)

尝试将MyTableModel::data()更改为以下内容:

QVariant MyTableModel::data(const QModelIndex& index, int role) const
{
    if (role == Qt::DisplayRole)
        return "foo";
    else
        return QVariant();
}

QTableView可能误解了角色Qt::CheckStateRole返回的QVariant。

答案 1 :(得分:2)

您是否有可能在Qt::ItemIsUserCheckable中设置flags()标志?