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

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

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

Β break;

case QMessageBox::No:

Β // сдСлайтС Ρ‡Ρ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π΅Ρ‰Π΅

Β break;

}

Π’Ρ‹ соСдинили ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ

OR
(
|
) ΠΊΠΎΠ΄Ρ‹ ΠΊΠ½ΠΎΠΏΠΎΠΊ с Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°ΠΌΠΈ
Default
ΠΈ
Escape
, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°Π΄Π°Ρ‚ΡŒ стандартныС дСйствия, ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ клавиш <Enter> (ΠΈΠ»ΠΈ <Return>) ΠΈ <Esc>. Π Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰Π΅Π΅ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° рис. 17.8.

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

Рис. 17.8 

QInputDialog

Окно

QInputDialog
ΠΏΠΎΠ»Π΅Π·Π½ΠΎ для Π²Π²ΠΎΠ΄Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, Π±ΡƒΠ΄ΡŒ Ρ‚ΠΎ тСкст, Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ€Π°ΡΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰Π΅Π³ΠΎΡΡ списка, цСлочислСнноС ΠΈΠ»ΠΈ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π£ класса
QInputDialog
Π΅ΡΡ‚ΡŒ статичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€
QMessageBox
, ΡΠΎΠ·Π΄Π°ΡŽΡ‰ΠΈΠ΅ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρƒ Π½ΠΈΡ… слишком ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², ΠΊ ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, Ρƒ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° ΠΈΠ· Π½ΠΈΡ… Π΅ΡΡ‚ΡŒ значСния ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ:

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

<b>QString getText(const QString&amp; caption, const QString&amp; label,</b>

<b>Β QLineEdit::EchoMode mode=QLineEdit::Normal,</b>

<b>Β const QString&amp; text=QString::null,</b>

<b>Β bool* ok = 0, QWidget* parentΒ = 0, const char * name = 0);</b>

<b>QString getItem(const QString&amp; caption, const QString&amp; label,</b>

<b>Β const QStringList&amp; list, int current=0, bool editable=TRUE,</b>

<b>Β bool* ok=0, QWidget* parent = 0, const char* name=0)</b>

<b>int getInteger(const QString&amp; caption, const QString&amp; label,</b>

<b>Β int num=0, int from = -2147483647, int to = 2147483647,</b>

<b>Β int step = 1, bool* ok = 0, QWidget* parent = 0, const char* name = 0);</b>

<b>double getDouble(const QString&amp; caption, const QString&amp; label,</b>

<b>Β double num = 0, double from = -2147483647, double to = 2147483647,</b>

<b>Β int decimals = 1, bool* ok = 0, QWidget* parent = 0, const char* name = 0);</b>

Для Π²Π²ΠΎΠ΄Π° строки тСкста Π½Π°ΠΏΠΈΡˆΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΊΠΎΠ΄Π°:

bool result;

QString text = QInputDialog::getText(&quot;Question&quot;, &quot;What is your Quest?:&quot;,

Β QLineEdit::Normal, QString::null, &amp;result, this, &quot;input&quot;);

if (result) {

Β doSomething(text);

} else {

Β // ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π°ΠΆΠ°Π» Cancel

}

Как Π²ΠΈΠ΄Π½ΠΎ ΠΈΠ· рис. 17.9, ΠΎΠΊΠ½ΠΎ

QInputDialog
создано с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π° QLi
n
eEdit ΠΈ ΠΊΠ½ΠΎΠΏΠΎΠΊ OK ΠΈ Cancel.

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

Рис. 17.9 

Π”ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ, созданноС ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ

QInputDialog::getText
, примСняСт Π²ΠΈΠ΄ΠΆΠ΅Ρ‚
QLineEdit
. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ€Π΅ΠΆΠΈΠΌΠ° рСдактирования, ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹ΠΉ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ
getText
, управляСт способом отобраТСния Π½Π°Π±ΠΈΡ€Π°Π΅ΠΌΠΎΠ³ΠΎ тСкста Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ€Π΅ΠΆΠΈΠΌΠ° Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π°
QLineEdit
. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅ Π·Π°Π΄Π°Ρ‚ΡŒ тСкст, Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌΡ‹ΠΉ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, ΠΈΠ»ΠΈ ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΏΠΎΠ»Π΅ пустым, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° рис. 17.9. Π£ всСх ΠΎΠΊΠΎΠ½
QInputDialog
Π΅ΡΡ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΠΈ OK ΠΈ Cancel, ΠΈ Π² ΠΌΠ΅Ρ‚ΠΎΠ΄ пСрСдаСтся ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Ρ‚ΠΈΠΏΠ°
bool
для обозначСния Π½Π°ΠΆΠ°Ρ‚ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ β€” Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ€Π°Π²Π΅Π½
TRUE
, Ссли ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Ρ‰Π΅Π»ΠΊΠ°Π΅Ρ‚ ΠΌΡ‹ΡˆΡŒΡŽ ΠΊΠ½ΠΎΠΏΠΊΡƒ OK.

ΠœΠ΅Ρ‚ΠΎΠ΄

getItem
с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ€Π°ΡΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰Π΅Π³ΠΎΡΡ списка
QComboBox
ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ список Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ²:

bool result;

QStringList options;

options &lt;&lt; &quot;London&quot; &lt;&lt; &quot;New York&quot; &lt;&lt; &quot;Paris&quot;;

QString city = QInputDialog::getItem(&quot;Holiday&quot;, &quot;Please select a

Β destination:&quot;, options, 1, TRUE, &amp;result, this, &quot;combo&quot;);

if (result) selectDestination(city);

Π‘ΠΎΠ·Π΄Π°Π½Π½ΠΎΠ΅ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° рис. 17.10.

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

Рис. 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