ΠΠ΅ΠΌΠΎΠ΄Π°Π»ΡΠ½ΡΠ΅ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΡΠ΅ ΠΎΠΊΠ½Π° ΡΠ»Π΅Π³ΠΊΠ° ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ ΠΎΡ ΠΎΠ±ΡΡΠ½ΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΠΎΠΊΠΎΠ½ ΠΏΡΠ΅ΠΆΠ΄Π΅ Π²ΡΠ΅Π³ΠΎ ΡΠ΅ΠΌ, ΡΡΠΎ ΡΠ°ΡΠΏΠΎΠ»Π°Π³Π°ΡΡΡΡ ΠΏΠΎΠ²Π΅ΡΡ ΡΠ²ΠΎΠ΅Π³ΠΎ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°, ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π½Π° ΠΏΠ°Π½Π΅Π»ΠΈ Π·Π°Π΄Π°Ρ ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠΊΡΡΠ²Π°ΡΡΡΡ, ΠΊΠΎΠ³Π΄Π° Π²ΡΠ·Π²Π°Π½ ΡΠ»ΠΎΡ accept ΠΈΠ»ΠΈ reject.
ΠΠ»Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π½Π΅ΠΌΠΎΠ΄Π°Π»ΡΠ½ΠΎΠ³ΠΎ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° Π²ΡΠ·ΡΠ²Π°ΠΉΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄ show, ΠΊΠ°ΠΊ Π²Ρ ΡΠ΄Π΅Π»Π°Π»ΠΈ Π±Ρ Π΄Π»Ρ ΠΎΠΊΠ½Π° QMainWindow:
MyDialog *dialog = new MyDialog(this, "mydialog");
dialog->show();
Π€ΡΠ½ΠΊΡΠΈΡ show Π²ΡΠ²ΠΎΠ΄ΠΈΡ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ Π½Π° ΡΠΊΡΠ°Π½ ΠΈ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΡ ΡΠΈΠΊΠ»Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ. ΠΠ»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π½Π°ΠΆΠ°ΡΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΡΠ»ΠΎΡΡ ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Ρ Π½ΠΈΠΌΠΈ ΡΠ²ΡΠ·Ρ:
MyDialog::MyDialog(QWidget *parent, const char *name) :
QDialog(parent, name) {
...
connect(ok_pushbutton, SIGNAL(clicked()), this, SLOT(OkClicked()));
connect(cancel_pushbutton, SIGNAL(clicked()), this, SLOT(CancelClicked()));
}
MyDialog::OkClicked() {
// ΠΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΡΡΠΎ-Π»ΠΈΠ±ΠΎ
}
MyDialog::CancelClicked() {
// ΠΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΡΡΠΎ-Π»ΠΈΠ±ΠΎ Π΄ΡΡΠ³ΠΎΠ΅
}
ΠΠ°ΠΊ ΠΈ Π² ΡΠ»ΡΡΠ°Π΅ ΠΌΠΎΠ΄Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°, Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠΊΡΡΠ²Π°Π΅ΡΡΡ ΠΏΡΠΈ Π½Π°ΠΆΠ°ΡΠΈΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ.
ΠΠΎΠ»ΡΠΌΠΎΠ΄Π°Π»ΡΠ½ΠΎΠ΅ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎΠΠ»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΠΎΠ»ΡΠΌΠΎΠ΄Π°Π»ΡΠ½ΠΎΠ³ΠΎ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ Π·Π°Π΄Π°ΡΡ ΡΠ»Π°Π³ ΠΌΠΎΠ΄Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅ΠΆΠΈΠΌΠ° Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ΅ QDialog ΠΈ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ ΠΌΠ΅ΡΠΎΠ΄ show:
QDialog(QWidget *parent=0, const char *name=0, bool modal=FALSE, WFlags f=0);
ΠΡ Π½Π΅ Π·Π°Π΄Π°Π΅ΡΠ΅ Π² ΠΌΠΎΠ΄Π°Π»ΡΠ½ΠΎΠΌ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠΌ ΠΎΠΊΠ½Π΅ ΡΠ»Π°Π³ ΠΌΠΎΠ΄Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅ΠΆΠΈΠΌΠ° ΡΠ°Π²Π½ΡΠΌ TRUE, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π²ΡΠ·ΠΎΠ² exec Π·Π°ΡΡΠ°Π²Π»ΡΠ΅Ρ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ Π² ΠΌΠΎΠ΄Π°Π»ΡΠ½ΡΠΉ ΡΠ΅ΠΆΠΈΠΌ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΡΠΎΠ³ΠΎ ΡΠ»Π°Π³Π°.
ΠΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ Π²Π°ΡΠ΅Π³ΠΎ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° Π±ΡΠ΄Π΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
MySMDialog::MySMDialog(QWidget *parent, const char *name):
QDialog(parent, name, TRUE) {
...
}
ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ ΠΊΠ°ΠΊ Π²Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠ»ΠΈ Π²Π°ΡΠ΅ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ, Π²ΡΠ·ΠΎΠ²ΠΈΡΠ΅ ΡΡΠ½ΠΊΡΠΈΡ show ΠΊΠ°ΠΊ ΠΎΠ±ΡΡΠ½ΠΎ ΠΈ Π·Π°ΡΠ΅ΠΌ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΠ΅ ΡΠ²ΠΎΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ, ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ΅ΡΠΊΠΈ Π²ΡΠ·ΡΠ²Π°Ρ QApplication::processEvents Π΄Π»Ρ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ Π²Π°ΡΠ΅Π³ΠΎ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°:
MySMDialog *dialog = MySMDialog(this, "semimodal");
dialog->show();
while (processing) {
doSomeProcessing();
app->processEvents();
if (dialog->wasCancelled()) break;
}
ΠΠ΅ΡΠ΅Π΄ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ΠΌ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅, Π½Π΅ ΡΠ½ΠΈΡΡΠΎΠΆΠ΅Π½ΠΎ Π»ΠΈ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ. ΠΠΌΠ΅ΠΉΡΠ΅ Π² Π²ΠΈΠ΄Ρ, ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ wasCancelled Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°ΡΡΡΡ ΠΊΠ»Π°ΡΡΠ° QDialog β Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ Π½Π°ΠΏΠΈΡΠ°ΡΡ Π΅Π΅ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ.
ΠΠΎΠΌΠΏΠ»Π΅ΠΊΡ Qt ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π³ΠΎΡΠΎΠ²ΡΠ΅ ΠΏΠΎΠ΄ΠΊΠ»Π°ΡΡΡ ΠΊΠ»Π°ΡΡΠ° QDialog, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π½ΡΠ΅ Π΄Π»Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ Π·Π°Π΄Π°Ρ, ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ Π²ΡΠ±ΠΎΡ ΡΠ°ΠΉΠ»ΠΎΠ², Π²Π²ΠΎΠ΄ ΡΠ΅ΠΊΡΡΠ°, ΠΈΠ½Π΄ΠΈΠΊΠ°ΡΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠ° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΈ Π²ΡΠ²ΠΎΠ΄ ΠΎΠΊΠ½Π° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ. ΠΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΡΠΈΡ Π²ΠΈΠ΄ΠΆΠ΅ΡΠΎΠ² Π² Π»ΡΠ±ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ ΡΠ±Π΅ΡΠ΅ΠΆΠ΅Ρ Π²Π°Ρ ΠΎΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° Π½Π΅ΠΏΡΠΈΡΡΠ½ΠΎΡΡΠ΅ΠΉ ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌ.
QMessageBox
QMessageBox β ΠΌΠΎΠ΄Π°Π»ΡΠ½ΠΎΠ΅ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ, ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡΠ΅Π΅ ΠΏΡΠΎΡΡΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Ρ ΠΏΠΈΠΊΡΠΎΠ³ΡΠ°ΠΌΠΌΠΎΠΉ ΠΈ ΠΊΠ½ΠΎΠΏΠΊΠ°ΠΌΠΈ. ΠΠΈΠΊΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΠ΅ΡΡΠ΅Π·Π½ΠΎΡΡΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΠΎΠ±ΡΡΠ½ΡΠ΅ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΈΠ»ΠΈ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ ΠΈ Π΄ΡΡΠ³ΡΡ Π²Π°ΠΆΠ½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ.
Π£ ΠΊΠ»Π°ΡΡΠ° QMessageBox Π΅ΡΡΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΈ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΎΠΊΠΎΠ½ Π²ΡΠ΅Ρ ΡΡΠ΅Ρ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΡΡ ΡΠΈΠΏΠΎΠ²:
#include <qmessagebox.h>
int information(QWidget *parent, const QString& caption,
const QString&text, int button0, int button1=0, int button2=0);
int warning(QWidget *parent, const QString& caption,
const QString& text, int button0, int button1, int button2=0);
int critical(QWidget *parent, const QString& caption,
const QString& text, int button0, int button1, int button2=0);
ΠΠΎΠΆΠ½ΠΎ Π²ΡΠ±ΡΠ°ΡΡ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΈΠ· ΡΠΏΠΈΡΠΊΠ° Π³ΠΎΡΠΎΠ²ΡΡ ΠΊΠ½ΠΎΠΏΠΎΠΊ QMessageBox, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌ, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΠΌ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌΠΈ:
β‘ QMessageBox::Ok;
β‘ QMessageBox::Cancel;
β‘ QMessageBox::Yes;
β‘ QMessageBox::No;
β‘ QMessageBox::Abort;
β‘ QMessageBox::Retry;
β‘ QMessageBox::Ignore.
Π’ΠΈΠΏΠΈΡΠ½ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΎΠΊΠ½Π° QMessageBox Π±ΡΠ΄Π΅Ρ ΠΏΠΎΡ ΠΎΠΆ Π½Π° ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠΉ Π΄Π°Π»Π΅Π΅ ΡΡΠ°Π³ΠΌΠ΅Π½Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°:
int result = QMessageBox::information(this,
"Engine Room Query",
"Do you wish to engage the HyperDrive?",
QMessageBox::Yes | QMessageBox::Default,
QMessageBox::No | QMessageBox::Escape);
switch (result) {
case QMessageBox::Yes:
hyperdrive->engage();
break;
case QMessageBox::No:
// ΡΠ΄Π΅Π»Π°ΠΉΡΠ΅ ΡΡΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ Π΅ΡΠ΅
break;
}
ΠΡ ΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΠ»ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ΅ΠΉ OR (|) ΠΊΠΎΠ΄Ρ ΠΊΠ½ΠΎΠΏΠΎΠΊ Ρ Π²Π°ΡΠΈΠ°Π½ΡΠ°ΠΌΠΈ Default ΠΈ Escape, ΡΡΠΎΠ±Ρ Π·Π°Π΄Π°ΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ, ΠΏΡΠΈ Π½Π°ΠΆΠ°ΡΠΈΠΈ ΠΊΠ»Π°Π²ΠΈΡ <Enter> (ΠΈΠ»ΠΈ <Return>) ΠΈ <Esc>. Π Π΅Π·ΡΠ»ΡΡΠΈΡΡΡΡΠ΅Π΅ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° ΡΠΈΡ. 17.8.
Π ΠΈΡ. 17.8
QInputDialog
ΠΠΊΠ½ΠΎ QInputDialog ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π΄Π»Ρ Π²Π²ΠΎΠ΄Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ, Π±ΡΠ΄Ρ ΡΠΎ ΡΠ΅ΠΊΡΡ, Π²Π°ΡΠΈΠ°Π½Ρ ΡΠ°ΡΠΊΡΡΠ²Π°ΡΡΠ΅Π³ΠΎΡΡ ΡΠΏΠΈΡΠΊΠ°, ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΠΎΠ΅ ΠΈΠ»ΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅. Π£ ΠΊΠ»Π°ΡΡΠ° QInputDialog Π΅ΡΡΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ QMessageBox, ΡΠΎΠ·Π΄Π°ΡΡΠΈΠ΅ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Ρ Π½ΠΈΡ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ², ΠΊ ΡΡΠ°ΡΡΡΡ, Ρ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π° ΠΈΠ· Π½ΠΈΡ Π΅ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ:
#include <qinputdialog.h>
QString getText(const QString& caption, const QString& label,
QLineEdit::EchoMode mode=QLineEdit::Normal,
const QString& text=QString::null,
bool* ok = 0, QWidget* parent = 0, const char * name = 0);
QString getItem(const QString& caption, const QString& label,
const QStringList& list, int current=0, bool editable=TRUE,
bool* ok=0, QWidget* parent = 0, const char* name=0)
int getInteger(const QString& caption, const QString& label,
int num=0, int from = -2147483647, int to = 2147483647,
int step = 1, bool* ok = 0, QWidget* parent = 0, const char* name = 0);
double getDouble(const QString& caption, const QString& label,
double num = 0, double from = -2147483647, double to = 2147483647,
int decimals = 1, bool* ok = 0, QWidget* parent = 0, const char* name = 0);
ΠΠ»Ρ Π²Π²ΠΎΠ΄Π° ΡΡΡΠΎΠΊΠΈ ΡΠ΅ΠΊΡΡΠ° Π½Π°ΠΏΠΈΡΠΈΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΡΠ°Π³ΠΌΠ΅Π½Ρ ΠΊΠΎΠ΄Π°:
bool result;
QString text = QInputDialog::getText("Question", "What is your Quest?:",
QLineEdit::Normal, QString::null, &result, this, "input");
if (result) {
doSomething(text);
} else {
// ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π°ΠΆΠ°Π» Cancel
}
ΠΠ°ΠΊ Π²ΠΈΠ΄Π½ΠΎ ΠΈΠ· ΡΠΈΡ. 17.9, ΠΎΠΊΠ½ΠΎ QInputDialog ΡΠΎΠ·Π΄Π°Π½ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π²ΠΈΠ΄ΠΆΠ΅ΡΠ° QLineEdit ΠΈ ΠΊΠ½ΠΎΠΏΠΎΠΊ OK ΠΈ Cancel.
Π ΠΈΡ. 17.9
ΠΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ, ΡΠΎΠ·Π΄Π°Π½Π½ΠΎΠ΅ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ QInputDialog::getText, ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅Ρ Π²ΠΈΠ΄ΠΆΠ΅Ρ QLineEdit. ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ ΡΠ΅ΠΆΠΈΠΌΠ° ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Π΅ΠΌΡΠΉ Π² ΡΡΠ½ΠΊΡΠΈΡ getText, ΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π½Π°Π±ΠΈΡΠ°Π΅ΠΌΠΎΠ³ΠΎ ΡΠ΅ΠΊΡΡΠ° ΡΠΎΡΠ½ΠΎ ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΡΠ΅ΠΆΠΈΠΌΠ° Π²ΠΈΠ΄ΠΆΠ΅ΡΠ° QLineEdit. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ°ΠΊΠΆΠ΅ Π·Π°Π΄Π°ΡΡ ΡΠ΅ΠΊΡΡ, Π²ΡΠ²ΠΎΠ΄ΠΈΠΌΡΠΉ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, ΠΈΠ»ΠΈ ΠΎΡΡΠ°Π²ΠΈΡΡ ΠΏΠΎΠ»Π΅ ΠΏΡΡΡΡΠΌ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° ΡΠΈΡ. 17.9. Π£ Π²ΡΠ΅Ρ ΠΎΠΊΠΎΠ½ QInputDialog Π΅ΡΡΡ ΠΊΠ½ΠΎΠΏΠΊΠΈ OK ΠΈ Cancel, ΠΈ Π² ΠΌΠ΅ΡΠΎΠ΄ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ ΡΠΈΠΏΠ° bool Π΄Π»Ρ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΡ Π½Π°ΠΆΠ°ΡΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ β ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΡΠ°Π²Π΅Π½ TRUE, Π΅ΡΠ»ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΠ΅Π»ΠΊΠ°Π΅Ρ ΠΌΡΡΡΡ ΠΊΠ½ΠΎΠΏΠΊΡ OK.
ΠΠ΅ΡΠΎΠ΄ getItem Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ°ΡΠΊΡΡΠ²Π°ΡΡΠ΅Π³ΠΎΡΡ ΡΠΏΠΈΡΠΊΠ° QComboBox ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΠΏΠΈΡΠΎΠΊ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ²:
bool result;
QStringList options;
options << "London" << "New York" << "Paris";
QString city = QInputDialog::getItem("Holiday", "Please select a
destination:", options, 1, TRUE, &result, this, "combo");
if (result) selectDestination(city);
Π‘ΠΎΠ·Π΄Π°Π½Π½ΠΎΠ΅ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° ΡΠΈΡ. 17.10.
Π ΠΈΡ. 17.10
Π€ΡΠ½ΠΊΡΠΈΠΈ getInteger ΠΈ getDouble Π΄Π΅ΠΉΡΡΠ²ΡΡΡ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΌ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΌΡ Π½Π΅ Π±ΡΠ΄Π΅ΠΌ Π½Π° Π½ΠΈΡ ΠΎΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡΡΡ.
ΠΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ qmake Π΄Π»Ρ ΡΠΏΡΠΎΡΠ΅Π½ΠΈΡ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ make-ΡΠ°ΠΉΠ»ΠΎΠ²
ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΠΌΠΈ KDE ΠΈ Qt ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΡΡΠΎΠΌΠΈΡΠ΅Π»ΡΠ½ΡΠΌ Π·Π°Π½ΡΡΠΈΠ΅ΠΌ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π²Π°Ρ make-ΡΠ°ΠΉΠ» ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ ΠΎΡΠ΅Π½Ρ ΡΠ»ΠΎΠΆΠ½ΡΠΌ ΠΈΠ·-Π·Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ moc ΠΈ ΠΈΠΌΠ΅ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π·Π΄Π΅ΡΡ, ΡΠ°ΠΌ ΠΈ Π²Π΅Π·Π΄Π΅. Π ΡΡΠ°ΡΡΡΡ, Qt ΠΏΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ Ρ ΡΡΠΈΠ»ΠΈΡΠΎΠΉ qmake Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π²Π°ΡΠΈΡ make-ΡΠ°ΠΉΠ»ΠΎΠ².
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅ΠΡΠ»ΠΈ Π²Ρ ΡΠΆΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈΡΡ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠΎΠΌ Qt, Π²Π°ΠΌ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π·Π½Π°ΠΊΠΎΠΌΠ° ΡΡΠΈΠ»ΠΈΡΠ° tmake β Π±ΠΎΠ»Π΅Π΅ ΡΠ°Π½Π½Π΅Π΅ (ΠΈ ΡΠ΅ΠΏΠ΅ΡΡ ΡΡΡΠ°ΡΠ΅Π²ΡΠ΅Π΅) Π²ΠΎΠΏΠ»ΠΎΡΠ΅Π½ΠΈΠ΅ qmake, ΠΏΠΎΡΡΠ°Π²Π»ΡΠ²ΡΠ΅Π΅ΡΡ Ρ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΌΠΈ Π²Π΅ΡΡΠΈΡΠΌΠΈ Qt.
Π£ΡΠΈΠ»ΠΈΡΠ° qmake ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π²Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ» .pro. ΠΡΠΎΡ ΡΠ°ΠΉΠ» ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠ°ΠΌΡΠ΅ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ Π΄Π»Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΠΈΡΡ ΠΎΠ΄Π½ΡΠ΅ ΡΠ΅ΠΊΡΡΡ, Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ, ΡΠ΅Π·ΡΠ»ΡΡΠΈΡΡΡΡΠΈΠΉ Π΄Π²ΠΎΠΈΡΠ½ΡΠΉ ΡΠ°ΠΉΠ» ΠΈ ΠΌΠ΅ΡΡΠΎΠ½Π°Ρ ΠΎΠΆΠ΄Π΅Π½ΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ KDE/Qt.
Π’ΠΈΠΏΠΈΡΠ½ΡΠΉ pro-ΡΠ°ΠΉΠ» ΡΡΠ΅Π΄Ρ KDE Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
TARGET = app
MOC_DIR = moc
OBJECTS_DIR = obj
INCLUDEPATH = /usr/include/kde
QMAKE_LIBDIR_X11 += /usr/lib
QMAKE_LIBS_X11 += -lkdeui -lkdecore
SOURCES = main.cpp window.cpp
HEADERS = window.h
ΠΡ Π·Π°Π΄Π°Π΅ΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠΈΡΡΡΡΠΈΠΉ Π΄Π²ΠΎΠΈΡΠ½ΡΠΉ ΡΠ°ΠΉΠ», Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΈ moc ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ², ΠΏΡΡΡ ΠΊ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ KDE ΠΈ ΠΈΡΡ ΠΎΠ΄Π½ΡΠ΅ ΡΠ΅ΠΊΡΡΡ, ΠΈ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ, ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ ΡΠΎΡΠΌΠΈΡΡΠ΅ΡΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Π£ΡΡΠΈΡΠ΅, ΡΡΠΎ ΠΌΠ΅ΡΡΠΎΠ½Π°Ρ ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ² Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ ΠΈ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² KDE Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ Π²Π°ΡΠ΅Π³ΠΎ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²Π°. ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ SUSE Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΡΠΈΡΠ°Π²Π½ΡΡΡ INCLUDEPATH ΠΏΡΡΡ /opt/kde3/include ΠΈ QMAKE_LIBS_X11 ΠΏΡΡΡ /opt/kde3/lib.