0

現在取り組んでいる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())));
    }
  }

私の問題はi、QTableWidgetItemを設定する場所を定義するために使用しているため、インクリメンタルsize_tの代わりにvector::iteratorを使用する方法がわからないことです。ただし、両方を使用するのは間違いなくばかげているようです。

何か案は?

どなたでも、どなたでもよろしくお願いします!

XT

更新:tableWidgetの代わりにQSqlオブジェクトとtableViewを使用するようにプログラムを変更しました。すべてがうまく機能します!質問を読むのに時間を割いてくれた人に感謝します!

4

1 に答える 1

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リファレンスを読んでも問題ないと思います。非常に詳細です。

于 2011-04-17T19:30:04.850 に答える