qCTKAddRemoveComboBox.h

Go to the documentation of this file.
00001 /*=========================================================================
00002 
00003   Library:   qCTK
00004 
00005   Copyright (c) Kitware Inc. 
00006   All rights reserved.
00007   Distributed under a BSD License. See LICENSE.txt file.
00008 
00009   This software is distributed "AS IS" WITHOUT ANY WARRANTY; without even
00010   the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
00011   See the above copyright notice for more information.
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   //void onRowsAboutToBeInserted(const QModelIndex & parent, int start, int end );
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

Generated on 6 Apr 2011 for Slicer3 by  doxygen 1.6.1