27

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

替代文字
(来源:nerdland.net

每个单元格中那些看起来像复选框(但当我单击它们时不做任何事情)的东西到底是什么,我如何让它们消失?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。

4

2 回答 2

55

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

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

可能返回的角色 QVariantQt::CheckStateRole被 QTableView 误解了。

于 2010-03-07T16:31:17.133 回答
2

您是否碰巧在flags()中设置了Qt::ItemIsUserCheckable标志?

于 2010-03-07T16:11:09.690 回答