2017-09-17 17 views
0

データベースから結果のセットを取得していますが、QComboBoxの各行にデータベース結果と同じ列が必要です。私はQComboBoxのある行から特定の列を取得し、それをさらにアプリで使用できるようにしたいと考えています。 QComboBoxにQTableViewを追加することができるのであれば、私は考えています。私は結果の一部に結果の列が単なる数値であり、その他が記述情報であるという意味で結果に意味を加える必要があるため、これを実行したいと思います。QTableViewをQComboBoxに追加する

結果を連結してQComboBoxに取り込むことが可能であることがわかりましたが、これは各行に1つの値しか残さず、正確な部分を得るために文字列を爆発させる必要があります一緒に働く必要があった。

+0

で見つけることができます仕事のこの種を行うための独自のウィジェット、にQLineEditが(コンボボックスのように)いくつかの矢印ダウンのアイコンとアクションを追加し、アクションにあなたのQTableViewまたはあなたがポップアップする他のウィジェットを含むQFrameをポップアップトリガーの作成、 – Simon

答えて

1

デフォルトでくるポップアップがクリックするだけで返す必要があるとき、これはQAbstractItemViewから継承する任意のオブジェクトを変更することができ、そしてそれはsetView()メソッドを使用するため、この場合にQTableViewが使用され、その結果、QListViewです選択した行の項目を選択した後に表示する列を設定するには、列の位置を示すsetModelColumn()というメソッドを使用しますが、その前に、モデルsetModel()を使用してQComboBoxに設定されます。

# my model 
model = new QSqlTableModel; 
model->setTable("person"); 
model->select(); 
# setModel 
comboBox->setModel(model); 
# select column 
comboBox->setModelColumn(1); 

QTableView *view = new QTableView(this); 
comboBox->setView(view); 

注:モデルはQComboBoxに、ではないQTableViewに設定されています。また、あなたはQTableViewの幅に問題がある可能性があり、私たちは、サイズを変更しなければならない、私の場合には、以下を使用します。

view->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch); 
view->setMinimumWidth(500); 

完全な例では、あなたの作成した方がよいでしょう以下link

関連する問題