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

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

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

ВстроСнныС классы Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΎΠ² ΠΈ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²Ρ‹Ρ… ΠΎΠΊΠΎΠ½

Qt содСрТит большой Π½Π°Π±ΠΎΡ€ встроСнных Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΎΠ² ΠΈ стандартных Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²Ρ‹Ρ… ΠΎΠΊΠΎΠ½, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… ситуаций. Π’ Π΄Π°Π½Π½ΠΎΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠΌΡ‹ прСдставим изобраТСния экранов ΠΏΠΎΡ‡Ρ‚ΠΈ со всСми ΠΈΠ· Π½ΠΈΡ…. НСсколько ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΎΠ² Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΏΠΎΠ·ΠΆΠ΅: Ρ‚Π°ΠΊΠΈΠ΅ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Ρ‹ Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°, ΠΊΠ°ΠΊ QMenuBar, QToolBar ΠΈ QStatusBar, ΠΎΠ±ΡΡƒΠΆΠ΄Π°ΡŽΡ‚ΡΡ Π² Π³Π»Π°Π²Π΅ 3, Π° Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Ρ‹, связанныС с ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΎΠΉ элСмСнтов (Ρ‚Π°ΠΊΠΈΠ΅, ΠΊΠ°ΠΊ QSplitter ΠΈ QScrollArea), Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π² Π³Π»Π°Π²Π΅ 6. Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ встроСнных Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΎΠ² ΠΈ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²Ρ‹Ρ… ΠΎΠΊΠΎΠ½ входят Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π΄Π°Π½Π½ΠΎΠΉ ΠΊΠ½ΠΈΠ³ΠΈ. Π’ прСдставлСнных Π½ΠΈΠΆΠ΅ экранах Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΡΡ‚ΠΈΠ»ΡŒ Plastique.

Рис. 2.16. Π’ΠΈΠ΄ΠΆΠ΅Ρ‚Ρ‹ ΠΊΠ½ΠΎΠΏΠΎΠΊ Qt.

Qt содСрТит Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ Π²ΠΈΠ΄Π° ΠΊΠ½ΠΎΠΏΠΎΠΊ: QPushButton, QToolButton, QCheckBox ΠΈ QRadioButton. Кнопки QPushButton ΠΈ QToolButton ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ наибольшСС распространСниС ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для ΠΈΠ½ΠΈΡ†ΠΈΠ°Ρ†ΠΈΠΈ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Ρ‚ΠΎ дСйствия ΠΏΡ€ΠΈ ΠΈΡ… Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ, Π½ΠΎ ΠΎΠ½ΠΈ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»ΠΈ (ΠΎΠ΄ΠΈΠ½ Ρ‰Π΅Π»Ρ‡ΠΎΠΊ Π½Π°ΠΆΠΈΠΌΠ°Π΅Ρ‚ ΠΊΠ½ΠΎΠΏΠΊΡƒ, Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ‰Π΅Π»Ρ‡ΠΎΠΊ отпускаСт ΠΊΠ½ΠΎΠΏΠΊΡƒ). Π€Π»Π°ΠΆΠΎΠΊ QCheckBox ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΈ Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ нСзависимых ΠΎΠΏΡ†ΠΈΠΉ, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»ΠΈ (Ρ€Π°Π΄ΠΈΠΎΠΊΠ½ΠΎΠΏΠΊΠΈ) QRadioButton ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π·Π°Π΄Π°ΡŽΡ‚ Π²Π·Π°ΠΈΠΌΠΎΠΈΡΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΠΈΠ΅ возмоТности.

Рис. 2.17. Π’ΠΈΠ΄ΠΆΠ΅Ρ‚Ρ‹ одностраничных ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² Qt.

ΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ Qt β€” это Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ содСрТат Π² сСбС Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Ρ‹. Π€Ρ€Π΅ΠΉΠΌ QFrame, ΠΊΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ просто для вычСрчивания Π»ΠΈΠ½ΠΈΠΉ, ΠΈ ΠΎΠ½ наслСдуСтся ΠΌΠ½ΠΎΠ³ΠΈΠΌΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ классами Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΎΠ², Π²ΠΊΠ»ΡŽΡ‡Π°Ρ QToolBox ΠΈ QLabel.

Рис. 2.18. Π’ΠΈΠ΄ΠΆΠ΅Ρ‚Ρ‹ многостраничных ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² Qt.

