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

C++ QTableView在每个单元格中都有不需要的复选框,c++,qt,qt4,qtableview,C++,Qt,Qt4,Qtableview,我刚刚开始使用Qt编程,我正在尝试使用QTableView控件创建一个简单的表格数据布局,该控件带有我自己创建的模型类,该模型类继承自QAbstractTableModel。出于某些原因,我的表视图最终看起来如下所示: MyTableModel testModel = new MyTableModel(this); ui.testTable->setModel(testModel); (来源:) 在每个单元格中,那些看起来像复选框(但单击它们时什么也不做)的东西到底是什么?我如何使它们

我刚刚开始使用Qt编程,我正在尝试使用
QTableView
控件创建一个简单的表格数据布局,该控件带有我自己创建的模型类,该模型类继承自
QAbstractTableModel
。出于某些原因,我的表视图最终看起来如下所示:

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

(来源:)

在每个单元格中,那些看起来像复选框(但单击它们时什么也不做)的东西到底是什么?我如何使它们消失?除了对象的名称外,我没有更改任何
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
上执行任何操作


使用Qt4.6。

您是否碰巧在中设置了标志

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

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

可能是QTableView误解了为role返回的QVariant
Qt::CheckStateRole

否,即使我覆盖了
标志
,返回'QAbstractTableModel::flags(index)&~Qt::ItemIsUserCheckable;`,复选框保持不变。完美!非常感谢。我想我不应该只是忽略我还没学过的参数……很高兴能帮助你:)Qt简直就是石头!感谢您的最后一句话“可能是QTableView误解了返回的QVariant for role Qt::CheckStateRole。”:)因为我想为我的QTableView启用编辑,我禁用了我的role==Qt::DisplayRole复选框,并得到了那些愚蠢的复选框。感谢您的评论,我现在显式地检查Qt::DisplayRole和Qt::EditRole,并在其他情况下返回QVariant()。如果有人在QVariant版本2中使用pyqt,而其中根本没有类QVariant,则返回None就可以了