[英]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.