2011-04-17 75 views
0

我有一个关于我正在处理的Qt/MySQL ++项目中的向量迭代方法的问题。Qt/MySQL ++/vector迭代问题

到目前为止,我一直在使用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()))); 
    } 
    }

我的问题是,我不能明白的方式只使用矢量::迭代器,而不是增量size_t,因为我使用i来定义在哪里设置QTableWidgetItem。尽管如此,使用这两者绝对是荒谬的。

任何想法?

非常感谢任何人和大家!

X-T

UPDATE:改变了我的程序使用QSQL对象,和的tableView的,而不是tableWidget,而这一切奇妙的作品!感谢任何花时间阅读这个问题的人!

+2

欢迎来到Stack Overflow。当有人帮助你解决问题时,你应该点击答案旁边的复选标记来解决问题,而不是将问题重命名为“[已解决]”。 – Tim 2011-04-18 17:32:04

回答

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会有什么问题,它非常详细。

+0

不应该有SELECT? – fazo 2011-04-17 19:34:06

+0

是的,当然。我纠正了这个错误,谢谢。 – beduin 2011-04-17 19:35:24

+0

谢谢!我发现了它,但鉴于我非常了解MySQL ++,我认为它会更容易。尽管如此,我无法切换。我会给它一个镜头,看看我得到了什么!再次感谢!!! – n00b 2011-04-17 20:23:07