Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«ΠžΡΠ½ΠΎΠ²Ρ‹ программирования Π² LinuxΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 309

Автор ΠœΡΡ‚ΡŒΡŽ НСйл

Для задания ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π²Ρ‹Π·ΠΎΠ²ΠΈΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄

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.

ΠžΡΠ½ΠΎΠ²Ρ‹ программирования Π² Linux - image071.jpg

Рис. 17.6

Как это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚

Π‘ΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Ρ‹ Ρ€Π°ΡΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰Π΅Π³ΠΎΡΡ списка Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΌ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Ρ‹. Главная новая Π΄Π΅Ρ‚Π°Π»ΡŒ β€” Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

insertStrList
для сохранСния списка Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² Π² Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π΅.

Как ΠΈ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… содСрТащих тСкст Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π°Ρ…, ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, которая Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ значСния ΠΈΠ»ΠΈ Π² ΠΎΠ±Ρ‰Π΅ΠΌ случаС тСкста Ρ€Π°ΡΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰Π΅Π³ΠΎΡΡ списка.