代码
QComboBox *editor = new QComboBox(parent);
editor->addItems(item_list_);
editor->installEventFilter(const_cast<ConeComboxDelegate *>(this));
const auto column = index.column();
if (2 == column) {
const auto cone_data = index.model()->data(index, Qt::UserRole).toInt();
const auto data = ConeTabelModel::GetConePartName(cone_data);
const auto part_size = std::get<2>(data);
const auto cone_id = std::get<3>(data);
QListView *view = qobject_cast<QListView *>(editor->view());
Q_ASSERT(view != nullptr);
for (int i = 0; i < item_list_.size(); i++) {
if (i < part_size + cone_id && i >= cone_id) {
view->setRowHidden(i, false);
} else {
view->setRowHidden(i, true);
}
}
view->setFixedHeight(25 * part_size);
}