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

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«QT 4: ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ GUI Π½Π° Π‘++Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 10

Автор Жасмин Π‘Π»Π°Π½ΡˆΠ΅Ρ‚

Указывая Π² конструкторС QRegExpValidator Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ this, ΠΌΡ‹ Π΅Π³ΠΎ Π΄Π΅Π»Π°Π΅ΠΌ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΌ элСмСнтом ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° GoToCellDialog. ПослС этого Π½Π°ΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ Π±Π΅ΡΠΏΠΎΠΊΠΎΠΈΡ‚ΡŒΡΡ ΠΎΠ± ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΈ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ QRegExpValidator; этот ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ΄Π°Π»Π΅Π½ автоматичСски послС удалСния Π΅Π³ΠΎ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ элСмСнта.

ΠœΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ взаимодСйствия ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° с Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΌΠΈ ΠΈ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΌΠΈ элСмСнтами Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π² QObject. Когда ΠΌΡ‹ создаСм ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ (Π²ΠΈΠ΄ΠΆΠ΅Ρ‚, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΏΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈΠ»ΠΈ любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚) ΠΈ ΠΎΠ½ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, Ρ‚ΠΎ ΠΊ списку Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΡ… элСмСнтов этого родитСля добавится ΠΈ Π΄Π°Π½Π½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. ΠŸΡ€ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΈ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ элСмСнта Π±ΡƒΠ΄Π΅Ρ‚ просмотрСн список Π΅Π³ΠΎ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΡ… элСмСнтов ΠΈ всС ΠΎΠ½ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ ΡƒΠ΄Π°Π»Π΅Π½Ρ‹. Π­Ρ‚ΠΈ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠ΅ элСмСнты, Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, сами удалят всС свои Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠ΅ элСмСнты, ΠΈ эта ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ останСтся.

ΠœΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ взаимодСйствия ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° с Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΌΠΈ ΠΈ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΌΠΈ элСмСнтами Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ, сниТая риск ΡƒΡ‚Π΅Ρ‡Π΅ΠΊ памяти. Π―Π²Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ созданы ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ new ΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ элСмСнта. А Ссли ΠΌΡ‹ удаляСм Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉ элСмСнт Π΄ΠΎ удалСния Π΅Π³ΠΎ родитСля, Ρ‚ΠΎ Qt автоматичСски ΡƒΠ΄Π°Π»ΠΈΡ‚ этот ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΈΠ· списка Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² этого родитСля.

Для Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΎΠ² Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΈΠΌΠ΅Π΅Ρ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ смысл: Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠ΅ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Ρ‹ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ Π²Π½ΡƒΡ‚Ρ€ΠΈ области, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. ΠŸΡ€ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΈ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π° Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ освобоТдаСтся занимаСмая Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ ΠΏΠ°ΠΌΡΡ‚ΡŒ β€” ΠΎΠ½ исчСзаСт с экрана.

Π’ ΠΊΠΎΠ½Ρ†Π΅ конструктора ΠΌΡ‹ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ ΠΊΠ½ΠΎΠΏΠΊΡƒ OK ΠΊ слоту accept() Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π° QDialog ΠΈ ΠΊΠ½ΠΎΠΏΠΊΡƒ Cancel ΠΊ слоту reject(). Оба слота Π·Π°ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‚ Π΄ΠΈΠ°Π»ΠΎΠ³, Π½ΠΎ accept() устанавливаСт Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π΄ΠΈΠ°Π»ΠΎΠ³Π° Π½Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ QDialog::Accepted (ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Ρ€Π°Π²Π½ΠΎ 1), a reject() устанавливаСт Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ QDialog::Rejected (ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Ρ€Π°Π²Π½ΠΎ 0). ΠŸΡ€ΠΈ использовании этого Π΄ΠΈΠ°Π»ΠΎΠ³Π° ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ, Π±Ρ‹Π»Π° Π»ΠΈ Π½Π°ΠΆΠ°Ρ‚Π° ΠΊΠ½ΠΎΠΏΠΊΠ° OK, ΠΈ Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ.

