Название: ComboBox, раскрытие по DblClick. [Решено] Отправлено: Blitz156 от Февраль 15, 2013, 16:29 Есть делегат, в нем ComboBox, задача раскрывать с двойного клика, а также по нажатию Enter.
По дефолту - DblClick - преход в режим редактирования(появляется button с полями и стрелочками) и далее по клику на него раскрытие ComboBox. Частичное решение: QTableView::openPersistantEditor(), тем самым сразу открыв редактор. Перерисовал button со стрелками в обычный label, и далее, происходит раскрытие по одиночному клику. Нужен двойной. В QStyledItemDelegate::eventFilter() возвращаю true по одиночному клику или фокусу. Комбо не раскрывается, но происходит выделение не тем цветом. Решается через closeEditor() , но тогда делегат перестает реагировать на нажатие клавиш. Код eventFilter + paint() для делегата Код: bool ComboBoxDelegate::eventFilter(QObject *object, QEvent *event) Унаследованный комбобокс Код: void ComboBox::paintEvent(QPaintEvent *e) Какие есть варианты доделывания этого варианта, либо другого, например без открытия редактора и как-то без перехода в режим редактирования сразу раскрывать comboBox. P.S. Нет реакции на нажатие клавиш, потому что делегат теряет фокус. На картинке проблема выделения, если не делать closeEditor(), возможно кто-то знает как насильно выделить строку. (http://) Название: Re: ComboBox, раскрытие по DblClick. Отправлено: Blitz156 от Февраль 15, 2013, 19:08 Подход был тупиковым. Решил проблему искусственным созданием QMouseEvent.
Код: bool ComboBoxDelegate::eventFilter(QObject *object, QEvent *event) Код: QWidget *ComboBoxDelegate::createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const ну и openPersistentEditor() не нужен. |