我正在使用QTableView
,我希望在每个单元格的第3列中添加QComboBox
。将有数千个单元格,所以我选择了一个就地编辑器解决方案。当用户通过单击或当用户使用箭头键选择第3列中的单元格来输入单元格时,我希望显示组合框。
void FixtureCalibrationPage::on_View_clicked(const QModelIndex & index)
{
if(!index.isValid()) return;
if(index.column() != 3) return;
if(selected_table_row == index.row()) return;
if(selected_table_row != -1) { //clean up
ui.view->setIndexWidget(index, NULL);
}
selected_table_row = index.row();
ui.view->setIndexWidget(index, &m_combo_box_selection); //set the
}
点击不包括使用箭头键的情况。我唯一的选择是手动检查用户是否按下了箭头键或是否已存在其他解决方案?
答案 0 :(得分:1)
这就是代表们的意思。为视图创建委托对象,并使用setItemDelegateForColumn
将其设置在第3列。请注意,代理不得由多个视图共享。每个视图都需要自己的委托。代表成为观点的孩子是有道理的。
在您的委托中,您将在createEditor
方法的实现中创建组合框。您当然需要实施setEditorData
,setModelData
等