Π‘Π»ΠΎΡ‚ on_lineEdit_textChanged() устанавливаСт ΠΊΠ½ΠΎΠΏΠΊΡƒ OK Π² Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ΅ ΠΈΠ»ΠΈ Π½Π΅Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ΅ состояниС Π² зависимости ΠΎΡ‚ наличия Π² строкС рСдактирования допустимого обозначСния ячСйки. QLineEdit::hasAcceptableInput() ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ допустимости Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ Π·Π°Π΄Π°Π»ΠΈ Π² конструкторС.

На этом Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ построСниС Π΄ΠΈΠ°Π»ΠΎΠ³Π°. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΠ°Ρ‚ΡŒ main.cpp ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

01 #include <QApplication>

02 #include "gotocelldialog.h"

03 int main(int argc, char *argv[])

04 {

05 QApplication app(argc, argv);

06 GoToCellDialog *dialog = new GoToCellDialog;

07 dialog->show();

08 return app.exec();

09 }

ΠŸΠΎΡΡ‚Ρ€ΠΎΠΉΡ‚Π΅ Π΅Ρ‰Π΅ Ρ€Π°Π· ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ (qmake β€”project; qmake gotocell.pro) ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ Π΅Π³ΠΎ. НабСритС Π² строкС рСдактирования Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Β«A12Β» ΠΈ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΎ, ΠΊΠ°ΠΊ ΠΊΠ½ΠΎΠΏΠΊΠ° OK становится Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ. ΠŸΠΎΠΏΡ‹Ρ‚Π°ΠΉΡ‚Π΅ΡΡŒ ввСсти ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ тСкст ΠΈ посмотритС, ΠΊΠ°ΠΊ сработаСт функция ΠΏΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ΅ допустимости значСния. НаТмитС ΠΊΠ½ΠΎΠΏΠΊΡƒ Cancel для закрытия Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°.

ΠŸΡ€ΠΈΠ²Π»Π΅ΠΊΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ примСнСния Qt Designer являСтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ для программиста Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ достаточно свободно ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π΄ΠΈΠ·Π°ΠΉΠ½Π° Ρ„ΠΎΡ€ΠΌΡ‹, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ ΠΏΡ€ΠΈ этом исходный ΠΊΠΎΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°Ρ€ΡƒΡˆΠ΅Π½. ΠŸΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Ρ„ΠΎΡ€ΠΌΡ‹ с нСпосрСдствСнным написаниСм ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² Π‘++ Π½Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π΄ΠΈΠ·Π°ΠΉΠ½Π° ΡƒΡ…ΠΎΠ΄ΠΈΡ‚ ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. ΠŸΡ€ΠΈ использовании Qt Designer Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ uic просто Π·Π°Π½ΠΎΠ²ΠΎ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ исходный ΠΊΠΎΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ для Ρ„ΠΎΡ€ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Ρ‹. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ интСрфСйс Π΄ΠΈΠ°Π»ΠΎΠ³Π° сохраняСтся Π² Ρ„Π°ΠΉΠ»Π΅ .ui (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ XML), Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π°Ρ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Π°Ρ Ρ‡Π°ΡΡ‚ΡŒ рСализуСтся ΠΏΡƒΡ‚Π΅ΠΌ создания подкласса, сгСнСрированного компилятором uic класса.

Π˜Π·ΠΌΠ΅Π½ΡΡŽΡ‰ΠΈΠ΅ΡΡ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²Ρ‹Π΅ ΠΎΠΊΠ½Π°

Нами Π±Ρ‹Π»ΠΈ рассмотрСны способы формирования Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²Ρ‹Ρ… ΠΎΠΊΠΎΠ½, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ всСгда содСрТат ΠΎΠ΄Π½ΠΈ ΠΈ Ρ‚Π΅ ΠΆΠ΅ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Ρ‹. Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях трСбуСтся ΠΈΠΌΠ΅Ρ‚ΡŒ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²Ρ‹Π΅ ΠΎΠΊΠ½Π°, Ρ„ΠΎΡ€ΠΌΠ° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠΆΠ΅Ρ‚ ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ. НаиболСС извСстны Π΄Π²Π° Ρ‚ΠΈΠΏΠ° ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‰ΠΈΡ…ΡΡ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²Ρ‹Ρ… ΠΎΠΊΠΎΠ½: Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅ΠΌΡ‹Π΅ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²Ρ‹Π΅ ΠΎΠΊΠ½Π° (area extension dialogs) ΠΈ многостраничныС Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²Ρ‹Π΅ ΠΎΠΊΠ½Π° (multiβ€”page dialogs). Оба Ρ‚ΠΈΠΏΠ° Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²Ρ‹Ρ… ΠΎΠΊΠΎΠ½ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² Qt Π»ΠΈΠ±ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ нСпосрСдствСнного кодирования, Π»ΠΈΠ±ΠΎ посрСдством примСнСния Qt Designer.

