我正在尝试使用
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。
尝试将
MyTableModel::data()
更改为以下内容:
QVariant MyTableModel::data(const QModelIndex& index, int role) const
{
if (role == Qt::DisplayRole)
return "foo";
else
return QVariant();
}
可能返回的角色
Qt::CheckStateRole
的 QVariant 被 QTableView 误解了。
您是否碰巧在 flags() 中设置了 Qt::ItemIsUserCheckable 标志?