qCTKAddRemoveComboBox.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #ifndef __qCTKAddRemoveComboBox_h
00016 #define __qCTKAddRemoveComboBox_h
00017
00019 #include "qCTKPimpl.h"
00020
00022 #include <QWidget>
00023 #include <QVariant>
00024 #include <QModelIndex>
00025
00026 #include "qCTKWidgetsExport.h"
00027
00028 class QComboBox;
00029 class qCTKAddRemoveComboBoxPrivate;
00030
00031 class QCTK_WIDGETS_EXPORT qCTKAddRemoveComboBox : public QWidget
00032 {
00033 Q_OBJECT
00034 Q_PROPERTY(QString emptyText READ emptyText WRITE setEmptyText)
00035 Q_PROPERTY(bool addEnabled READ addEnabled WRITE setAddEnabled)
00036 Q_PROPERTY(bool removeEnabled READ removeEnabled WRITE setRemoveEnabled)
00037 Q_PROPERTY(bool editEnabled READ editEnabled WRITE setEditEnabled)
00038
00039 public:
00041 typedef QWidget Superclass;
00042
00044 explicit qCTKAddRemoveComboBox(QWidget* parent = 0);
00045 virtual ~qCTKAddRemoveComboBox(){}
00046 virtual void printAdditionalInfo();
00047
00050 void setEmptyText(const QString& text);
00051 QString emptyText()const;
00052
00055 void setComboBoxEnabled(bool enable);
00056 bool comboBoxEnabled()const;
00057
00060 void setAddEnabled(bool enable);
00061 bool addEnabled()const;
00062
00065 void setRemoveEnabled(bool enable);
00066 bool removeEnabled()const;
00067
00070 void setEditEnabled(bool enable);
00071 bool editEnabled()const;
00072
00073 inline void addItem(const QString &text, const QVariant &userDataVariable = QVariant() )
00074 {this->insertItem(this->count(), text, userDataVariable);}
00075 inline void addItem(const QIcon &icon, const QString &text, const QVariant &userDataVariable = QVariant() )
00076 {this->insertItem(this->count(), icon, text, userDataVariable);}
00077 inline void addItems(const QStringList &texts )
00078 {this->insertItems(this->count(), texts);}
00079
00080 void insertItem(int index, const QString &text, const QVariant &userDataVariable = QVariant() );
00081 void insertItem(int index, const QIcon &icon, const QString &text, const QVariant &userDataVariable = QVariant() );
00082 void insertItems(int index, const QStringList &texts);
00083
00086 int count()const;
00087 bool empty()const;
00088
00092 int findText(const QString& text, Qt::MatchFlags flags = Qt::MatchExactly | Qt::MatchCaseSensitive ) const;
00093 int findData(const QVariant & data, int role = Qt::UserRole, Qt::MatchFlags flags = Qt::MatchExactly | Qt::MatchCaseSensitive ) const;
00094
00096 QString itemText(int index) const;
00097 QVariant itemData(int index, int role = Qt::UserRole) const;
00098
00099 void setItemText(int index, const QString& text);
00100 void setItemData(int index, const QVariant& data, int role = Qt::UserRole);
00101
00104 int currentIndex() const;
00105 inline QString currentText() const
00106 {return this->itemText(this->currentIndex());}
00107 inline QVariant currentData(int role = Qt::UserRole) const
00108 {return this->itemData(this->currentIndex(), role);}
00109
00112 void removeItem(int index);
00113 inline void removeCurrentItem()
00114 {this->removeItem(this->currentIndex());}
00115
00118 void clear();
00119
00120 signals:
00121 void currentIndexChanged(int index);
00122 void activated(int index);
00123
00126 void itemAdded(int index);
00127
00129 void itemAboutToBeRemoved(int index);
00130 void itemRemoved(int index);
00131
00132 public slots:
00135 void setCurrentIndex(int index);
00136
00137 protected slots:
00139 virtual void onAdd();
00140 virtual void onRemove();
00141 virtual void onEdit();
00142
00143 protected:
00144 void setComboBox(QComboBox* comboBox);
00145 QModelIndex rootModelIndex()const;
00146 void setRootModelIndex(const QModelIndex& root);
00147 int modelColumn()const;
00148 QAbstractItemModel* model()const;
00149
00150 private slots:
00151
00152 void onRowsAboutToBeRemoved(const QModelIndex & parent, int start, int end);
00153 void onRowsInserted(const QModelIndex & parent, int start, int end);
00154 void onRowsRemoved(const QModelIndex & parent, int start, int end);
00155
00156 private:
00157 QCTK_DECLARE_PRIVATE(qCTKAddRemoveComboBox);
00158 };
00159
00160 #endif