一、基本思路
核心思想就是:
ui->comboBox->setModel(ui->treeView->model());
ui->comboBox->setView(ui->treeView);
将 QComboBox 的数据模型设置为 树的数据模型,将视图设置为树状图
二、问题
上面的操作选择都没有问题,但是我们将选择的数据保存到数据库后,再从数据库读取数据,塞到 QComboBox 就出现了问题,总是显示不正确,解决办法如下:
//遍历 QTreeWidgetItem,根据文本确认选中的树状图节点,并显示在下拉框中
QTreeWidgetItemIterator iterator(unitTree); //unitTree 就是 QComboBox 中嵌入的 QTreeWidget
while (*iterator) {
//利用迭代器,遍历,比较
if ((*iterator)->text(0) == tableModel->item(currentRow, COLUMN_BDNM)->text()) {
//获取对应的 item
QTreeWidgetItem *item = (*iterator);
//设置为当前 item
unitTree->setCurrentItem(item);
//将当前选中的树状图节点文本显示在下拉框中(很重要)
QModelIndex index = unitTree->currentIndex();
ui->cbUnitName->setRootModelIndex(index.parent());
ui->cbUnitName->setModelColumn(index.column());
ui->cbUnitName->setCurrentIndex(index.row());
ui->cbUnitName->setRootModelIndex(QModelIndex());
break;
}
++iterator;
}