我是 Qt 模型/视图框架的初学者。我在使用带有 QTableView 的 QAbstractTableModel 子类 (MyModel) 时遇到问题。创建 MyModel 对象后,我想将其设置为 2 行和 2 列。我有一个初始化函数,它设置所有类变量,然后发出 dataChanged() 信号,但视图仍然没有显示任何内容。
class MyModel : QAbstractTableModel
{
public:
MyModel();
Initialise(double **a, int r, int c);
private:
int row;
int column;
double **array;
}
MyModel::Initialise(double **a, int r, int c)
{
array = a;
row = r;
column = c;
emit dataChanged(index(0, 0), index(r - 1, c - 1));
}
我已经重新实现了只读访问所需的所有功能。但我仍然得到一个空白窗口。出于说明目的在记事本中创建了上述代码,因此请忽略语法错误。我在 Qt SDK 中找不到任何用于从 QAbstractTableModel 创建自定义模型的示例。所以请让我知道将数据初始化为模型的正确方法是什么。
编辑:
QVariant TableModel::data(const QModelIndex &index, int role) const
{
if(!index.isValid())
return QVariant();//currently it is returning from here, why???
switch(role)
{
case Qt::DisplayRole:
{
if(index.column()==0)
return QString::number(array[index.row()][index.column()]);
break;
}
}
}