i具有扩展QAbstractTableModel
的自定义表模型。我已经实施了data()
,rowCount()
和columnCount()
。
这是我的模型:
point_data_view_model::point_data_view_model(QObject *parent) :
QAbstractTableModel(parent)
{
}
int point_data_view_model::rowCount(const QModelIndex & /*parent*/) const
{
return 2;
}
int point_data_view_model::columnCount(const QModelIndex & /*parent*/) const
{
return 3;
}
QVariant point_data_view_model::data(const QModelIndex &index, int role) const
{
if (role == Qt::DisplayRole)
{
return QString("Row%1, Column%2")
.arg(index.row() + 1)
.arg(index.column() +1);
}
return QVariant();
}
但是,当我想以我的表格显示表视图时,什么也不会显示。
这是表单的构造函数:
SelectWindow::SelectWindow(QWidget *parent) :
QMainWindow(parent)
,ui(new Ui::SelectWindow)
{
ui->setupUi(this);
point_data_view_model myModel;
ui->tableView->setModel(&myModel);
myModel.timerHit();
ui->tableView->show();
}
换句话说,我的数据功能未调用。
我缺少什么?
point_data_view_model myModel;
这是一个大问题。myModel
是该构造函数的本地,当功能退出时将被破坏。您需要将该模型存储在持续存在的地方,只要您需要使用它 - SelectWindow
的成员变量应该是合适的。
您正在堆栈上创建myModel
。致电ui->tableView->show();
后立即删除。因此,该视图失去了模型,并且没有机会致电data
。您应该使用new
创建myModel
:
point_data_view_model* myModel = new point_data_view_model();