QTabWidget ΠΈ QToolBox ΡΠ²Π»ΡΡŽΡ‚ΡΡ многостраничными Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π°ΠΌΠΈ. КаТдая страница являСтся Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΌ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΎΠΌ, ΠΈ страницы Π½ΡƒΠΌΠ΅Ρ€ΡƒΡŽΡ‚ΡΡ с нуля.

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

Qt ΠΈΠΌΠ΅Π΅Ρ‚ нСсколько Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Ρ‹ для простого отобраТСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ. НаиболСС Π²Π°ΠΆΠ½Ρ‹ΠΌ ΠΈΠ· Π½ΠΈΡ… являСтся тСкстовая ΠΌΠ΅Ρ‚ΠΊΠ° QLabel, ΠΈ ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ‚ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ отобраТСния тСкста (ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ простой синтаксис, ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΉ HTML) ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ.

Рис. 2.19. Π’ΠΈΠ΄ΠΆΠ΅Ρ‚Ρ‹ для просмотра списков ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².

ВСкстовый Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ QTextBrowser прСдставляСт собой подкласс поля рСдактирования, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΉ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ чтСния ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ основныС возмоТности Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° HTML, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ списки, Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, изобраТСния ΠΈ гипСртСкстовыС ссылки. Qt Assistant ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ QTextBrowser для прСдставлСния Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ.

Рис. 2.20. Π’ΠΈΠ΄ΠΆΠ΅Ρ‚Ρ‹ отобраТСния Π΄Π°Π½Π½Ρ‹Ρ… Π² Qt.

Qt содСрТит нСсколько Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΎΠ² для Π²Π²ΠΎΠ΄Π° Π΄Π°Π½Π½Ρ‹Ρ…. Π‘Ρ‚Ρ€ΠΎΠΊΠ° рСдактирования QLineEdit ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Ρ‚ΡŒ Π²Π²ΠΎΠ΄ Π΄Π°Π½Π½Ρ‹Ρ…, примСняя маску Π²Π²ΠΎΠ΄Π° ΠΈΠ»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ допустимости Π΄Π°Π½Π½Ρ‹Ρ…. ПолС рСдактирования QTextEdit являСтся подклассом QAbstractScrollArea, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΌ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ тСксты большого объСма.

Рис. 2.21. Π’ΠΈΠ΄ΠΆΠ΅Ρ‚Ρ‹ Π²Π²ΠΎΠ΄Π° Π΄Π°Π½Π½Ρ‹Ρ… Π² Qt.

Qt содСрТит стандартный Π½Π°Π±ΠΎΡ€ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²Ρ‹Ρ… ΠΎΠΊΠΎΠ½ для Π²Ρ‹Π±ΠΎΡ€Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ Ρ†Π²Π΅Ρ‚Π°, ΡˆΡ€ΠΈΡ„Ρ‚Π°, Ρ„Π°ΠΉΠ»Π° ΠΈΠ»ΠΈ для ΠΏΠ΅Ρ‡Π°Ρ‚ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°.

Рис. 2.22. Π”ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ Π²Ρ‹Π±ΠΎΡ€Π° Ρ†Π²Π΅Ρ‚Π° ΠΈ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ Π²Ρ‹Π±ΠΎΡ€Π° ΡˆΡ€ΠΈΡ„Ρ‚Π° Π² Qt.

Π’ систСмах Windows ΠΈ Mac Os X ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ возмоТности ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Β«Ρ€ΠΎΠ΄Π½Ρ‹Π΅Β» Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²Ρ‹Π΅ ΠΎΠΊΠ½Π°, Π° Π½Π΅ ΠΈΡ… ΠΎΠ±Ρ‰ΠΈΠ΅ Π°Π½Π°Π»ΠΎΠ³ΠΈ.

Рис. 2.23. Π”ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ для Π²Ρ‹Π±ΠΎΡ€Π° Ρ„Π°ΠΉΠ»Π° ΠΈ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ ΠΏΠ΅Ρ‡Π°Ρ‚ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π² Qt.

