qcombobox.h
上传用户:detong
上传日期:2022-06-22
资源大小:20675k
文件大小:12k
源码类别:

系统编程

开发平台:

Unix_Linux

  1. /****************************************************************************
  2. **
  3. ** Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies).
  4. ** Contact: Qt Software Information (qt-info@nokia.com)
  5. **
  6. ** This file is part of the QtGui module of the Qt Toolkit.
  7. **
  8. ** Commercial Usage
  9. ** Licensees holding valid Qt Commercial licenses may use this file in
  10. ** accordance with the Qt Commercial License Agreement provided with the
  11. ** Software or, alternatively, in accordance with the terms contained in
  12. ** a written agreement between you and Nokia.
  13. **
  14. **
  15. ** GNU General Public License Usage
  16. ** Alternatively, this file may be used under the terms of the GNU
  17. ** General Public License versions 2.0 or 3.0 as published by the Free
  18. ** Software Foundation and appearing in the file LICENSE.GPL included in
  19. ** the packaging of this file.  Please review the following information
  20. ** to ensure GNU General Public Licensing requirements will be met:
  21. ** http://www.fsf.org/licensing/licenses/info/GPLv2.html and
  22. ** http://www.gnu.org/copyleft/gpl.html.  In addition, as a special
  23. ** exception, Nokia gives you certain additional rights. These rights
  24. ** are described in the Nokia Qt GPL Exception version 1.3, included in
  25. ** the file GPL_EXCEPTION.txt in this package.
  26. **
  27. ** Qt for Windows(R) Licensees
  28. ** As a special exception, Nokia, as the sole copyright holder for Qt
  29. ** Designer, grants users of the Qt/Eclipse Integration plug-in the
  30. ** right for the Qt/Eclipse Integration to link to functionality
  31. ** provided by Qt Designer and its related libraries.
  32. **
  33. ** If you are unsure which license is appropriate for your use, please
  34. ** contact the sales department at qt-sales@nokia.com.
  35. **
  36. ****************************************************************************/
  37. #ifndef QCOMBOBOX_H
  38. #define QCOMBOBOX_H
  39. #include <QtGui/qwidget.h>
  40. #include <QtGui/qabstractitemdelegate.h>
  41. #include <QtCore/qabstractitemmodel.h>
  42. #include <QtCore/qvariant.h>
  43. QT_BEGIN_HEADER
  44. QT_BEGIN_NAMESPACE
  45. QT_MODULE(Gui)
  46. #ifndef QT_NO_COMBOBOX
  47. class QAbstractItemView;
  48. class QLineEdit;
  49. class QComboBoxPrivate;
  50. class QCompleter;
  51. class Q_GUI_EXPORT QComboBox : public QWidget
  52. {
  53.     Q_OBJECT
  54.     Q_ENUMS(InsertPolicy)
  55.     Q_ENUMS(SizeAdjustPolicy)
  56.     Q_PROPERTY(bool editable READ isEditable WRITE setEditable)
  57.     Q_PROPERTY(int count READ count)
  58.     Q_PROPERTY(QString currentText READ currentText)
  59.     Q_PROPERTY(int currentIndex READ currentIndex WRITE setCurrentIndex NOTIFY currentIndexChanged)
  60.     Q_PROPERTY(int maxVisibleItems READ maxVisibleItems WRITE setMaxVisibleItems)
  61.     Q_PROPERTY(int maxCount READ maxCount WRITE setMaxCount)
  62.     Q_PROPERTY(InsertPolicy insertPolicy READ insertPolicy WRITE setInsertPolicy)
  63.     Q_PROPERTY(SizeAdjustPolicy sizeAdjustPolicy READ sizeAdjustPolicy WRITE setSizeAdjustPolicy)
  64.     Q_PROPERTY(int minimumContentsLength READ minimumContentsLength WRITE setMinimumContentsLength)
  65.     Q_PROPERTY(QSize iconSize READ iconSize WRITE setIconSize)
  66. #ifndef QT_NO_COMPLETER
  67.     Q_PROPERTY(bool autoCompletion READ autoCompletion WRITE setAutoCompletion DESIGNABLE false)
  68.     Q_PROPERTY(Qt::CaseSensitivity autoCompletionCaseSensitivity READ autoCompletionCaseSensitivity WRITE setAutoCompletionCaseSensitivity DESIGNABLE false)
  69. #endif // QT_NO_COMPLETER
  70.     Q_PROPERTY(bool duplicatesEnabled READ duplicatesEnabled WRITE setDuplicatesEnabled)
  71.     Q_PROPERTY(bool frame READ hasFrame WRITE setFrame)
  72.     Q_PROPERTY(int modelColumn READ modelColumn WRITE setModelColumn)
  73. public:
  74.     explicit QComboBox(QWidget *parent = 0);
  75.     ~QComboBox();
  76.     int maxVisibleItems() const;
  77.     void setMaxVisibleItems(int maxItems);
  78.     int count() const;
  79.     void setMaxCount(int max);
  80.     int maxCount() const;
  81. #ifndef QT_NO_COMPLETER
  82.     bool autoCompletion() const;
  83.     void setAutoCompletion(bool enable);
  84.     Qt::CaseSensitivity autoCompletionCaseSensitivity() const;
  85.     void setAutoCompletionCaseSensitivity(Qt::CaseSensitivity sensitivity);
  86. #endif
  87.     bool duplicatesEnabled() const;
  88.     void setDuplicatesEnabled(bool enable);
  89.     void setFrame(bool);
  90.     bool hasFrame() const;
  91.     inline int findText(const QString &text,
  92.                         Qt::MatchFlags flags = Qt::MatchExactly|Qt::MatchCaseSensitive) const
  93.         { return findData(text, Qt::EditRole, flags); }
  94.     int findData(const QVariant &data, int role = Qt::UserRole,
  95.                  Qt::MatchFlags flags = Qt::MatchExactly|Qt::MatchCaseSensitive) const;
  96.     enum InsertPolicy {
  97.         NoInsert,
  98.         InsertAtTop,
  99.         InsertAtCurrent,
  100.         InsertAtBottom,
  101.         InsertAfterCurrent,
  102.         InsertBeforeCurrent,
  103.         InsertAlphabetically
  104. #if defined(QT3_SUPPORT) && !defined(Q_MOC_RUN)
  105.         ,
  106.         NoInsertion = NoInsert,
  107.         AtTop = InsertAtTop,
  108.         AtCurrent = InsertAtCurrent,
  109.         AtBottom = InsertAtBottom,
  110.         AfterCurrent = InsertAfterCurrent,
  111.         BeforeCurrent = InsertBeforeCurrent
  112. #endif
  113.     };
  114. #ifdef QT3_SUPPORT
  115.     typedef InsertPolicy Policy;
  116. #endif
  117.     InsertPolicy insertPolicy() const;
  118.     void setInsertPolicy(InsertPolicy policy);
  119.     enum SizeAdjustPolicy {
  120.         AdjustToContents,
  121.         AdjustToContentsOnFirstShow,
  122.         AdjustToMinimumContentsLength, // ### Qt 5: remove
  123.         AdjustToMinimumContentsLengthWithIcon
  124.     };
  125.     SizeAdjustPolicy sizeAdjustPolicy() const;
  126.     void setSizeAdjustPolicy(SizeAdjustPolicy policy);
  127.     int minimumContentsLength() const;
  128.     void setMinimumContentsLength(int characters);
  129.     QSize iconSize() const;
  130.     void setIconSize(const QSize &size);
  131.     bool isEditable() const;
  132.     void setEditable(bool editable);
  133.     void setLineEdit(QLineEdit *edit);
  134.     QLineEdit *lineEdit() const;
  135. #ifndef QT_NO_VALIDATOR
  136.     void setValidator(const QValidator *v);
  137.     const QValidator *validator() const;
  138. #endif
  139. #ifndef QT_NO_COMPLETER
  140.     void setCompleter(QCompleter *c);
  141.     QCompleter *completer() const;
  142. #endif
  143.     QAbstractItemDelegate *itemDelegate() const;
  144.     void setItemDelegate(QAbstractItemDelegate *delegate);
  145.     QAbstractItemModel *model() const;
  146.     void setModel(QAbstractItemModel *model);
  147.     QModelIndex rootModelIndex() const;
  148.     void setRootModelIndex(const QModelIndex &index);
  149.     int modelColumn() const;
  150.     void setModelColumn(int visibleColumn);
  151.     int currentIndex() const;
  152.     QString currentText() const;
  153.     QString itemText(int index) const;
  154.     QIcon itemIcon(int index) const;
  155.     QVariant itemData(int index, int role = Qt::UserRole) const;
  156.     inline void addItem(const QString &text, const QVariant &userData = QVariant());
  157.     inline void addItem(const QIcon &icon, const QString &text,
  158.                         const QVariant &userData = QVariant());
  159.     inline void addItems(const QStringList &texts)
  160.         { insertItems(count(), texts); }
  161.     inline void insertItem(int index, const QString &text, const QVariant &userData = QVariant());
  162.     void insertItem(int index, const QIcon &icon, const QString &text,
  163.                     const QVariant &userData = QVariant());
  164.     void insertItems(int index, const QStringList &texts);
  165.     void insertSeparator(int index);
  166.     void removeItem(int index);
  167.     void setItemText(int index, const QString &text);
  168.     void setItemIcon(int index, const QIcon &icon);
  169.     void setItemData(int index, const QVariant &value, int role = Qt::UserRole);
  170.     QAbstractItemView *view() const;
  171.     void setView(QAbstractItemView *itemView);
  172.     QSize sizeHint() const;
  173.     QSize minimumSizeHint() const;
  174.     virtual void showPopup();
  175.     virtual void hidePopup();
  176.     bool event(QEvent *event);
  177. public Q_SLOTS:
  178.     void clear();
  179.     void clearEditText();
  180.     void setEditText(const QString &text);
  181.     void setCurrentIndex(int index);
  182. Q_SIGNALS:
  183.     void editTextChanged(const QString &);
  184.     void activated(int index);
  185.     void activated(const QString &);
  186.     void highlighted(int index);
  187.     void highlighted(const QString &);
  188.     void currentIndexChanged(int index);
  189.     void currentIndexChanged(const QString &);
  190. protected:
  191.     void focusInEvent(QFocusEvent *e);
  192.     void focusOutEvent(QFocusEvent *e);
  193.     void changeEvent(QEvent *e);
  194.     void resizeEvent(QResizeEvent *e);
  195.     void paintEvent(QPaintEvent *e);
  196.     void showEvent(QShowEvent *e);
  197.     void hideEvent(QHideEvent *e);
  198.     void mousePressEvent(QMouseEvent *e);
  199.     void mouseReleaseEvent(QMouseEvent *e);
  200.     void keyPressEvent(QKeyEvent *e);
  201.     void keyReleaseEvent(QKeyEvent *e);
  202.     void wheelEvent(QWheelEvent *e);
  203.     void contextMenuEvent(QContextMenuEvent *e);
  204.     void inputMethodEvent(QInputMethodEvent *);
  205.     QVariant inputMethodQuery(Qt::InputMethodQuery) const;
  206.     void initStyleOption(QStyleOptionComboBox *option) const;
  207. #ifdef QT3_SUPPORT
  208. public:
  209.     QT3_SUPPORT_CONSTRUCTOR QComboBox(QWidget *parent, const char *name);
  210.     QT3_SUPPORT_CONSTRUCTOR QComboBox(bool rw, QWidget *parent, const char *name = 0);
  211.     inline QT3_SUPPORT int currentItem() const { return currentIndex(); }
  212.     inline QT3_SUPPORT void setCurrentItem(int index) { setCurrentIndex(index); }
  213.     inline QT3_SUPPORT InsertPolicy insertionPolicy() const { return insertPolicy(); }
  214.     inline QT3_SUPPORT void setInsertionPolicy(InsertPolicy policy) { setInsertPolicy(policy); }
  215.     inline QT3_SUPPORT bool editable() const { return isEditable(); }
  216.     inline QT3_SUPPORT void popup() { showPopup(); }
  217.     inline QT3_SUPPORT void setCurrentText(const QString& text) {
  218.         int i = findText(text);
  219.         if (i != -1)
  220.             setCurrentIndex(i);
  221.         else if (isEditable())
  222.             setEditText(text);
  223.         else
  224.             setItemText(currentIndex(), text);
  225.     }
  226.     inline QT3_SUPPORT QString text(int index) const { return itemText(index); }
  227.     inline QT3_SUPPORT QPixmap pixmap(int index) const
  228.     { return itemIcon(index).pixmap(iconSize(), isEnabled() ? QIcon::Normal : QIcon::Disabled); }
  229.     inline QT3_SUPPORT void insertStringList(const QStringList &list, int index = -1)
  230.         { insertItems((index < 0 ? count() : index), list); }
  231.     inline QT3_SUPPORT void insertItem(const QString &text, int index = -1)
  232.         { insertItem((index < 0 ? count() : index), text); }
  233.     inline QT3_SUPPORT void insertItem(const QPixmap &pix, int index = -1)
  234.         { insertItem((index < 0 ? count() : index), QIcon(pix), QString()); }
  235.     inline QT3_SUPPORT void insertItem(const QPixmap &pix, const QString &text, int index = -1)
  236.         { insertItem((index < 0 ? count() : index), QIcon(pix), text); }
  237.     inline QT3_SUPPORT void changeItem(const QString &text, int index)
  238.         { setItemText(index, text); }
  239.     inline QT3_SUPPORT void changeItem(const QPixmap &pix, int index)
  240.         { setItemIcon(index, QIcon(pix)); }
  241.     inline QT3_SUPPORT void changeItem(const QPixmap &pix, const QString &text, int index)
  242.         { setItemIcon(index, QIcon(pix)); setItemText(index, text); }
  243.     inline QT3_SUPPORT void clearValidator() { setValidator(0); }
  244.     inline QT3_SUPPORT void clearEdit() { clearEditText(); }
  245. Q_SIGNALS:
  246.     QT_MOC_COMPAT void textChanged(const QString &);
  247. #endif
  248. protected:
  249.     QComboBox(QComboBoxPrivate &, QWidget *);
  250. private:
  251.     Q_DECLARE_PRIVATE(QComboBox)
  252.     Q_DISABLE_COPY(QComboBox)
  253.     Q_PRIVATE_SLOT(d_func(), void _q_itemSelected(const QModelIndex &item))
  254.     Q_PRIVATE_SLOT(d_func(), void _q_emitHighlighted(const QModelIndex &))
  255.     Q_PRIVATE_SLOT(d_func(), void _q_emitCurrentIndexChanged(const QModelIndex &index))
  256.     Q_PRIVATE_SLOT(d_func(), void _q_returnPressed())
  257.     Q_PRIVATE_SLOT(d_func(), void _q_resetButton())
  258.     Q_PRIVATE_SLOT(d_func(), void _q_dataChanged(const QModelIndex &, const QModelIndex &))
  259.     Q_PRIVATE_SLOT(d_func(), void _q_rowsAboutToBeInserted(const QModelIndex & parent, int start, int end))
  260.     Q_PRIVATE_SLOT(d_func(), void _q_rowsInserted(const QModelIndex & parent, int start, int end))
  261.     Q_PRIVATE_SLOT(d_func(), void _q_rowsAboutToBeRemoved(const QModelIndex & parent, int start, int end))
  262.     Q_PRIVATE_SLOT(d_func(), void _q_rowsRemoved(const QModelIndex & parent, int start, int end))
  263.     Q_PRIVATE_SLOT(d_func(), void _q_modelDestroyed())
  264.     Q_PRIVATE_SLOT(d_func(), void _q_modelReset())
  265. #ifdef QT_KEYPAD_NAVIGATION
  266.     Q_PRIVATE_SLOT(d_func(), void _q_completerActivated())
  267. #endif
  268. };
  269. inline void QComboBox::addItem(const QString &atext, const QVariant &auserData)
  270. { insertItem(count(), atext, auserData); }
  271. inline void QComboBox::addItem(const QIcon &aicon, const QString &atext,
  272.                                const QVariant &auserData)
  273. { insertItem(count(), aicon, atext, auserData); }
  274. inline void QComboBox::insertItem(int aindex, const QString &atext,
  275.                                   const QVariant &auserData)
  276. { insertItem(aindex, QIcon(), atext, auserData); }
  277. #endif // QT_NO_COMBOBOX
  278. QT_END_NAMESPACE
  279. QT_END_HEADER
  280. #endif // QCOMBOBOX_H