Π Π°ΡΡˆΠΈΡ€ΡΠ΅ΠΌΡ‹Π΅ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²Ρ‹Π΅ ΠΎΠΊΠ½Π°, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ΅ (Π½Π΅Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½ΠΎΠ΅) прСдставлСниС ΠΈ содСрТат ΠΊΠ½ΠΎΠΏΠΊΡƒ для ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌ ΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹ΠΌ прСдставлСниями этого Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°. Π Π°ΡΡˆΠΈΡ€ΡΠ΅ΠΌΡ‹Π΅ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²Ρ‹Π΅ ΠΎΠΊΠ½Π° ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ Π² Ρ‚Π΅Ρ… прилоТСниях, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π°ΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ для Π½Π΅ΠΎΠΏΡ‹Ρ‚Π½Ρ‹Ρ…, Ρ‚Π°ΠΊ ΠΈ для ΠΎΠΏΡ‹Ρ‚Π½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΈ ΡΠΊΡ€Ρ‹Π²Π°ΡŽΡ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΎΠΏΡ†ΠΈΠΈ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ явным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π½Π΅ Π·Π°Ρ…ΠΎΡ‡Π΅Ρ‚ ΠΈΠΌΠΈ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ. Π’ Π΄Π°Π½Π½ΠΎΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Qt Designer для создания Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅ΠΌΠΎΠ³ΠΎ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°, ΠΏΠΎΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ Π½Π° рис. 2.10.

Рис. 2.10. ΠžΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ ΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹ΠΉ Π²ΠΈΠ΄Ρ‹ ΠΎΠΊΠ½Π° сортировки Π΄Π°Π½Π½Ρ‹Ρ….

Π”Π°Π½Π½ΠΎΠ΅ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ являСтся ΠΎΠΊΠ½ΠΎΠΌ сортировки Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ЭлСктронная Ρ‚Π°Π±Π»ΠΈΡ†Π°, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ нСсколько столбцов сортировки. Π’ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΌ прСдставлСнии этого ΠΎΠΊΠ½Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ввСсти ΠΎΠ΄ΠΈΠ½ ΠΊΠ»ΡŽΡ‡ сортировки, Π° Π² Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½ΠΎΠΌ прСдставлСнии ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ ввСсти Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π΅Ρ‰Π΅ Π΄Π²Π° ΠΊΠ»ΡŽΡ‡Π° сортировки. Кнопка More (большС) позволяСт ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒΡΡ с ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ прСдставлСния Π½Π° Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½ΠΎΠ΅ ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚.

ΠœΡ‹ создадим Π² Qt Designer Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½ΠΎΠ΅ прСдставлСниС Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π°, Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΈ Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ ΠΊΠ»ΡŽΡ‡ΠΈ сортировки ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π²ΠΈΠ΄Π½Ρ‹ ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ΠΈ Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹. Π­Ρ‚ΠΎΡ‚ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ каТСтся слоТным, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΎΠ½ ΠΎΡ‡Π΅Π½ΡŒ Π»Π΅Π³ΠΊΠΎ строится Π² Qt Designer. Π‘Π½Π°Ρ‡Π°Π»Π° Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ‚Ρƒ Ρ‡Π°ΡΡ‚ΡŒ, которая относится ΠΊ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½ΠΎΠΌΡƒ ΠΊΠ»ΡŽΡ‡Ρƒ, Π·Π°Ρ‚Π΅ΠΌ ΡΠ΄ΡƒΠ±Π»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π΅ Π΄Π²Π°ΠΆΠ΄Ρ‹, получая Π²Ρ‚ΠΎΡ€ΠΈΡ‡Π½Ρ‹ΠΉ ΠΈ Ρ‚Ρ€Π΅Ρ‚ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ΠΈ.

1. Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ мСню File | New Form ΠΈ Π·Π°Ρ‚Π΅ΠΌ шаблон Β«Dialog with Buttons RightΒ» (Π΄ΠΈΠ°Π»ΠΎΠ³ с ΠΊΠ½ΠΎΠΏΠΊΠ°ΠΌΠΈ, располоТСнными справа).

2. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΎΠΏΠΊΡƒ More (большС) ΠΈ пСрСнСситС Π΅Π΅ Π² Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ Π½ΠΈΠΆΠ΅ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠΉ распорки. УстановитС свойство text ΠΊΠ½ΠΎΠΏΠΊΠΈ More Π½Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Β«&MoreΒ», Π° свойство checkable β€” Π½Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Β«trueΒ». Π—Π°Π΄Π°ΠΉΡ‚Π΅ свойство default ΠΊΠ½ΠΎΠΏΠΊΠΈ OK Π½Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Β«trueΒ».

3. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Β«Π³Ρ€ΡƒΠΏΠΏΠ° элСмСнтов (group box)Β», Π΄Π²Π΅ тСкстовыС ΠΌΠ΅Ρ‚ΠΊΠΈ, Π΄Π²Π° поля с Π²Ρ‹ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΠΌ списком (comboboxes) ΠΈ ΠΎΠ΄Π½Ρƒ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΡƒΡŽ распорку ΠΈ размСститС ΠΈΡ… Π³Π΄Π΅-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π½Π° Ρ„ΠΎΡ€ΠΌΠ΅.

4. ΠŸΠ΅Ρ€Π΅Π΄Π²ΠΈΠ½ΡŒΡ‚Π΅ Π½ΠΈΠΆΠ½ΠΈΠΉ ΠΏΡ€Π°Π²Ρ‹ΠΉ ΡƒΠ³ΠΎΠ» элСмСнта Π³Ρ€ΡƒΠΏΠΏΠ°, увСличивая Π΅Π³ΠΎ. Π—Π°Ρ‚Π΅ΠΌ пСрСнСситС Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Ρ‹ Π²Π½ΡƒΡ‚Ρ€ΡŒ элСмСнта Π³Ρ€ΡƒΠΏΠΏΠ° ΠΈ располоТитС ΠΈΡ… ΠΏΡ€ΠΈΠ±Π»ΠΈΠ·ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° рис. 2.11 (Π°).

Рис. 2.11. Π Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΡ… Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΎΠ² Π³Ρ€ΡƒΠΏΠΏΠΎΠ²ΠΎΠ³ΠΎ элСмСнта Π² Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΠΎΠΉ сСткС.

5. ΠŸΠ΅Ρ€Π΅Ρ‚Π°Ρ‰ΠΈΡ‚Π΅ ΠΏΡ€Π°Π²Ρ‹ΠΉ ΠΊΡ€Π°ΠΉ Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ поля с Π²Ρ‹ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΠΌ списком Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π² Π΄Π²Π° Ρ€Π°Π·Π° ΡˆΠΈΡ€Π΅ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ поля.

6. Бвойство title (Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ) Π³Ρ€ΡƒΠΏΠΏΡ‹ установитС Π½Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Β«&PrimaryKeyΒ» (ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡), свойство text ΠΏΠ΅Ρ€Π²ΠΎΠΉ тСкстовой ΠΌΠ΅Ρ‚ΠΊΠΈ установитС Π½Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Β«Column:Β» (столбСц), Π° свойство text Π²Ρ‚ΠΎΡ€ΠΎΠΉ тСкстовой ΠΌΠ΅Ρ‚ΠΊΠΈ установитС Π½Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Β«Order:Β» (порядок сортировки).

