默认情况下,QTableView
双击后开始编辑其中的单元格。如何改变这种行为。一键后,我需要它开始编辑。
我已将组合框委托设置为该单元格。单击单元格时,仅将其选中。双击单元格时,QComboBox
编辑器被激活但未展开。我希望它只需单击一下就可以扩展,就像我QComboBox
通过的setCellWidget
功能添加一样QTableWidget
。我需要使用model-view-delegate达到相同的效果。
一键编辑您可以在正在使用的视图中重新实现mousePressEvent
void YourView::mousePressEvent(QMouseEvent *event)
{
if (event->button() == Qt::LeftButton) {
QModelIndex index = indexAt(event->pos());
if (index.column() == 0) { // column you want to use for one click
edit(index);
}
}
QTreeView::mousePressEvent(event);
}
编辑时展开的QCombobox您应该在您的QItemDelegate子类中以及在最后调用showPopup时设置setEditorData。
但是它有一些意想不到的行为。当鼠标离开其区域时,QComboBox消失。但是对我来说,这是优势。我可以通过单击并释放来选择其他项目。
void IconDelegate::setEditorData(QWidget *editor, const QModelIndex &index) const
{
Q_UNUSED(index);
QComboBox *comboBox = qobject_cast<QComboBox*>(editor);
// Add data
comboBox->addItem(QIcon(":/icons/information16.png"), "info");
comboBox->addItem(QIcon(":/icons/warning16.png"), "warning");
comboBox->addItem(QIcon(":/icons/send16.png"), "send");
comboBox->addItem(QIcon(":/icons/select16.png"), "select");
comboBox->showPopup(); // <<<< Show popup here
}
一起可以快速工作。单击并按住以选择项目并在发布时提交数据(只需单击并释放)
如果要单击以显示展开的qcombobox,然后单击以选择/隐藏,我暂时不知道解决方案。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句