CTK  0.1.0
The Common Toolkit is a community effort to provide support code for medical image analysis, surgical navigation, and related projects.
ctkAddRemoveComboBox.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Library: CTK
4 
5  Copyright (c) Kitware Inc.
6 
7  Licensed under the Apache License, Version 2.0 (the "License");
8  you may not use this file except in compliance with the License.
9  You may obtain a copy of the License at
10 
11  http://www.apache.org/licenses/LICENSE-2.0.txt
12 
13  Unless required by applicable law or agreed to in writing, software
14  distributed under the License is distributed on an "AS IS" BASIS,
15  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  See the License for the specific language governing permissions and
17  limitations under the License.
18 
19 =========================================================================*/
20 
21 #ifndef __ctkAddRemoveComboBox_h
22 #define __ctkAddRemoveComboBox_h
23 
24 // Qt includes
25 #include <QWidget>
26 #include <QVariant>
27 #include <QModelIndex>
28 
29 // CTK includes
30 #include <ctkPimpl.h>
31 
32 #include "ctkWidgetsExport.h"
33 
34 class QComboBox;
35 class ctkAddRemoveComboBoxPrivate;
36 
40 class CTK_WIDGETS_EXPORT ctkAddRemoveComboBox : public QWidget
41 {
42  Q_OBJECT
43  Q_PROPERTY(QString emptyText READ emptyText WRITE setEmptyText)
44  Q_PROPERTY(bool addEnabled READ addEnabled WRITE setAddEnabled)
45  Q_PROPERTY(bool removeEnabled READ removeEnabled WRITE setRemoveEnabled)
46  Q_PROPERTY(bool editEnabled READ editEnabled WRITE setEditEnabled)
47 
48 public:
50  typedef QWidget Superclass;
51 
53  explicit ctkAddRemoveComboBox(QWidget* parent = 0);
55  virtual void printAdditionalInfo();
56 
59  void setEmptyText(const QString& text);
60  QString emptyText()const;
61 
64  void setComboBoxEnabled(bool enable);
65  bool comboBoxEnabled()const;
66 
69  void setAddEnabled(bool enable);
70  bool addEnabled()const;
71 
74  void setRemoveEnabled(bool enable);
75  bool removeEnabled()const;
76 
79  void setEditEnabled(bool enable);
80  bool editEnabled()const;
81 
82  inline void addItem(const QString &text, const QVariant &userDataVariable = QVariant() )
83  {this->insertItem(this->count(), text, userDataVariable);}
84  inline void addItem(const QIcon &icon, const QString &text, const QVariant &userDataVariable = QVariant() )
85  {this->insertItem(this->count(), icon, text, userDataVariable);}
86  inline void addItems(const QStringList &texts )
87  {this->insertItems(this->count(), texts);}
88 
89  void insertItem(int index, const QString &text, const QVariant &userDataVariable = QVariant() );
90  void insertItem(int index, const QIcon &icon, const QString &text, const QVariant &userDataVariable = QVariant() );
91  void insertItems(int index, const QStringList &texts);
92 
95  int count()const;
96  bool empty()const;
97 
101  int findText(const QString& text, Qt::MatchFlags flags = Qt::MatchExactly | Qt::MatchCaseSensitive ) const;
102  int findData(const QVariant & data, int role = Qt::UserRole, Qt::MatchFlags flags = Qt::MatchExactly | Qt::MatchCaseSensitive ) const;
103 
105  QString itemText(int index) const;
106  QVariant itemData(int index, int role = Qt::UserRole) const;
107 
108  void setItemText(int index, const QString& text);
109  void setItemData(int index, const QVariant& data, int role = Qt::UserRole);
110 
113  int currentIndex() const;
114  inline QString currentText() const
115  {return this->itemText(this->currentIndex());}
116  inline QVariant currentData(int role = Qt::UserRole) const
117  {return this->itemData(this->currentIndex(), role);}
118 
121  void removeItem(int index);
122  inline void removeCurrentItem()
123  {this->removeItem(this->currentIndex());}
124 
127  void clear();
128 
129 Q_SIGNALS:
130  void currentIndexChanged(int index);
131  void activated(int index);
132 
135  void itemAdded(int index);
136 
138  void itemAboutToBeRemoved(int index);
139  void itemRemoved(int index);
140 
141 public Q_SLOTS:
144  void setCurrentIndex(int index);
145 
146 protected Q_SLOTS:
148  virtual void onAdd();
149  virtual void onRemove();
150  virtual void onEdit();
151 
152 protected:
153  void setComboBox(QComboBox* comboBox);
154  QModelIndex rootModelIndex()const;
155  void setRootModelIndex(const QModelIndex& root);
156  int modelColumn()const;
157  QAbstractItemModel* model()const;
158 
159 private Q_SLOTS:
160  //void onRowsAboutToBeInserted(const QModelIndex & parent, int start, int end );
161  void onRowsAboutToBeRemoved(const QModelIndex & parent, int start, int end);
162  void onRowsInserted(const QModelIndex & parent, int start, int end);
163  void onRowsRemoved(const QModelIndex & parent, int start, int end);
164 
165 protected:
166  QScopedPointer<ctkAddRemoveComboBoxPrivate> d_ptr;
167 
168 private:
169  Q_DECLARE_PRIVATE(ctkAddRemoveComboBox);
170  Q_DISABLE_COPY(ctkAddRemoveComboBox);
171 };
172 
173 #endif
void itemAboutToBeRemoved(int index)
bool removeEnabled() const
void setCurrentIndex(int index)
void addItem(const QString &text, const QVariant &userDataVariable=QVariant())
virtual void printAdditionalInfo()
QModelIndex rootModelIndex() const
virtual void onEdit()
QVariant itemData(int index, int role=Qt::UserRole) const
void setAddEnabled(bool enable)
void setComboBoxEnabled(bool enable)
virtual void onAdd()
void insertItem(int index, const QString &text, const QVariant &userDataVariable=QVariant())
virtual ~ctkAddRemoveComboBox()
void currentIndexChanged(int index)
bool editEnabled() const
QScopedPointer< ctkAddRemoveComboBoxPrivate > d_ptr
void setEditEnabled(bool enable)
void setRootModelIndex(const QModelIndex &root)
QVariant currentData(int role=Qt::UserRole) const
void itemAdded(int index)
bool comboBoxEnabled() const
void insertItem(int index, const QIcon &icon, const QString &text, const QVariant &userDataVariable=QVariant())
bool addEnabled() const
void setRemoveEnabled(bool enable)
QString emptyText() const
void activated(int index)
int currentIndex() const
QAbstractItemModel * model() const
bool empty() const
void setComboBox(QComboBox *comboBox)
virtual void onRemove()
void setItemText(int index, const QString &text)
void setItemData(int index, const QVariant &data, int role=Qt::UserRole)
QString itemText(int index) const
int modelColumn() const
QWidget Superclass
Superclass typedef.
void addItem(const QIcon &icon, const QString &text, const QVariant &userDataVariable=QVariant())
void insertItems(int index, const QStringList &texts)
void addItems(const QStringList &texts)
void removeItem(int index)
void setEmptyText(const QString &text)
void itemRemoved(int index)
int findText(const QString &text, Qt::MatchFlags flags=Qt::MatchExactly|Qt::MatchCaseSensitive) const
ctkAddRemoveComboBox(QWidget *parent=0)
Constructors.
int findData(const QVariant &data, int role=Qt::UserRole, Qt::MatchFlags flags=Qt::MatchExactly|Qt::MatchCaseSensitive) const