为什么';t QTableView单元格在我单击它时是否聚焦?
我创建了一个为什么';t QTableView单元格在我单击它时是否聚焦?,qt,focus,qtableview,qstyleditemdelegate,Qt,Focus,Qtableview,Qstyleditemdelegate,我创建了一个QTableView,并设置了一个委托,该委托使用滑块编辑第2列中的单元格。我对第2列中的所有单元格调用openpersisteneditor: MinMaxSliderDelegate *minMaxSliderDelegate = new MinMaxSliderDelegate(this); table = new QTableView(); table->setModel(new ServoConfiguration(this)); table->setItemD
QTableView
,并设置了一个委托,该委托使用滑块编辑第2列中的单元格。我对第2列中的所有单元格调用openpersisteneditor
:
MinMaxSliderDelegate *minMaxSliderDelegate = new MinMaxSliderDelegate(this);
table = new QTableView();
table->setModel(new ServoConfiguration(this));
table->setItemDelegate(minMaxSliderDelegate);
for(int r=0; r<table->model()->rowCount(); r++) {
table->openPersistentEditor(table->model()->index(r,2));
}
我的问题是,我需要知道用户何时使用滑块编辑值(它应该有焦点)。我发现,如果我从表格单元格的左侧点击滑块,滑块将成为table->selectionModel()->currentIndex()返回的当前项代码>但是,如果单击滑块,当前项目不会更改。我还发现,虽然我可以从单元格的左侧进入滑块,但无法从滑块中移出
我肯定我错过了一些简单的东西,但我会感谢一些帮助
如果有关系,我在其构造函数中为滑块设置了StrongFocus,滑块列的QModelView
标志为:Qt::ItemIsSelectable | Qt::ItemIsEditable | Qt::ItemIsEnabled代码>很抱歉,我无法说出回答您问题的确切代码。我只是觉得这可能与QRect
有关
void QTableView::setSelection(const QRect&rect,QItemSelectionModel::SelectionFlags)
QWidget *MinMaxSliderDelegate::createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const {
if (index.column()==2) {
MinMaxSlider *editor = new MinMaxSlider(Qt::Horizontal, index.row(), parent);
editor->setAutoFillBackground(true);
editor->setFocusPolicy(Qt::StrongFocus);
editor->setMinimum(750);
editor->setMaximum(2000);
editor->setMinValue(1000);
editor->setMaxValue(1500);
connect(uiObj, SIGNAL(setMinToCurrentValue(int)), editor, SLOT(setMinValueToCurrentValue(int)));
connect(uiObj, SIGNAL(setMaxToCurrentValue()), editor, SLOT(setMaxValueToCurrentValue()));
return editor;
}
return QStyledItemDelegate::createEditor(parent, option, index);