7. Π©Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ ΠΏΡ€Π°Π²ΠΎΠΉ клавишСй ΠΌΡ‹ΡˆΠΊΠΈ ΠΏΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠΌΡƒ полю с Π²Ρ‹ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΠΌ списком ΠΈ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Edit Items (Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ элСмСнты) Π² контСкстном мСню для Π²Ρ‹Π·ΠΎΠ²Π° Π² Qt Designer Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° списков. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ ΠΎΠ΄ΠΈΠ½ элСмСнт со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ Β«NoneΒ» (Π½Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ).

8. Π©Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ ΠΏΡ€Π°Π²ΠΎΠΉ клавишСй ΠΌΡ‹ΡˆΠΊΠΈ ΠΏΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌΡƒ полю с Π²Ρ‹ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΠΌ списком ΠΈ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Edit Items. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ элСмСнты Β«AscendingΒ» (ΠΏΠΎ Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°Π½ΠΈΡŽ) ΠΈ Β«DescendingΒ» (ΠΏΠΎ ΡƒΠ±Ρ‹Π²Π°Π½ΠΈΡŽ).

9. Π©Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ ΠΏΠΎ Π³Ρ€ΡƒΠΏΠΏΠ΅ ΠΈ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Π² мСню Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Form | Lay Out in a Grid (Π€ΠΎΡ€ΠΌΠ° | Π Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ Π² сСткС). Π•Ρ‰Π΅ Ρ€Π°Π· Ρ‰Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ ΠΏΠΎ Π³Ρ€ΡƒΠΏΠΏΠ΅ ΠΈ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Π² мСню Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Form | Adjust Size (Π€ΠΎΡ€ΠΌΠ° | ΠΠ°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€). Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, прСдставлСнноС Π½Π° рис. 2.11 (Π±).

Если ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ оказалось Π½Π΅ совсСм Ρ‚Π°ΠΊΠΈΠΌ ΠΈΠ»ΠΈ Π²Ρ‹ ошиблись, Ρ‚ΠΎ всСгда ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Π² мСню Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Edit | Undo (ΠŸΡ€Π°Π²ΠΊΠ° | ΠžΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ) ΠΈΠ»ΠΈ Form | Break Layout (Π€ΠΎΡ€ΠΌΠ° | ΠŸΡ€Π΅Ρ€Π²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΡƒ), Π·Π°Ρ‚Π΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΎΠ² ΠΈ снова ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚ΡŒ всС дСйствия.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π³Ρ€ΡƒΠΏΠΏΠΎΠ²Ρ‹Π΅ элСмСнты для Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΈ Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅Π³ΠΎ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ сортировки.

1. Π£Π²Π΅Π»ΠΈΡ‡ΡŒΡ‚Π΅ высоту Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π² Π½Π΅ΠΌ Ρ€Π°Π·ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ части.

2. ΠŸΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΎΠΉ клавишС Ctrl (Alt Π² систСмС Mac) Ρ‰Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ ΠΏΠΎ элСмСнту Π³Ρ€ΡƒΠΏΠΏΡ‹ Primary Key (ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡) для создания ΠΊΠΎΠΏΠΈΠΈ элСмСнта Π³Ρ€ΡƒΠΏΠΏΠ° (ΠΈ Π΅Π³ΠΎ содСрТимого) Π½Π°Π΄ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌ элСмСнтом. ΠŸΠ΅Ρ€Π΅Ρ‚Π°Ρ‰ΠΈΡ‚Π΅ эту копию Π½ΠΈΠΆΠ΅ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ элСмСнта Π³Ρ€ΡƒΠΏΠΏΠ°, ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ наТимая ΠΊΠ»Π°Π²ΠΈΡˆΡƒ Ctrl (ΠΈΠ»ΠΈ Alt). ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚Π΅ этот процСсс для создания Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅Π³ΠΎ элСмСнта Π³Ρ€ΡƒΠΏΠΏΠ°, размСщая Π΅Π³ΠΎ Π½ΠΈΠΆΠ΅ Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ элСмСнта Π³Ρ€ΡƒΠΏΠΏΠ°.

3. Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚Π΅ ΠΈΡ… свойство title Π½Π° значСния Β«&Secondary KeyΒ» (Π²Ρ‚ΠΎΡ€ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡) ΠΈ Β«&Tertiary KeyΒ» (Ρ‚Ρ€Π΅Ρ‚ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡).