Я создал QTableView
и установить делегат, который использует ползунок для редактирования ячейки в столбце 2. Я называю openPersistentEditor
по всем ячейкам в колонке 2:Почему ячейка QTableView не фокусируется, когда я нажимаю на нее?
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));
}
Так что теперь у меня есть таблица с ползунками постоянно отображается в колонка 2.
код я использую, чтобы создать ползунок в подклассе QStyledItemDelegate является:
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);
Моя проблема заключается в том, что мне нужно знать, когда пользователь редактирует значение нами (он должен иметь фокус). Я нахожу, что если я перейду на ползунок из ячейки таблицы слева, ползунок станет текущим элементом, возвращаемым table->selectionModel()->currentIndex();
Однако, если я нажму на ползунок, текущий элемент не будет изменен. Я также обнаружил, что, хотя я могу вставить ползунок из ячейки влево, я не могу вывести из слайдера.
Уверен, что мне не хватает чего-то простого, но я был бы признателен за помощь.
В случае, если это имеет значение, я поставил StrongFocus для ползуном в его конструкторе и QModelView
флаги для столбца ползунки: Qt::ItemIsSelectable | Qt::ItemIsEditable | Qt::ItemIsEnabled;