mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
Support for key_up and down in the combobox delegate.
Adds spport for key_up and key_down in the combobox delegates, now when you press key_up or down, it will show the list of choices instead of going one-by-one in the lineedit. Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
This commit is contained in:
parent
ee25edc28e
commit
c5a0c4e0d7
2 changed files with 23 additions and 0 deletions
|
@ -12,6 +12,8 @@
|
|||
#include <QComboBox>
|
||||
#include <QCompleter>
|
||||
#include <QLineEdit>
|
||||
#include <QKeyEvent>
|
||||
#include <QAbstractItemView>
|
||||
|
||||
StarWidgetsDelegate::StarWidgetsDelegate(QWidget* parent):
|
||||
QStyledItemDelegate(parent),
|
||||
|
@ -65,6 +67,7 @@ void ComboBoxDelegate::setEditorData(QWidget* editor, const QModelIndex& index)
|
|||
c->setEditText(data);
|
||||
}
|
||||
|
||||
QComboBox *comboEditor;
|
||||
QWidget* ComboBoxDelegate::createEditor(QWidget* parent, const QStyleOptionViewItem& option, const QModelIndex& index) const
|
||||
{
|
||||
QComboBox *comboDelegate = new QComboBox(parent);
|
||||
|
@ -73,9 +76,26 @@ QWidget* ComboBoxDelegate::createEditor(QWidget* parent, const QStyleOptionViewI
|
|||
comboDelegate->setAutoCompletion(true);
|
||||
comboDelegate->setAutoCompletionCaseSensitivity(Qt::CaseInsensitive);
|
||||
comboDelegate->completer()->setCompletionMode(QCompleter::PopupCompletion);
|
||||
comboDelegate->lineEdit()->installEventFilter( const_cast<QObject*>(qobject_cast<const QObject*>(this)));
|
||||
comboEditor = comboDelegate;
|
||||
return comboDelegate;
|
||||
}
|
||||
|
||||
bool ComboBoxDelegate::eventFilter(QObject* object, QEvent* event)
|
||||
{
|
||||
// Reacts on Key_UP and Key_DOWN to show the QComboBox - list of choices.
|
||||
if (event->type() == QEvent::KeyPress){
|
||||
QKeyEvent *ev = static_cast<QKeyEvent*>(event);
|
||||
if(ev->key() == Qt::Key_Up || ev->key() == Qt::Key_Down){
|
||||
QString curr = comboEditor->currentText();
|
||||
comboEditor->showPopup();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return QStyledItemDelegate::eventFilter(object, event);
|
||||
}
|
||||
|
||||
void ComboBoxDelegate::updateEditorGeometry(QWidget* editor, const QStyleOptionViewItem& option, const QModelIndex& index) const
|
||||
{
|
||||
QRect defaultRect = option.rect;
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
#define MODELDELEGATES_H
|
||||
|
||||
#include <QStyledItemDelegate>
|
||||
class QComboBox;
|
||||
|
||||
class StarWidgetsDelegate : public QStyledItemDelegate {
|
||||
Q_OBJECT
|
||||
|
@ -20,8 +21,10 @@ public:
|
|||
virtual QWidget* createEditor(QWidget* parent, const QStyleOptionViewItem& option, const QModelIndex& index) const;
|
||||
virtual void setEditorData(QWidget* editor, const QModelIndex& index) const;
|
||||
virtual void updateEditorGeometry(QWidget* editor, const QStyleOptionViewItem& option, const QModelIndex& index) const;
|
||||
virtual bool eventFilter(QObject* object, QEvent* event);
|
||||
protected:
|
||||
QAbstractItemModel *model;
|
||||
QComboBox *comboBox; // warning - it's null everytime a edit's finished.
|
||||
};
|
||||
|
||||
class TankInfoDelegate : public ComboBoxDelegate{
|
||||
|
|
Loading…
Add table
Reference in a new issue