2011-04-17 109 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