Qt содСрТит Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·Π½Ρ‹Π΅ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²Ρ‹Π΅ ΠΎΠΊΠ½Π° для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ сообщСний ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ… ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… сообщСний, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ ΠΎΠ½ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ ΠΎΠ±Ρ€Π°Ρ‚Π½ΡƒΡŽ связь с ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ. ΠŸΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²Ρ‹ΠΉ ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€ состояния процСсса QProgressDialog ΠΈ ΠΏΠΎΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ Ρ€Π°Π½Π΅Π΅ ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€ состояния процСсса Π±Π΅Π· ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ связи QProgressBar. ΠžΡ‡Π΅Π½ΡŒ ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²Ρ‹ΠΌ ΠΎΠΊΠ½ΠΎΠΌ QInputDialog, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ трСбуСтся ввСсти ΠΎΠ΄Π½Ρƒ строку ΠΈΠ»ΠΈ ΠΎΠ΄Π½ΠΎ число.

Рис. 2.24. Π”ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²Ρ‹Π΅ ΠΎΠΊΠ½Π° для установки ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ связи с ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ.

ВстроСнныС Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Ρ‹ ΠΈ стандартныС Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²Ρ‹Π΅ ΠΎΠΊΠ½Π° ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‚ большими Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ возмоТностями, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π±Π΅Π· Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ программирования. МногиС ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ трСбования ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ΡΡ установкой свойств Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΎΠ² ΠΈΠ»ΠΈ ΠΏΡƒΡ‚Π΅ΠΌ примСнСния ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° сигналов ΠΈ слотов ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΉ слотов.

Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΎΡΡ‚ΡŒ Π² создании ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π° Π±Π΅Π· ΠΏΠΎΠΌΠΎΡ‰ΠΈ стандартных срСдств. Π’ Qt это дСлаСтся просто, ΠΈ возмоТности ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΎΠ² Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΠ±Π»Π°Π΄Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅ свойством нСзависимости ΠΎΡ‚ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹, ΠΊΠ°ΠΊ ΠΈ возмоТности встроСнных Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΎΠ² Qt. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Ρ‹ Π΄Π°ΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² Qt Designer, ΠΈ Ρ‚ΠΎΠ³Π΄Π° ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ встроСнныС Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Ρ‹ Qt. Π’ Π³Π»Π°Π²Π΅ 5 ΠΎΠ±ΡŠΡΡΠ½ΡΡŽΡ‚ΡΡ способы создания ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΎΠ².

Π“Π»Π°Π²Π° 3. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π³Π»Π°Π²Π½Ρ‹Ρ… ΠΎΠΊΠΎΠ½

Π’ Π΄Π°Π½Π½ΠΎΠΉ Π³Π»Π°Π²Π΅ Π²Ρ‹ Π½Π°ΡƒΡ‡ΠΈΡ‚Π΅ΡΡŒ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π³Π»Π°Π²Π½Ρ‹Π΅ ΠΎΠΊΠ½Π° ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ срСдств Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Qt. К ΠΊΠΎΠ½Ρ†Ρƒ Π³Π»Π°Π²Ρ‹ Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ способны ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π·Π°ΠΊΠΎΠ½Ρ‡Π΅Π½Π½Ρ‹ΠΉ графичСский ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ интСрфСйс прилоТСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠΌΠ΅Π΅Ρ‚ мСню, ΠΏΠ°Π½Π΅Π»ΠΈ инструмСнтов ΠΈ строку состояния, ΠΈ всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²Ρ‹Π΅ ΠΎΠΊΠ½Π°.

Π“Π»Π°Π²Π½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ прилоТСния обСспСчиваСт каркас для построСния ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса прилоТСния. Данная Π³Π»Π°Π²Π° Π±ΡƒΠ΄Π΅Ρ‚ ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒΡΡ Π½Π° основС Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° прилоТСния ЭлСктронная Ρ‚Π°Π±Π»ΠΈΡ†Π°, ΠΏΠΎΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ Π½Π° рис. 3.1. Π’ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ЭлСктронная Ρ‚Π°Π±Π»ΠΈΡ†Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ созданныС Π² Π³Π»Π°Π²Π΅ 2 Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²Ρ‹Π΅ ΠΎΠΊΠ½Π° Find, Go-to-Cell ΠΈ Sort (Π½Π°ΠΉΡ‚ΠΈ, ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π½Π° ячСйку ΠΈ ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ).

Рис. 3.1. ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ЭлСктронная Ρ‚Π°Π±Π»ΠΈΡ†Π°.

Π’ основС Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ с графичСским интСрфСйсом Π»Π΅ΠΆΠΈΡ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, чтСния ΠΈ записи Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈΠ»ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, прСдставлСнных Π² ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΌ интСрфСйсС. Π’ Π³Π»Π°Π²Π΅ 4 ΠΌΡ‹ рассмотрим способы Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ‚Π°ΠΊΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, вновь ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π² качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ЭлСктронная Ρ‚Π°Π±Π»ΠΈΡ†Π°.

БозданиС подкласса QMainWindow

Π“Π»Π°Π²Π½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ прилоТСния создаСтся Π² Π²ΠΈΠ΄Π΅ подкласса QMainWindow. МногиС ΠΈΠ· прСдставлСнных Π² Π³Π»Π°Π²Π΅ 2 ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Ρ‚Π°ΠΊΠΆΠ΅ подходят для построСния Π³Π»Π°Π²Π½Ρ‹Ρ… ΠΎΠΊΠΎΠ½, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ±Π° класса QDialog ΠΈ QMainWindow ΡΠ²Π»ΡΡŽΡ‚ΡΡ наслСдниками QWidget.

Π“Π»Π°Π²Π½Ρ‹Π΅ ΠΎΠΊΠ½Π° ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Qt Designer, Π½ΠΎ Π² Π΄Π°Π½Π½ΠΎΠΉ Π³Π»Π°Π²Π΅ ΠΌΡ‹ продСмонстрируСм, ΠΊΠ°ΠΊ это всС дСлаСтся ΠΏΡ€ΠΈ нСпосрСдствСнном ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Если Π²Ρ‹ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°Π΅Ρ‚Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ срСдствами проСктирования, Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π²Ρ‹ смоТСтС Π½Π°ΠΉΡ‚ΠΈ Π² Π³Π»Π°Π²Π΅ Β«Creating a Main Window ApplicationΒ» (Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ прилоТСния Π½Π° основС класса Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°) Π² ΠΎΠ½Π»Π°ΠΉΠ½ΠΎΠ²ΠΎΠΌ руководствС ΠΏΠΎ Qt Designer.

Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° прилоТСния ЭлСктронная Ρ‚Π°Π±Π»ΠΈΡ†Π° содСрТится Π² Π΄Π²ΡƒΡ… Ρ„Π°ΠΉΠ»Π°Ρ…: mainwindow.h ΠΈ mainwindow.cpp. Π‘Π½Π°Ρ‡Π°Π»Π° ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ»:

01 #ifndef MAINWINDOW_H

02 #define MAINWINDOW_H

03 #include <QMainWindow>


04 class QAction;

05 class QLabel;

06 class FindDialog;

07 class Spreadsheet;


08 class MainWindow : public QMainWindow

09 {

10 Q_OBJECT

11 public:

12 MainWindow();

13 protected:

14 void closeEvent(QCloseEvent *event);

ΠœΡ‹ опрСдСляСм класс MainWindow ΠΊΠ°ΠΊ подкласс QMainWindow. Он содСрТит макрос Q_OBJECT, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΈΠΌΠ΅Π΅Ρ‚ собствСнныС сигналы ΠΈ слоты.

Ѐункция closeEvent() ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π° Π² QWidget ΠΊΠ°ΠΊ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ функция; ΠΎΠ½Π° автоматичСски вызываСтся ΠΏΡ€ΠΈ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠΈ ΠΎΠΊΠ½Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ. Она пСрСопрСдСляСтся Π² MainWindow для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ стандартный вопрос ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ возмоТности сохранСния ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ (Β«Do you want to save your changes?Β») ΠΈ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π½Π° дискС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ настройки.

15 private slots:

16 void newFile();

17 void open();

18 bool save();

19 bool saveAs();

20 void find();

21 void goToCell();

22 void sort();

23 void about();

НСкоторыС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ мСню, ΠΊΠ°ΠΊ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, File | New (Π€Π°ΠΉΠ» | Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ) ΠΈΠ»ΠΈ Help | About (ΠŸΠΎΠΌΠΎΡ‰ΡŒ | О ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅), Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ Π² MainWindow Π² Π²ΠΈΠ΄Π΅ Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ… слотов. Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ слотов Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° void, ΠΎΠ΄Π½Π°ΠΊΠΎ save() ΠΈ saveAs() Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° bool. Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ игнорируСтся ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ слота Π² ΠΎΡ‚Π²Π΅Ρ‚ Π½Π° сигнал, Π½ΠΎ ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ слота Π² качСствС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ, ΠΊΠ°ΠΊ это ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ любой ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π‘++.