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

Tyl*_*nry 25 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";
}
Run Code Online (Sandbox Code Playgroud)

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

MyTableModel testModel = new MyTableModel(this);
ui.testTable->setModel(testModel);
Run Code Online (Sandbox Code Playgroud)

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

使用Qt 4.6.

Elr*_*hir 51

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

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

Qt::CheckStateRoleQTableView 可能误解了返回的角色QVariant .

  • 很高兴帮助你:) Qt只是摇滚! (3认同)
  • 你帮了我一下! (2认同)
  • 感谢您的最后一句话:“可能返回的QVariant角色Qt :: CheckStateRole被QTableView误解了。” :)当我想为我的QTableView启用编辑时,我禁用了我的角色== Qt :: DisplayRole检查并得到了那些愚蠢的复选框。感谢您的评论,我现在明确检查Qt :: DisplayRole和Qt :: EditRole并在其他情况下返回QVariant()。 (2认同)