簡體   English   中英

將QTableView添加到QComboBox

[英]Add QTableView to QComboBox

我正在從數據庫中檢索一組結果,我想用數據庫中的結果列填充QComboBox(QComboBox的每一行應與數據庫結果具有相同的列),然后,我希望能夠從QComboBox的一行中檢索特定列,然后在應用程序中進一步使用它。 我在想是否有可能將QTableView添加到QComboBox。 我想要這樣做是因為我想以某種方式為結果添加更多含義,即某些結果列只是純數字,而其他則是描述信息。

我發現可以將結果連接起來並填充QComboBox,但這將使我只為每行使用一個值,並且我必須展開字符串以獲取需要使用的確切部分。

默認情況下出現的彈出窗口是QListView ,可以使用從QAbstractItemView繼承的任何對象進行更改,在這種情況下,將使用QTableView來使用setView()方法,僅單擊時的結果應返回一個項目,然后使用setModelColumn()方法setModelColumn()指示列的位置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);

完整的示例可以在以下鏈接中找到

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM