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 <QComboBox>
|
||||||
#include <QCompleter>
|
#include <QCompleter>
|
||||||
#include <QLineEdit>
|
#include <QLineEdit>
|
||||||
|
#include <QKeyEvent>
|
||||||
|
#include <QAbstractItemView>
|
||||||
|
|
||||||
StarWidgetsDelegate::StarWidgetsDelegate(QWidget* parent):
|
StarWidgetsDelegate::StarWidgetsDelegate(QWidget* parent):
|
||||||
QStyledItemDelegate(parent),
|
QStyledItemDelegate(parent),
|
||||||
|
@ -65,6 +67,7 @@ void ComboBoxDelegate::setEditorData(QWidget* editor, const QModelIndex& index)
|
||||||
c->setEditText(data);
|
c->setEditText(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QComboBox *comboEditor;
|
||||||
QWidget* ComboBoxDelegate::createEditor(QWidget* parent, const QStyleOptionViewItem& option, const QModelIndex& index) const
|
QWidget* ComboBoxDelegate::createEditor(QWidget* parent, const QStyleOptionViewItem& option, const QModelIndex& index) const
|
||||||
{
|
{
|
||||||
QComboBox *comboDelegate = new QComboBox(parent);
|
QComboBox *comboDelegate = new QComboBox(parent);
|
||||||
|
@ -73,9 +76,26 @@ QWidget* ComboBoxDelegate::createEditor(QWidget* parent, const QStyleOptionViewI
|
||||||
comboDelegate->setAutoCompletion(true);
|
comboDelegate->setAutoCompletion(true);
|
||||||
comboDelegate->setAutoCompletionCaseSensitivity(Qt::CaseInsensitive);
|
comboDelegate->setAutoCompletionCaseSensitivity(Qt::CaseInsensitive);
|
||||||
comboDelegate->completer()->setCompletionMode(QCompleter::PopupCompletion);
|
comboDelegate->completer()->setCompletionMode(QCompleter::PopupCompletion);
|
||||||
|
comboDelegate->lineEdit()->installEventFilter( const_cast<QObject*>(qobject_cast<const QObject*>(this)));
|
||||||
|
comboEditor = comboDelegate;
|
||||||
return 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
|
void ComboBoxDelegate::updateEditorGeometry(QWidget* editor, const QStyleOptionViewItem& option, const QModelIndex& index) const
|
||||||
{
|
{
|
||||||
QRect defaultRect = option.rect;
|
QRect defaultRect = option.rect;
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
#define MODELDELEGATES_H
|
#define MODELDELEGATES_H
|
||||||
|
|
||||||
#include <QStyledItemDelegate>
|
#include <QStyledItemDelegate>
|
||||||
|
class QComboBox;
|
||||||
|
|
||||||
class StarWidgetsDelegate : public QStyledItemDelegate {
|
class StarWidgetsDelegate : public QStyledItemDelegate {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
@ -20,8 +21,10 @@ public:
|
||||||
virtual QWidget* createEditor(QWidget* parent, const QStyleOptionViewItem& option, const QModelIndex& index) const;
|
virtual QWidget* createEditor(QWidget* parent, const QStyleOptionViewItem& option, const QModelIndex& index) const;
|
||||||
virtual void setEditorData(QWidget* editor, 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 void updateEditorGeometry(QWidget* editor, const QStyleOptionViewItem& option, const QModelIndex& index) const;
|
||||||
|
virtual bool eventFilter(QObject* object, QEvent* event);
|
||||||
protected:
|
protected:
|
||||||
QAbstractItemModel *model;
|
QAbstractItemModel *model;
|
||||||
|
QComboBox *comboBox; // warning - it's null everytime a edit's finished.
|
||||||
};
|
};
|
||||||
|
|
||||||
class TankInfoDelegate : public ComboBoxDelegate{
|
class TankInfoDelegate : public ComboBoxDelegate{
|
||||||
|
|
Loading…
Add table
Reference in a new issue