C++ QTableView没有';我什么也没表现出来

C++ QTableView没有';我什么也没表现出来,c++,qtableview,C++,Qtableview,我正在尝试使用QTableView创建一个窗口原型。它背后还没有任何数据库,但总有一天会有。我无法让tableview显示任何内容。我得到一个带空格的矩形。我在网上看了这些例子,就我所知,似乎做的每件事都是对的 我用GUI构建器设置了一个QTableView对象,然后在调用ui.setupUi之后立即添加了以下代码(这是) 有人有什么建议吗?我缺少什么?如果没有数据库,就不能使用QSqlTableModel。作为一种快速解决方法,您可以将其连接到一个临时内存中的sqlite表,该表可以通过两条语

我正在尝试使用
QTableView
创建一个窗口原型。它背后还没有任何数据库,但总有一天会有。我无法让tableview显示任何内容。我得到一个带空格的矩形。我在网上看了这些例子,就我所知,似乎做的每件事都是对的

我用GUI构建器设置了一个
QTableView
对象,然后在调用
ui.setupUi之后立即添加了以下代码(这是)


有人有什么建议吗?我缺少什么?

如果没有数据库,就不能使用
QSqlTableModel
。作为一种快速解决方法,您可以将其连接到一个临时内存中的sqlite表,该表可以通过两条语句创建。不过,对于原型设计,您可能应该使用
QStandardItemModel
。下面是一个完整的示例:

// https://github.com/KubaO/stackoverflown/tree/master/questions/dummymodel-37577922
#include <QtWidgets>

template <typename T> QStandardItem * newItem(const T val) {
  auto item = new QStandardItem;
  item->setData(val, Qt::DisplayRole);
  return item;
}

int main(int argc, char ** argv) {
   QApplication app{argc, argv};

   QStandardItemModel model;
   model.setColumnCount(3);
   model.setHorizontalHeaderLabels(QStringList{"Error Number", "Message", "Details"});

   auto newRow = []{ return QList<QStandardItem*>{
         newItem(1),
         newItem("Unable to perform snapshot"),
         newItem("Unable to perform snapshot. Please try again")};
   };
   model.appendRow(newRow());
   model.appendRow(newRow());

   QTableView view;
   view.setModel(&model);
   view.show();

   return app.exec();
}
//https://github.com/KubaO/stackoverflown/tree/master/questions/dummymodel-37577922
#包括
模板QStandardItem*newItem(const T val){
自动项=新QS标准项;
item->setData(val,Qt::DisplayRole);
退货项目;
}
int main(int argc,字符**argv){
QApplication app{argc,argv};
QS标准模型;
model.setColumnCount(3);
setHorizontalHeaderLabels(QStringList{“错误号”、“消息”、“详细信息”});
自动换行=[]返回QList{
新项目(1),
newItem(“无法执行快照”),
newItem(“无法执行快照。请重试”)};
};
model.appendRow(newRow());
model.appendRow(newRow());
QTableView视图;
view.setModel(&model);
view.show();
返回app.exec();
}

如果没有数据库,则不能使用
QSqlTableModel
。作为一种快速解决方法,您可以将其连接到一个临时内存中的sqlite表,该表可以通过两条语句创建。不过,对于原型设计,您可能应该使用
QStandardItemModel
。下面是一个完整的示例:

// https://github.com/KubaO/stackoverflown/tree/master/questions/dummymodel-37577922
#include <QtWidgets>

template <typename T> QStandardItem * newItem(const T val) {
  auto item = new QStandardItem;
  item->setData(val, Qt::DisplayRole);
  return item;
}

int main(int argc, char ** argv) {
   QApplication app{argc, argv};

   QStandardItemModel model;
   model.setColumnCount(3);
   model.setHorizontalHeaderLabels(QStringList{"Error Number", "Message", "Details"});

   auto newRow = []{ return QList<QStandardItem*>{
         newItem(1),
         newItem("Unable to perform snapshot"),
         newItem("Unable to perform snapshot. Please try again")};
   };
   model.appendRow(newRow());
   model.appendRow(newRow());

   QTableView view;
   view.setModel(&model);
   view.show();

   return app.exec();
}
//https://github.com/KubaO/stackoverflown/tree/master/questions/dummymodel-37577922
#包括
模板QStandardItem*newItem(const T val){
自动项=新QS标准项;
item->setData(val,Qt::DisplayRole);
退货项目;
}
int main(int argc,字符**argv){
QApplication app{argc,argv};
QS标准模型;
model.setColumnCount(3);
setHorizontalHeaderLabels(QStringList{“错误号”、“消息”、“详细信息”});
自动换行=[]返回QList{
新项目(1),
newItem(“无法执行快照”),
newItem(“无法执行快照。请重试”)};
};
model.appendRow(newRow());
model.appendRow(newRow());
QTableView视图;
view.setModel(&model);
view.show();
返回app.exec();
}

模型是否实际包含任何数据?你怎么知道你的插入成功了?显然,它没有成功。模型插入失败,出现“无法找到表错误”。QT是否支持我正在尝试的操作?使用QTableView而不使用真正的数据库?只是为了原型的目的而加载东西?模型实际上包含任何数据吗?你怎么知道你的插入成功了?显然,它没有成功。模型插入失败,出现“无法找到表错误”。QT是否支持我正在尝试的操作?使用QTableView而不使用真正的数据库?只是为了原型设计而加载东西?