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

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

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

Β QPushButton* button = new QPushButton("Ok", widget, "button");

Β vbox->addWidget(button);

Β resize(350, 200);

Β connect(button, SIGNAL(clicked()), this, SLOT(Clicked()));

}

5.Β Π—Π°Ρ‚Π΅ΠΌ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ для Π²Ρ‹Π²ΠΎΠ΄Π° состояния Π·Π°Π΄Π°Π½Π½ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ

QButton
:

void Buttons::PrintActive(QButton *button) {

Β if (button->isOn())

Β  std::cout << button->name() << " is checked\n";

Β else

Β  std::cout" << button->name() << " is not checked\n";

}

void Buttons::Clicked(void) {

Β PrintActive(checkbox);

Β PrintActive(radiobutton1);

Β PrintActive(radiobutton2);

Β std::cout << "\n";

}

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

Β QApplication app(argc, argv);

Β Buttons *window = new Buttons();

Β app.setMainWidget(window);

Β window->show();

Β return app.exec();

}

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

Π­Ρ‚ΠΎΡ‚ простой ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, ΠΊΠ°ΠΊ ΠΎΠΏΡ€Π°ΡˆΠΈΠ²Π°Ρ‚ΡŒ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Ρ‹ ΠΊΠ½ΠΎΠΏΠΎΠΊ Qt Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ². ПослС создания всС ΠΎΠ½ΠΈ ΠΏΠΎ большСй части Π΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ. НапримСр, функция

PrintActive
дСмонстрируСт, ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ состояниС ΠΊΠ½ΠΎΠΏΠΊΠΈ (Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° ΠΈΠ»ΠΈ Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½Π°). ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΎ, ΠΊΠ°ΠΊ ΠΎΠ½Π° дСйствуСт Π² случаС Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… состояниС ΠΊΠ½ΠΎΠΏΠΎΠΊ Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ², Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Ρ„Π»Π°ΠΆΠΊΠΈ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»ΠΈ (Ρ€Π°Π΄ΠΈΠΎΠΊΠ½ΠΎΠΏΠΊΠΈ). Π’ основном ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Ρ‹Π·ΠΎΠ²Ρ‹ для создания Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π° ΠΊΠ½ΠΎΠΏΠΊΠΈ. Π Π°Π΄ΠΈΠΎΠΊΠ½ΠΎΠΏΠΊΠΈ, Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ слоТныС (Ρ‚.ΠΊ. Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½Π° Π² Π³Ρ€ΡƒΠΏΠΏΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π°), ΠΏΡ€ΠΈ создании Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ большС всСго Ρ€Π°Π±ΠΎΡ‚Ρ‹. Π’ случаС Ρ€Π°Π΄ΠΈΠΎΠΊΠ½ΠΎΠΏΠΎΠΊ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ
QButtonGroup
для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎΠΉ Ρ€Π°Π΄ΠΈΠΎΠΊΠ½ΠΎΠΏΠΊΠΈ Π² Π³Ρ€ΡƒΠΏΠΏΠ΅ Π² любой ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

QComboBox

ΠŸΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»ΠΈ (Ρ€Π°Π΄ΠΈΠΎΠΊΠ½ΠΎΠΏΠΊΠΈ) β€” ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΉ способ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΈΠ· нСбольшого числа Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ², скаТСм ΡˆΠ΅ΡΡ‚ΠΈ ΠΈΠ»ΠΈ мСньшС. Если Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² большС ΡˆΠ΅ΡΡ‚ΠΈ, ситуация Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΈΠ·-ΠΏΠΎΠ΄ контроля ΠΈ становится Π΅Ρ‰Π΅ Π±ΠΎΠ»Π΅Π΅ напряТСнной, ΠΊΠΎΠ³Π΄Π° количСство Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² растСт, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΠΎΡ‰ΡƒΡ‚ΠΈΠΌΠΎΠΌΡƒ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΡŽ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΎΠΊΠ½Π°. Π’ этом случаС прСкрасным Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использованиС поля Π²Π²ΠΎΠ΄Π° с Ρ€Π°ΡΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΌΡΡ мСню, Ρ‚Π°ΠΊΠΆΠ΅ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠ΅ Ρ€Π°ΡΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΌΡΡ списком (combo box). Π’Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ выводятся, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Ρ‰Π΅Π»ΠΊΠ°Π΅Ρ‚Π΅ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡ‹ΡˆΠΈ ΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚Π΅ мСню ΠΈ количСство Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² ΠΏΡ€ΠΈ этом ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ удобством поиска Π² спискС.

Π’ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π΅

QComboBox
ΡΠΎΡ‡Π΅Ρ‚Π°ΡŽΡ‚ΡΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ возмоТности Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΎΠ²
QLineEdit
ΠΈ
QPushButton
ΠΈ Ρ€Π°ΡΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰ΠΈΡ…ΡΡ мСню, позволяя Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ ΠΈΠ· Π½Π΅ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡ€Π° Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ².

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
Новый элСмСнт Π½Π΅ вставляСтся Π² список Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ²