我在我正在研究的Qt / MySQL ++项目中有一个关于我的矢量迭代方法的问题。
到目前为止,我一直在使用for循环来迭代它们,并且在C ++中是一个初学者,并没有意识到普遍接受的方法是使用vector :: iterator。我一直试图看到一种方法可以将它们转换为这种模型,但我有点卡住了。我的代码如下:
(连接器是我的自定义数据库连接类的一个实例)
mysqlpp::StoreQueryResult res = connector->getResults(searchTerm);
int stock = res.field_num("stock");
if(res.num_rows() > 0)
{
tblStock->setRowCount(res.num_rows());
for(size_t i = 0; i < res.num_rows(); i++)
{
tblStock->setItem(i, 0,
new QTableWidgetItem(QString(res[i][stock].c_str())));
}
}
我的问题是我看不到使用vector :: iterator而不是增量size_t的方法,因为我使用i
来定义QTableWidgetItem的设置位置。但是,使用两者似乎都是荒谬的。
有什么想法吗?
非常感谢任何人和所有人!
X-T
更新:更改了我的程序以使用QSql对象和tableView,而不是tableWidget,它们都运行得非常好!感谢任何花时间阅读问题的人!
答案 0 :(得分:1)
您是否有任何严重的理由不使用QSql?我认为QSqlQueryModel + QTableView可以在没有任何向量和迭代器的情况下解决您的问题。一个小例子,直接来自Qt帮助:
QSqlQueryModel *model = new QSqlQueryModel;
model->setQuery("SELECT name, salary FROM employee");
model->setHeaderData(0, Qt::Horizontal, tr("Name"));
model->setHeaderData(1, Qt::Horizontal, tr("Salary"));
QTableView *view = new QTableView;
view->setModel(model); // binding model to view
view->show();
您可能必须阅读有关Qt模型/视图类和QSql的内容以完全理解此示例,但这值得一读。我认为你读Qt Reference会没问题,它非常详细。