Категории
Самые читаемые
ChitatKnigi.com » 🟢Компьютеры и Интернет » Интернет » Основы программирования в Linux - Мэтью Нейл

Основы программирования в Linux - Мэтью Нейл

Читать онлайн Основы программирования в Linux - Мэтью Нейл
1 ... 305 306 307 308 309 310 311 312 313 ... 324
Перейти на страницу:

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать

Для задания политики вызовите метод InsertionPolicy виджета QComboBox:

combo->setInsertionPolicy(QComboBox::AtTop);

Давайте бросим взгляд на конструкторы и методы выбора варианта виджета QComboBox:

<b>#include &lt;qcombobox.h&gt;</b>

<b>QComboBox(QWidget *parent = 0, const char *name = 0);</b>

<b>QComboBox(bool readwrite, QWidget *parent = 0, const char *name = 0);</b>

<b>int count();</b>

<b>void insertStringList(const QStringList&amp; list, int index = -1);</b>

<b>void insertStrList(const QStrList&amp; list, int index = -1);</b>

<b>void insertStrList(const QStrList *list, int index = -1);</b>

<b>void insertStrList (const char **strings, int numStrings = -1, int index = -1);</b>

<b>void insertItem(const QString &amp;t, int index = -1);</b>

<b>void removeItem(int index);</b>

<b>virtual void setCurrentItem(int index);</b>

<b>QString currentText();</b>

<b>virtual void setCurrentText(const QString &amp;);</b>

<b>void setEditable(bool);</b>

Функция count возвращает количество вариантов в списке. QStringList и QStrList — классы коллекций, которые можно применять для вставки вариантов. Удалить варианты можно с помощью метода removeItem, извлечь и задать текущий вариант можно, с помощью методов currentText и setCurrentText, а перейти в редактируемый режим — с помощью метода setEditable.

QComboBox порождает сигнал textChanged(QString&amp;) при каждом новом выборе варианта, передавая вновь выбранный элемент как аргумент.

Выполните упражнение 17.6.

Упражнение 17.6. Виджет QComboBox

В этом примере вы сделаете попытку применить виджет QComboBox и посмотрите, как ведут себя сигналы и слоты с параметрами. Вы создадите класс ComboBox, потомка QMainWindow. В нем будут два виджета QComboBox: один для чтения/записи, другой только для чтения. Вы установите связь с сигналом textChanged для того, чтобы получать текущее значение при каждом его изменении.

1. Введите следующий программный код и назовите файл ComboBox.h:

#include &lt;qmainwindow.h&gt;

#include &lt;qcombobox.h&gt;

class ComboBox : public QMainWindow {

 Q_OBJECT

public:

 ComboBox(QWidget* parent = 0, const char *name = 0);

private slots:

 void Changed(const QString&amp; s);

};

2. Интерфейс состоит из двух виджетов QComboBox: один редактируемый, а другой предназначен только для чтения. Вы заполните оба списка одними и теми же вариантами:

#include &quot;ComboBox.moс&quot;

#include &lt;qlayout.h&gt;

#include &lt;iostream&gt;

ComboBox::ComboBox(QWidget *parent, const char *name) :

 QMainWindow(parent, name) {

 QWidget *widget = new QWidget(this);

 setCentralWidget(widget);

 QVBoxLayout *vbox = new QVBoxLayout(widget, 5, 10, &quot;vbox&quot;);

 QComboBox *editablecombo = new QComboBox(TRUE, widget, &quot;editable&quot;);

 vbox-&gt;addWidget(editablecombo);

 QComboBox *readonlycombo = new QComboBox(FALSE, widget, &quot;readonly&quot;);

 vbox-&gt;addWidget(readonlycombo);

 static const char* items[] = {&quot;Macbeth&quot;, &quot;Twelfth Night&quot;, &quot;Othello&quot;, 0};

 editablecombo-&gt;insertStrList(items);

 readonlycombo-&gt;insertStrList(items);

 connect(editablecombo, SIGNAL(textchanged(const QString&amp;),

  this, SLOT(Changed(const QString&amp;)));

 resize(350, 200);

}

3. Далее приведена функция слота. Обратите внимание на параметр s типа QString, передаваемый сигналом:

void ComboBox::Changed(const QString&amp; s) {

 std::cout &lt;&lt; s &lt;&lt; &quot;n&quot;;

}

int main(int argc, char **argv) {

 QApplication app(argc, argv);

 ComboBox* window = new ComboBox();

 app.setMainWidget(window);

 window-&gt;show();

 return app.exec();

}

Вы сможете видеть вновь выбранные из редактируемого QComboBox варианты в командной строке на рис. 17.6.

Рис. 17.6

Как это работает

Создаются виджеты раскрывающегося списка во многом так же, как и другие виджеты. Главная новая деталь — вызов функции insertStrList для сохранения списка вариантов в виджете.

Как и в других содержащих текст виджетах, можно задать функцию, которая будет вызываться каждый раз при изменении значения или в общем случае текста раскрывающегося списка.

1 ... 305 306 307 308 309 310 311 312 313 ... 324
Перейти на страницу:
Открыть боковую панель
Комментарии
Жанна
Жанна 27.07.2025 - 01:48
Люблю настоящих мужчин. Главный герой, именно такой.
Майя
Майя 25.07.2025 - 01:56
Благодарю за рассказ. Не растянуто и очень интересно
Руслана
Руслана 17.06.2025 - 12:59
Замечательные рекомендации по подбору персонала 👏
Елизавета
Елизавета 16.05.2025 - 16:36
Осилила только первую страницу, как можно вообще такую муть писать, не видела, случайно, в лифте, не узнала своего босса. Это же детский сад. Все как под копирку, еще застряли в лифте, случайно не