Qt / MySQL ++ /向量迭代问题

时间:2011-04-17 18:50:57

标签: c++ vector qt4 mysqlpp

我在我正在研究的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,它们都运行得非常好!感谢任何花时间阅读问题的人!

1 个答案:

答案 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会没问题,它非常详细。