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
34class QComboBox;
35class ctkAddRemoveComboBoxPrivate;
36
40class 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
48public:
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
129Q_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
141public Q_SLOTS:
144 void setCurrentIndex(int index);
145
146protected Q_SLOTS:
148 virtual void onAdd();
149 virtual void onRemove();
150 virtual void onEdit();
151
152protected:
153 void setComboBox(QComboBox* comboBox);
154 QModelIndex rootModelIndex()const;
155 void setRootModelIndex(const QModelIndex& root);
156 int modelColumn()const;
157 QAbstractItemModel* model()const;
158
159private 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
165protected:
166 QScopedPointer<ctkAddRemoveComboBoxPrivate> d_ptr;
167
168private:
169 Q_DECLARE_PRIVATE(ctkAddRemoveComboBox);
170 Q_DISABLE_COPY(ctkAddRemoveComboBox);
171};
172
173#endif
QAbstractItemModel * model() const
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
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