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.
| Значение | Действие |
|---|---|
QComboBox::AtTop | Вставляет вводимый в список элемент первым |
QComboBox::AtBottom | Вставляет вводимый в список элемент последним |
QComboBox::AtCurrent | Заменяет предварительно выбранный вариант в списке |
QComboBox::BeforeCurrent | Вставляет вводимый элемент перед предварительно выбранным вариантом из списка |
QComboBox::AfterCurrent | Вставляет вводимый элемент после предварительно выбранного варианта из списка |
QComboBox::NoInsertion | Новый элемент не вставляется в список вариантов |
Для задания политики вызовите метод InsertionPolicy виджета QComboBox:
combo->setInsertionPolicy(QComboBox::AtTop);
Давайте бросим взгляд на конструкторы и методы выбора варианта виджета QComboBox:
#include
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.
QComboBox