QComboBox ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΡΠΊΡΡΡΡΠΌ, ΠΊΠ°ΠΊ Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ ΠΈ Π·Π°ΠΏΠΈΡΠΈ, ΡΠ°ΠΊ ΠΈ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ. ΠΡΠ»ΠΈ ΠΎΠ½ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΈΡΠ°ΡΡ ΠΈ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡ, ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΌΠΎΠΆΠ΅Ρ Π²Π²Π΅ΡΡΠΈ Π½ΠΎΠ²ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ Π² Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅ΠΌΡΠΌ; Π² ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ Π²ΡΠ±ΠΎΡΠΎΠΌ Π²Π°ΡΠΈΠ°Π½ΡΠ° ΠΈΠ· ΡΠ°ΡΠΊΡΡΠ²Π°ΡΡΠ΅Π³ΠΎΡΡ ΡΠΏΠΈΡΠΊΠ°.
ΠΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ Π²ΠΈΠ΄ΠΆΠ΅ΡΠ° QComboBox ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ, ΠΎΡΠΊΡΡΡ Π»ΠΈ ΠΎΠ½ Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ ΠΈ Π·Π°ΠΏΠΈΡΠΈ ΠΈΠ»ΠΈ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ, Π·Π°Π΄Π°Π²Π°Ρ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ΅:
QComboBox *combo = new QComboBox(TRUE, parent, "widgetname");
ΠΠ΅ΡΠ΅Π΄Π°ΡΠ° Π·Π½Π°ΡΠ΅Π½ΠΈΡ TRUE ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΈΡ QComboBox Π² ΡΠ΅ΠΆΠΈΠΌ "ΡΡΠ΅Π½ΠΈΠ΅/Π·Π°ΠΏΠΈΡΡ". ΠΡΡΠ°Π»ΡΠ½ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ β ΠΎΠ±ΡΡΠ½ΡΠΉ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΈΠΉ Π²ΠΈΠ΄ΠΆΠ΅Ρ ΠΈ ΠΈΠΌΡ ΡΠΎΠ·Π΄Π°Π²Π°Π΅ΠΌΠΎΠ³ΠΎ Π²ΠΈΠ΄ΠΆΠ΅ΡΠ°.
ΠΠ°ΠΊ Π²ΡΠ΅ Π²ΠΈΠ΄ΠΆΠ΅ΡΡ Qt, QComboBox ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ Π³ΠΈΠ±ΠΊΠΎΡΡΡΡ ΠΈ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ ΡΠΈΡΠΎΠΊΠΈΠΉ Π½Π°Π±ΠΎΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ.
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ Π²Π°ΡΠΈΠ°Π½ΡΡ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡ ΠΈΠ»ΠΈ Π½Π°Π±ΠΎΡΠΎΠΌ, ΠΊΠ°ΠΊ ΡΠΈΠΏ QString ΠΈΠ»ΠΈ Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΌ ΡΠΎΡΠΌΠ°ΡΠ΅ char*.
ΠΠ»Ρ Π²ΡΡΠ°Π²ΠΊΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π²Π°ΡΠΈΠ°Π½ΡΠ° Π²ΡΠ·ΠΎΠ²ΠΈΡΠ΅ ΡΡΠ½ΠΊΡΠΈΡ insertItem:
combo->insertItem(QString("An Item"), 1);
ΠΡΠΈΠ²Π΅Π΄Π΅Π½Π½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠΈΠΏΠ° QString ΠΈ Π½ΠΎΠΌΠ΅Ρ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ Π² ΡΠΏΠΈΡΠΊΠ΅. Π Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ 1 Π²ΡΡΠ°Π²Π»ΡΠ΅Ρ Π²Π°ΡΠΈΠ°Π½Ρ Π² ΡΠΏΠΈΡΠΎΠΊ ΠΏΠ΅ΡΠ²ΡΠΌ.
ΠΠ»Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ Π² ΠΊΠΎΠ½Π΅Ρ ΡΠΏΠΈΡΠΊΠ° Π·Π°Π΄Π°ΠΉΡΠ΅ Π»ΡΠ±ΠΎΠ΅ ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ.
ΠΠΎΡΠ°Π·Π΄ΠΎ ΡΠ°ΡΠ΅ Π²Ρ Π±ΡΠ΄Π΅ΡΠ΅ Π²ΡΡΠ°Π²Π»ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΡΠΏΠΈΡΠΊΠ° ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ, Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ ΠΊΠ»Π°ΡΡ QStrList ΠΈΠ»ΠΈ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π΄Π°Π»Π΅Π΅, ΠΌΠ°ΡΡΠΈΠ² char*:
char* weather[] = {"Thunder", "Lightning", "Rain", 0};
combo->insertStrList(weather, 3);
Π ΡΠ½ΠΎΠ²Π° Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°Π΄Π°ΡΡ Π½ΠΎΠΌΠ΅Ρ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ Π²ΡΡΠ°Π²Π»ΡΠ΅ΠΌΡΡ Π² ΡΠΏΠΈΡΠΎΠΊ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ².
ΠΡΠ»ΠΈ Π² Π²ΠΈΠ΄ΠΆΠ΅ΡΠ΅ QComboBox Π·Π°Π΄Π°Π½ ΡΠ΅ΠΆΠΈΠΌ "ΡΡΠ΅Π½ΠΈΠ΅/Π·Π°ΠΏΠΈΡΡ", Π²Π²ΠΎΠ΄ΠΈΠΌΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ Π²Π°ΡΠΈΠ°Π½ΡΡ ΠΌΠΎΠ³ΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π²ΡΡΠ°Π²Π»ΡΡΡΡΡ Π² ΡΠΏΠΈΡΠΎΠΊ. ΠΡΠΎ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ΅, ΡΠΊΠΎΠ½ΠΎΠΌΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ, ΠΈΠ·Π±Π°Π²Π»ΡΡΡΠ΅Π΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΎΡ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡΠ° Π²Π°ΡΠΈΠ°Π½ΡΠ°, Π΅ΡΠ»ΠΈ ΠΎΠ½ Ρ ΠΎΡΠ΅Ρ ΡΠΆΠ΅ Π²Π²Π΅Π΄Π΅Π½Π½ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π·.
ΠΠ΅ΡΠΎΠ΄ InsertionPolicy ΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ ΠΏΠΎΠ·ΠΈΡΠΈΠ΅ΠΉ Π²Π²ΠΎΠ΄ΠΈΠΌΠΎΠ³ΠΎ Π² ΡΠΏΠΈΡΠΎΠΊ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΠ±ΡΠ°ΡΡ ΠΎΠ΄Π½ΠΎ ΠΈΠ· Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ, ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΡ Π² ΡΠ°Π±Π». 17.4.
Π’Π°Π±Π»ΠΈΡΠ° 17.4
ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΠ΅ΠΉΡΡΠ²ΠΈΠ΅ QComboBox::AtTop ΠΡΡΠ°Π²Π»ΡΠ΅Ρ Π²Π²ΠΎΠ΄ΠΈΠΌΡΠΉ Π² ΡΠΏΠΈΡΠΎΠΊ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΏΠ΅ΡΠ²ΡΠΌ QComboBox::AtBottom ΠΡΡΠ°Π²Π»ΡΠ΅Ρ Π²Π²ΠΎΠ΄ΠΈΠΌΡΠΉ Π² ΡΠΏΠΈΡΠΎΠΊ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΌ QComboBox::AtCurrent ΠΠ°ΠΌΠ΅Π½ΡΠ΅Ρ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π²ΡΠ±ΡΠ°Π½Π½ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ Π² ΡΠΏΠΈΡΠΊΠ΅ QComboBox::BeforeCurrent ΠΡΡΠ°Π²Π»ΡΠ΅Ρ Π²Π²ΠΎΠ΄ΠΈΠΌΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΏΠ΅ΡΠ΅Π΄ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π²ΡΠ±ΡΠ°Π½Π½ΡΠΌ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠΌ ΠΈΠ· ΡΠΏΠΈΡΠΊΠ° QComboBox::AfterCurrent ΠΡΡΠ°Π²Π»ΡΠ΅Ρ Π²Π²ΠΎΠ΄ΠΈΠΌΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΏΠΎΡΠ»Π΅ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π²ΡΠ±ΡΠ°Π½Π½ΠΎΠ³ΠΎ Π²Π°ΡΠΈΠ°Π½ΡΠ° ΠΈΠ· ΡΠΏΠΈΡΠΊΠ° QComboBox::NoInsertion ΠΠΎΠ²ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π½Π΅ Π²ΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ Π² ΡΠΏΠΈΡΠΎΠΊ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ²ΠΠ»Ρ Π·Π°Π΄Π°Π½ΠΈΡ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ Π²ΡΠ·ΠΎΠ²ΠΈΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄ InsertionPolicy Π²ΠΈΠ΄ΠΆΠ΅ΡΠ° QComboBox:
combo->setInsertionPolicy(QComboBox::AtTop);
ΠΠ°Π²Π°ΠΉΡΠ΅ Π±ΡΠΎΡΠΈΠΌ Π²Π·Π³Π»ΡΠ΄ Π½Π° ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΡ ΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ Π²ΡΠ±ΠΎΡΠ° Π²Π°ΡΠΈΠ°Π½ΡΠ° Π²ΠΈΠ΄ΠΆΠ΅ΡΠ° QComboBox:
#include <qcombobox.h>
QComboBox(QWidget *parent = 0, const char *name = 0);
QComboBox(bool readwrite, QWidget *parent = 0, const char *name = 0);
int count();
void insertStringList(const QStringList& list, int index = -1);
void insertStrList(const QStrList& list, int index = -1);
void insertStrList(const QStrList *list, int index = -1);
void insertStrList (const char **strings, int numStrings = -1, int index = -1);
void insertItem(const QString &t, int index = -1);
void removeItem(int index);
virtual void setCurrentItem(int index);
QString currentText();
virtual void setCurrentText(const QString &);
void setEditable(bool);
Π€ΡΠ½ΠΊΡΠΈΡ count Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² Π² ΡΠΏΠΈΡΠΊΠ΅. QStringList ΠΈ QStrList β ΠΊΠ»Π°ΡΡΡ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ Π΄Π»Ρ Π²ΡΡΠ°Π²ΠΊΠΈ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ². Π£Π΄Π°Π»ΠΈΡΡ Π²Π°ΡΠΈΠ°Π½ΡΡ ΠΌΠΎΠΆΠ½ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Π° removeItem, ΠΈΠ·Π²Π»Π΅ΡΡ ΠΈ Π·Π°Π΄Π°ΡΡ ΡΠ΅ΠΊΡΡΠΈΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ΠΌΠΎΠΆΠ½ΠΎ, Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² currentText ΠΈ setCurrentText, Π° ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ Π² ΡΠ΅Π΄Π°ΠΊΡΠΈΡΡΠ΅ΠΌΡΠΉ ΡΠ΅ΠΆΠΈΠΌ β Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Π° setEditable.
QComboBox ΠΏΠΎΡΠΎΠΆΠ΄Π°Π΅Ρ ΡΠΈΠ³Π½Π°Π» textChanged(QString&) ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π½ΠΎΠ²ΠΎΠΌ Π²ΡΠ±ΠΎΡΠ΅ Π²Π°ΡΠΈΠ°Π½ΡΠ°, ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Ρ Π²Π½ΠΎΠ²Ρ Π²ΡΠ±ΡΠ°Π½Π½ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΊΠ°ΠΊ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ.
ΠΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΡΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΠ΅ 17.6.
Π£ΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΠ΅ 17.6. ΠΠΈΠ΄ΠΆΠ΅Ρ QComboBoxΠ ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π²Ρ ΡΠ΄Π΅Π»Π°Π΅ΡΠ΅ ΠΏΠΎΠΏΡΡΠΊΡ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ Π²ΠΈΠ΄ΠΆΠ΅Ρ QComboBox ΠΈ ΠΏΠΎΡΠΌΠΎΡΡΠΈΡΠ΅, ΠΊΠ°ΠΊ Π²Π΅Π΄ΡΡ ΡΠ΅Π±Ρ ΡΠΈΠ³Π½Π°Π»Ρ ΠΈ ΡΠ»ΠΎΡΡ Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ. ΠΡ ΡΠΎΠ·Π΄Π°Π΄ΠΈΡΠ΅ ΠΊΠ»Π°ΡΡ ComboBox, ΠΏΠΎΡΠΎΠΌΠΊΠ° QMainWindow. Π Π½Π΅ΠΌ Π±ΡΠ΄ΡΡ Π΄Π²Π° Π²ΠΈΠ΄ΠΆΠ΅ΡΠ° QComboBox: ΠΎΠ΄ΠΈΠ½ Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ/Π·Π°ΠΏΠΈΡΠΈ, Π΄ΡΡΠ³ΠΎΠΉ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ. ΠΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ ΡΠ²ΡΠ·Ρ Ρ ΡΠΈΠ³Π½Π°Π»ΠΎΠΌ textChanged Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΡΠ΅ΠΊΡΡΠ΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π΅Π³ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ.
1. ΠΠ²Π΅Π΄ΠΈΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΉ ΠΊΠΎΠ΄ ΠΈ Π½Π°Π·ΠΎΠ²ΠΈΡΠ΅ ΡΠ°ΠΉΠ» ComboBox.h:
#include <qmainwindow.h>
#include <qcombobox.h>
class ComboBox : public QMainWindow {
Q_OBJECT
public:
ComboBox(QWidget* parent = 0, const char *name = 0);
private slots:
void Changed(const QString& s);
};
2. ΠΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· Π΄Π²ΡΡ Π²ΠΈΠ΄ΠΆΠ΅ΡΠΎΠ² QComboBox: ΠΎΠ΄ΠΈΠ½ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΡΠ΅ΠΌΡΠΉ, Π° Π΄ΡΡΠ³ΠΎΠΉ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ. ΠΡ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΠΎΠ±Π° ΡΠΏΠΈΡΠΊΠ° ΠΎΠ΄Π½ΠΈΠΌΠΈ ΠΈ ΡΠ΅ΠΌΠΈ ΠΆΠ΅ Π²Π°ΡΠΈΠ°Π½ΡΠ°ΠΌΠΈ:
#include "ComboBox.moΡ"
#include <qlayout.h>
#include <iostream>
ComboBox::ComboBox(QWidget *parent, const char *name) :
QMainWindow(parent, name) {
QWidget *widget = new QWidget(this);
setCentralWidget(widget);
QVBoxLayout *vbox = new QVBoxLayout(widget, 5, 10, "vbox");
QComboBox *editablecombo = new QComboBox(TRUE, widget, "editable");
vbox->addWidget(editablecombo);
QComboBox *readonlycombo = new QComboBox(FALSE, widget, "readonly");
vbox->addWidget(readonlycombo);
static const char* items[] = {"Macbeth", "Twelfth Night", "Othello", 0};
editablecombo->insertStrList(items);
readonlycombo->insertStrList(items);
connect(editablecombo, SIGNAL(textchanged(const QString&),
this, SLOT(Changed(const QString&)));
resize(350, 200);
}
3. ΠΠ°Π»Π΅Π΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π° ΡΡΠ½ΠΊΡΠΈΡ ΡΠ»ΠΎΡΠ°. ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ s ΡΠΈΠΏΠ° QString, ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Π΅ΠΌΡΠΉ ΡΠΈΠ³Π½Π°Π»ΠΎΠΌ:
void ComboBox::Changed(const QString& s) {
std::cout << s << "\n";
}
int main(int argc, char **argv) {
QApplication app(argc, argv);
ComboBox* window = new ComboBox();
app.setMainWidget(window);
window->show();
return app.exec();
}
ΠΡ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΠΈΠ΄Π΅ΡΡ Π²Π½ΠΎΠ²Ρ Π²ΡΠ±ΡΠ°Π½Π½ΡΠ΅ ΠΈΠ· ΡΠ΅Π΄Π°ΠΊΡΠΈΡΡΠ΅ΠΌΠΎΠ³ΠΎ QComboBox Π²Π°ΡΠΈΠ°Π½ΡΡ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅ Π½Π° ΡΠΈΡ. 17.6.
Π ΠΈΡ. 17.6
ΠΠ°ΠΊ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ
Π‘ΠΎΠ·Π΄Π°ΡΡΡΡ Π²ΠΈΠ΄ΠΆΠ΅ΡΡ ΡΠ°ΡΠΊΡΡΠ²Π°ΡΡΠ΅Π³ΠΎΡΡ ΡΠΏΠΈΡΠΊΠ° Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΌ ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ Π²ΠΈΠ΄ΠΆΠ΅ΡΡ. ΠΠ»Π°Π²Π½Π°Ρ Π½ΠΎΠ²Π°Ρ Π΄Π΅ΡΠ°Π»Ρ β Π²ΡΠ·ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΈ insertStrList Π΄Π»Ρ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ ΡΠΏΠΈΡΠΊΠ° Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² Π² Π²ΠΈΠ΄ΠΆΠ΅ΡΠ΅.
ΠΠ°ΠΊ ΠΈ Π² Π΄ΡΡΠ³ΠΈΡ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΡ ΡΠ΅ΠΊΡΡ Π²ΠΈΠ΄ΠΆΠ΅ΡΠ°Ρ , ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π±ΡΠ΄Π΅Ρ Π²ΡΠ·ΡΠ²Π°ΡΡΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π· ΠΏΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ Π² ΠΎΠ±ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠ΅ΠΊΡΡΠ° ΡΠ°ΡΠΊΡΡΠ²Π°ΡΡΠ΅Π³ΠΎΡΡ ΡΠΏΠΈΡΠΊΠ°.
QListView
Π‘ΠΏΠΈΡΠΊΠΈ ΠΈ Π΄Π΅ΡΠ΅Π²ΡΡ Π² ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ΅ Qt ΡΠΎΡΠΌΠΈΡΡΡΡΡΡ Π²ΠΈΠ΄ΠΆΠ΅ΡΠΎΠΌ QListView. ΠΡΠΎΡ Π²ΠΈΠ΄ΠΆΠ΅Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΊΠ°ΠΊ ΠΏΡΠΎΡΡΡΠ΅ ΡΠΏΠΈΡΠΊΠΈ, ΡΠ°ΠΊ ΠΈ ΠΈΠ΅ΡΠ°ΡΡ ΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π΄Π°Π½Π½ΡΠ΅, ΡΠ°Π·Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ Π½Π° ΡΡΡΠΎΠΊΠΈ ΠΈ ΡΡΠΎΠ»Π±ΡΡ. ΠΠ½ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° ΡΡΡΡΠΊΡΡΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠ² ΠΈΠ»ΠΈ ΡΠ΅Π³ΠΎ-ΡΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π΄ΠΎΡΠ΅ΡΠ½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΡΠΊΡΡΡΡ ΠΈ ΡΠ²Π΅ΡΠ½ΡΡΡ, ΡΠ΅Π»ΠΊΠ½ΡΠ² ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡΡΠΈ Π·Π½Π°ΠΊ "ΠΏΠ»ΡΡ" ΠΈΠ»ΠΈ "ΠΌΠΈΠ½ΡΡ", ΡΠ°ΠΊ ΠΆΠ΅ ΠΊΠ°ΠΊ Π² ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΌ ΠΎΠ±ΠΎΠ·ΡΠ΅Π²Π°ΡΠ΅Π»Π΅.
Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ Π²ΠΈΠ΄ΠΆΠ΅ΡΠ° GTK+ ListView Π²ΠΈΠ΄ΠΆΠ΅Ρ QListView ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ ΠΈ Π΄Π°Π½Π½ΡΠ΅, ΠΈ ΠΈΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅, ΡΡΠΎ ΡΠ΄Π΅Π»Π°Π½ΠΎ Π΄Π»Ρ ΠΎΠ±Π»Π΅Π³ΡΠ΅Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ, Π΅ΡΠ»ΠΈ Π½Π΅ Π΄Π»Ρ ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ Π³ΠΈΠ±ΠΊΠΎΡΡΠΈ.
Π Π²ΠΈΠ΄ΠΆΠ΅ΡΠ΅ QListView ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ±ΡΠ°ΡΡ ΡΡΡΠΎΠΊΠΈ ΠΈΠ»ΠΈ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΡΡΠ΅ΠΉΠΊΠΈ ΠΈ Π·Π°ΡΠ΅ΠΌ Π²ΡΡΠ΅Π·Π°ΡΡ ΠΈ Π²ΡΡΠ°Π²ΠΈΡΡ Π΄Π°Π½Π½ΡΠ΅, ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈΡ ΠΏΠΎ ΡΡΠΎΠ»Π±ΡΡ ΠΈ Π²Ρ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ Π²ΠΈΠ΄ΠΆΠ΅ΡΡ QCheckBox, ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½Π½ΡΠ΅ Π² ΡΡΠ΅ΠΉΠΊΠ°Ρ . Π ΡΡΠΎΡ Π²ΠΈΠ΄ΠΆΠ΅Ρ Π²ΡΡΡΠΎΠ΅Π½ΠΎ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ β ΠΊΠ°ΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ Π²Π°ΠΌ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π»ΠΈΡΡ Π²ΡΡΠ°Π²ΠΈΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΈ Π·Π°Π΄Π°ΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π° ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
Π‘ΠΎΠ·Π΄Π°Π΅ΡΡΡ Π²ΠΈΠ΄ΠΆΠ΅Ρ QListView ΠΎΠ±ΡΡΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π·Π°Π΄Π°Π½ΠΈΠ΅ΠΌ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ Π²ΠΈΠ΄ΠΆΠ΅ΡΠ° ΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ Π²ΠΈΠ΄ΠΆΠ΅ΡΠ°:
QListView *view = new QListView(parent, "name");
ΠΠ»Ρ Π·Π°Π΄Π°Π½ΠΈΡ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² ΡΡΠΎΠ»Π±ΡΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π½Π°Π·Π²Π°Π½Π½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ addColumn:
view->addColumn("Left Column", width1); // ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ ΡΠΈΡΠΈΠ½Ρ
view->addColumn("Right Column"); // Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π·Π°Π΄Π°Π²Π°Π΅ΠΌΡΠΌ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ
Π¨ΠΈΡΠΈΠ½Π° ΡΡΠΎΠ»Π±ΡΠ° Π·Π°Π΄Π°Π΅ΡΡΡ Π² ΠΏΠΈΠΊΡΠ΅Π»Π°Ρ ΠΈΠ»ΠΈ, Π΅ΡΠ»ΠΈ ΠΏΡΠΎΠΏΡΡΠ΅Π½Π°, ΠΏΡΠΈΡΠ°Π²Π½ΠΈΠ²Π°Π΅ΡΡΡ ΠΊ Π²Π΅Π»ΠΈΡΠΈΠ½Π΅ ΡΠ°ΠΌΠΎΠ³ΠΎ Π΄Π»ΠΈΠ½Π½ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Π² ΡΡΠΎΠ»Π±ΡΠ΅. Π Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΌ ΠΏΡΠΈ Π²ΡΡΠ°Π²ΠΊΠ΅ ΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΡΠΈΡΠΈΠ½Π° ΡΡΠΎΠ»Π±ΡΠ° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΌΠ΅Π½ΡΠ΅ΡΡΡ.
ΠΠ°Π½Π½ΡΠ΅ Π²ΡΡΠ°Π²Π»ΡΡΡΡΡ Π² QListView Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° QListViewItem, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠ΅Π³ΠΎ ΡΡΡΠΎΠΊΡ Π΄Π°Π½Π½ΡΡ . ΠΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π»ΠΈΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΎΠ±ΡΠ΅ΠΊΡ QListView ΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΡΡΡΠΎΠΊΠΈ, ΠΈ ΠΎΠ½Π° Π΄ΠΎΠ±Π°Π²ΠΈΡΡΡ Π² ΠΊΠΎΠ½Π΅Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ:
QListViewItem *toplevel = new QListViewItem(view, "Left Data", "Right Data");