ΠΡΠΏΠΎΠ»Π½ΠΈΠ² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΎΠΊΠ½ΠΎ Qt (ΡΠΈΡ. 17.2).
$ ./qtl
Π ΠΈΡ. 17.2
ΠΠ°ΠΊ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ
Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ GTK+ Π·Π΄Π΅ΡΡ Π½Π΅Ρ Π²ΠΌΠ΅ΡΠ°ΡΡΠ΅Π³ΠΎ Π² ΡΠ΅Π±Ρ Π²ΡΠ΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° qt.h, ΠΏΠΎΡΡΠΎΠΌΡ Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ²Π½ΠΎ Π²ΠΊΠ»ΡΡΠ°ΡΡ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ Π²ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ².
ΠΠ΅ΡΠ²ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ, Ρ ΠΊΠΎΡΠΎΡΡΠΌ Π²Ρ Π²ΡΡΡΠ΅ΡΠ°Π΅ΡΠ΅ΡΡ, β QApplication. ΠΡΠΎ Π³Π»Π°Π²Π½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ Qt, ΠΊΠΎΡΠΎΡΡΠΉ Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΡΠΎΡΠΌΠΈΡΠΎΠ²Π°ΡΡ, ΠΏΠ΅ΡΠ΅Π΄Π°Π² Π΅ΠΌΡ Π² ΡΠ°ΠΌΠΎΠΌ Π½Π°ΡΠ°Π»Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ. Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Qt Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠΈΠΏΠ° QApplication, ΠΊΠΎΡΠΎΡΡΠΉ Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠΎΠ·Π΄Π°ΡΡ ΠΏΠ΅ΡΠ΅Π΄ ΡΠ΅ΠΌ, ΠΊΠ°ΠΊ Π΄Π΅Π»Π°ΡΡ ΡΡΠΎ-ΡΠΎ Π΅ΡΠ΅. QApplication ΠΈΠΌΠ΅Π΅Ρ Π΄Π΅Π»ΠΎ Ρ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΌΠΈ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΌΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΠΌΠΈ Qt, ΡΠ°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΡΠΎΠ±ΡΡΠΈΠΉ, ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΡΡΠΎΠΊ ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π²Π½Π΅ΡΠ½ΠΈΠΌ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ.
ΠΡ Π±ΡΠ΄Π΅ΡΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ Π΄Π²Π° ΠΌΠ΅ΡΠΎΠ΄Π° QApplication: setMainWidget, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ·Π΄Π°Π΅Ρ Π³Π»Π°Π²Π½ΡΠΉ Π²ΠΈΠ΄ΠΆΠ΅Ρ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΈ exec, ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠΈΠΊΠ»Π° ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΡ ΡΠΎΠ±ΡΡΠΈΠΉ. ΠΠ΅ΡΠΎΠ΄ exec Π½Π΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° Π»ΠΈΠ±ΠΎ Π½Π΅ Π±ΡΠ΄Π΅Ρ Π²ΡΠ·Π²Π°Π½ ΠΌΠ΅ΡΠΎΠ΄ QApplication::quit(), Π»ΠΈΠ±ΠΎ Π½Π΅ Π±ΡΠ΄Π΅Ρ Π·Π°ΠΊΡΡΡ Π³Π»Π°Π²Π½ΡΠΉ Π²ΠΈΠ΄ΠΆΠ΅Ρ.
QMainWindow β Π±Π°Π·ΠΎΠ²ΡΠΉ Π²ΠΈΠ΄ΠΆΠ΅Ρ ΠΎΠΊΠ½Π° Π² Qt, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΌΠ΅Π½Ρ, ΠΏΠ°Π½Π΅Π»Ρ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² ΠΈ ΡΡΡΠΎΠΊΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ. ΠΠ½ Π±ΡΠ΄Π΅Ρ ΠΈΠ³ΡΠ°ΡΡ Π²Π°ΠΆΠ½ΡΡ ΡΠΎΠ»Ρ Π² ΡΡΠΎΠΉ Π³Π»Π°Π²Π΅, ΠΏΠΎ ΠΌΠ΅ΡΠ΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²Ρ Π½Π°ΡΡΠΈΡΠ΅ΡΡ ΡΠ°ΡΡΠΈΡΡΡΡ Π΅Π³ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΈ Π²ΡΡΠ°Π²Π»ΡΡΡ Π² Π½Π΅Π³ΠΎ Π²ΠΈΠ΄ΠΆΠ΅ΡΡ, ΡΠΎΡΠΌΠΈΡΡΡΡΠΈΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ.
ΠΠ°Π»Π΅Π΅ ΠΌΡ ΠΎΠ±ΡΡΠ΄ΠΈΠΌ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΠ³ΠΎ ΡΠΎΠ±ΡΡΠΈΡΠΌΠΈ, ΠΈ Π²Ρ Π²ΡΡΠ°Π²ΠΈΡΠ΅ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²ΠΈΠ΄ΠΆΠ΅Ρ PushButton.
Π‘ΠΈΠ³Π½Π°Π»Ρ ΠΈ ΡΠ»ΠΎΡΡ
ΠΠ°ΠΊ Π²Ρ Π²ΠΈΠ΄Π΅Π»ΠΈ Π² Π³Π»Π°Π²Π΅ 16, ΡΠΈΠ³Π½Π°Π»Ρ ΠΈ ΠΈΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° β Π³Π»Π°Π²Π½ΡΠ΅ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌΠΈ GUI Π΄Π»Ρ ΡΠ΅Π°Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π° Π²Π²ΠΎΠ΄ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, ΠΈ ΠΊΠ»ΡΡΠ΅Π²ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ GUI. ΠΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠΈΠ³Π½Π°Π»ΠΎΠ² ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ° Qt ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· ΡΠΈΠ³Π½Π°Π»ΠΎΠ² ΠΈ ΡΠ»ΠΎΡΠΎΠ² ΠΈΠ»ΠΈ ΠΏΡΠΈΠ΅ΠΌΠ½ΠΈΠΊΠΎΠ², Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΡ ΡΠΈΠ³Π½Π°Π»Π°ΠΌΠΈ ΠΈ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ·ΠΎΠ²Π° Π² ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² GTK+ ΠΈΠ»ΠΈ ΡΠΎΠ±ΡΡΠΈΡΠΌΠΈ ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌΠΈ ΡΠΎΠ±ΡΡΠΈΠΉ Π² ΡΠ·ΡΠΊΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Java.
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅ΠΠΌΠ΅ΠΉΡΠ΅ Π² Π²ΠΈΠ΄Ρ, ΡΡΠΎ ΡΠΈΠ³Π½Π°Π»Ρ Qt ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ ΠΎΡ ΡΠΈΠ³Π½Π°Π»ΠΎΠ² UNIX, ΠΎΠ±ΡΡΠΆΠ΄Π°Π²ΡΠΈΡ ΡΡ Π² Π³Π»Π°Π²Π΅ 11.
ΠΠΎΡ ΠΊΠ°ΠΊ ΡΡΡΡΠΎΠ΅Π½ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΠ΅ ΡΠΎΠ±ΡΡΠΈΡΠΌΠΈ: Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· ΠΌΠ΅Π½Ρ, ΠΏΠ°Π½Π΅Π»Π΅ΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ², ΠΊΠ½ΠΎΠΏΠΎΠΊ, ΠΏΠΎΠ»Π΅ΠΉ Π²Π²ΠΎΠ΄Π° ΠΈ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° Π΄ΡΡΠ³ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² GUI, Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΡ Π²ΠΈΠ΄ΠΆΠ΅ΡΠ°ΠΌΠΈ. ΠΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΡΠ΅Ρ Ρ Π²ΠΈΠ΄ΠΆΠ΅ΡΠΎΠΌ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π°ΠΊΡΠΈΠ²ΠΈΠ·ΠΈΡΡΠ΅Ρ ΠΏΡΠ½ΠΊΡ ΠΌΠ΅Π½Ρ ΠΈΠ»ΠΈ Π²Π²ΠΎΠ΄ΠΈΡ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΡΠ΅ΠΊΡΡ Π² ΠΏΠΎΠ»Π΅ Π²Π²ΠΎΠ΄Π°, Π²ΠΈΠ΄ΠΆΠ΅Ρ ΠΏΠΎΡΠΎΠΆΠ΄Π°Π΅Ρ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠΈΠ³Π½Π°Π», ΡΠ°ΠΊΠΎΠΉ ΠΊΠ°ΠΊ clicked, text_changed ΠΈΠ»ΠΈ key_pressed. ΠΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, Π²Π°ΠΌ Π·Π°Ρ ΠΎΡΠ΅ΡΡΡ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ-ΡΠΎ Π² ΠΎΡΠ²Π΅Ρ Π½Π° Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ ΠΈΠ»ΠΈ Π²ΡΠΉΡΠΈ ΠΈΠ· ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΈ Π²Ρ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΠ΅ ΡΡΠΎ, ΡΠ²ΡΠ·Π°Π² ΡΠΈΠ³Π½Π°Π» Ρ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ·ΠΎΠ²Π° ΠΈΠ»ΠΈ ΡΠ»ΠΎΡΠΎΠΌ Π½Π° ΡΠ·ΡΠΊΠ΅ Qt.
ΠΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠΈΠ³Π½Π°Π»ΠΎΠ² ΠΈ ΡΠ»ΠΎΡΠΎΠ² Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΠΎ β Qt ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ Π΄Π²Π° Π½ΠΎΠ²ΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΎΠΏΠΈΡΠ°Π½Π½ΡΡ ΠΏΡΠ΅Π²Π΄ΠΎΠΊΠ»ΡΡΠ΅Π²ΡΡ ΡΠ»ΠΎΠ²Π°, signals ΠΈ slots Π΄Π»Ρ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΡ Π² Π²Π°ΡΠ΅ΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠΌ ΠΊΠΎΠ΄Π΅ ΠΊΠ»Π°ΡΡΠΎΠ² ΡΠΈΠ³Π½Π°Π»ΠΎΠ² ΠΈ ΡΠ»ΠΎΡΠΎΠ². ΠΡΠΎ Π·Π°ΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΠ½ΠΎ Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΡΠΈΡΠ°Π΅ΠΌΠΎΡΡΠΈ ΠΈ ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, Π½ΠΎ Π²Ρ Π²ΡΠ½ΡΠΆΠ΄Π΅Π½Ρ ΠΏΡΠΎΠΏΡΡΠΊΠ°ΡΡ ΡΠ²ΠΎΠΉ ΠΊΠΎΠ΄ ΡΠ΅ΡΠ΅Π· ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΡΡΠ°ΠΏ ΠΏΡΠ΅ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ½ΠΎΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π΄Π»Ρ ΠΏΠΎΠΈΡΠΊΠ° ΠΈ Π·Π°ΠΌΠ΅Π½Ρ ΡΡΠΈΡ ΠΏΡΠ΅Π²Π΄ΠΎΠΊΠ»ΡΡΠ΅Π²ΡΡ ΡΠ»ΠΎΠ² Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ Π½Π° ΡΠ·ΡΠΊΠ΅ Π‘++.
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΉ ΠΊΠΎΠ΄ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Qt β Π½Π΅ Π½Π°ΡΡΠΎΡΡΠΈΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΉ ΠΊΠΎΠ΄ Π½Π° Π‘++. ΠΠΎΡΠΎΠΉ ΡΡΠΎ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ Π΄Π»Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ². Π‘ΠΌ. Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Qt Π½Π° Web-ΡΠ°ΠΉΡΠ΅ http://doc.trolltech.com/, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ½ΡΡΡ ΠΏΡΠΈΡΠΈΠ½Ρ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΡΠΈΡ Π½ΠΎΠ²ΡΡ ΠΏΡΠ΅Π²Π΄ΠΎΠΊΠ»ΡΡΠ΅Π²ΡΡ ΡΠ»ΠΎΠ² Π² Π‘++. ΠΠΎΠ»Π΅Π΅ ΡΠΎΠ³ΠΎ, ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠΈΠ³Π½Π°Π»ΠΎΠ² ΠΈ ΡΠ»ΠΎΡΠΎΠ² Π½Π΅ ΡΠ°ΠΊ ΡΠΆ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ Microsoft Foundation Classes (MFC, Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π±Π°Π·ΠΎΠ²ΡΡ ΠΊΠ»Π°ΡΡΠΎΠ² Microsoft) Π² ΠΠ‘ Windows, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠ°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΠ·ΡΠΊΠ° Π‘++.
ΠΠ° ΡΠΏΠΎΡΠΎΠ±Ρ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠΈΠ³Π½Π°Π»ΠΎΠ² ΠΈ ΡΠ»ΠΎΡΠΎΠ² Π² Qt Π΅ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ, Π½ΠΎ ΠΎΠ½ΠΈ Π½Π΅ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠ΅:
β‘ ΡΠΈΠ³Π½Π°Π»Ρ ΠΈ ΡΠ»ΠΎΡΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ-ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌΠΈ ΠΊΠ»Π°ΡΡΠ°-ΠΏΠΎΡΠΎΠΌΠΊΠ° QObject;
β‘ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ QObject Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΏΠ΅ΡΠ²ΡΠΌ Π² ΡΠΏΠΈΡΠΊΠ΅ ΠΊΠ»Π°ΡΡΠ°;
β‘ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ Q_OBJECT Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΡΠ²Π»ΡΡΡΡΡ ΠΏΠ΅ΡΠ²ΡΠΌ Π² ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΈ ΠΊΠ»Π°ΡΡΠ°;
β‘ ΡΠΈΠ³Π½Π°Π»Ρ Π½Π΅Π»ΡΠ·Ρ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ Π² ΡΠ°Π±Π»ΠΎΠ½Π°Ρ ;
β‘ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ Π½Π° ΡΡΠ½ΠΊΡΠΈΡ Π½Π΅ ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΊΠ°ΠΊ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ Π² ΡΠΈΠ³Π½Π°Π»Π°Ρ ΠΈ ΡΠ»ΠΎΡΠ°Ρ ;
β‘ ΡΠΈΠ³Π½Π°Π»Ρ ΠΈ ΡΠ»ΠΎΡΡ Π½Π΅ ΠΌΠΎΠ³ΡΡ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΡΡ ΠΈΠ»ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡΡΡ Π΄ΠΎ ΡΡΠ°ΡΡΡΠ° public (ΠΎΠ±ΡΠ΅Π΄ΠΎΡΡΡΠΏΠ½ΡΠΉ).
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠΈΡΠ°ΡΡ Π²Π°ΡΠΈ ΡΠΈΠ³Π½Π°Π»Ρ ΠΈ ΡΠ»ΠΎΡΡ ΠΊΠ°ΠΊ ΠΏΠΎΡΠΎΠΌΠΊΠΎΠ² ΠΎΠ±ΡΠ΅ΠΊΡΠ° QObject, Π»ΠΎΠ³ΠΈΡΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π²Π°Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ, ΡΠ°ΡΡΠΈΡΡΡ ΠΈ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Ρ Π²ΠΈΠ΄ΠΆΠ΅Ρ, Π½Π°ΡΠΈΠ½Π°Ρ Ρ QWidget, Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ Π²ΠΈΠ΄ΠΆΠ΅ΡΠ° Qt, ΠΏΠΎΡΠΎΠΌΠΊΠ° Π²ΠΈΠ΄ΠΆΠ΅ΡΠ° QObject. Π ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ΅ Qt Π²Ρ ΠΏΠΎΡΡΠΈ Π²ΡΠ΅Π³Π΄Π° Π±ΡΠ΄Π΅ΡΠ΅ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ, ΡΠ°ΡΡΠΈΡΡΡ ΡΠ°ΠΊΠΈΠ΅ Π²ΠΈΠ΄ΠΆΠ΅ΡΡ, ΠΊΠ°ΠΊ QMainWindow.
Π’ΠΈΠΏΠΈΡΠ½ΠΎΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΊΠ»Π°ΡΡΠ° Π² ΡΠ°ΠΉΠ»Π΅ MyWindow.h Π΄Π»Ρ Π²Π°ΡΠ΅Π³ΠΎ GUI Π±ΡΠ΄Π΅Ρ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°ΡΡ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ΅ Π΄Π°Π»Π΅Π΅:
class MyWindow : public QMainWindow {
Q_OBJECT
public:
MyWindow();
virtual ~MyWindow();
signals:
void aSignal();
private slots:
void doSomething();
}
ΠΠ°Ρ ΠΊΠ»Π°ΡΡ β Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊ ΠΎΠ±ΡΠ΅ΠΊΡΠ° QMainWindow, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ. ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° Π²Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΠ΅ ΠΏΠΎΠ΄ΠΊΠ»Π°ΡΡ QDialog. ΠΠ΅ΡΠ²ΡΠΌ ΡΠΊΠ°Π·Π°Π½ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ Q_OBJECT, Π΄Π΅ΠΉΡΡΠ²ΡΡΡΠΈΠΉ ΠΊΠ°ΠΊ ΠΌΠ΅ΡΠΊΠ° Π΄Π»Ρ ΠΏΡΠ΅ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°, Π·Π° ΠΊΠΎΡΠΎΡΡΠΌ ΡΠ»Π΅Π΄ΡΡΡ ΠΎΠ±ΡΡΠ½ΡΠ΅ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° ΠΈ Π΄Π΅ΡΡΡΡΠΊΡΠΎΡΠ°. ΠΠ°Π»Π΅Π΅ Π΄Π°Π½Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠΈΠ³Π½Π°Π»Π° ΠΈ ΡΠ»ΠΎΡΠ°.
Π£ Π²Π°Ρ Π΅ΡΡΡ ΠΎΠ΄ΠΈΠ½ ΡΠΈΠ³Π½Π°Π» ΠΈ ΠΎΠ΄ΠΈΠ½ ΡΠ»ΠΎΡ, ΠΎΠ±Π° Π±Π΅Π· ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ². ΠΠ»Ρ ΠΏΠΎΡΠΎΠΆΠ΄Π΅Π½ΠΈΡ ΡΠΈΠ³Π½Π°Π»Π° aSignal() Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π²ΡΠ΅Π³ΠΎ Π»ΠΈΡΡ Π² Π»ΡΠ±ΠΎΠΌ ΠΌΠ΅ΡΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π²ΡΠ·Π²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ emit:
emit aSignal();
ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π²ΡΠ΅ ΠΎΡΡΠ°Π»ΡΠ½ΠΎΠ΅ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΡΡΡ Qt. ΠΠ°ΠΌ Π΄Π°ΠΆΠ΅ Π½Π΅ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ aSignal().
ΠΠ»Ρ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠ»ΠΎΡΠΎΠ² ΠΈΡ Π½ΡΠΆΠ½ΠΎ ΡΠ²ΡΠ·Π°ΡΡ Ρ ΡΠΈΠ³Π½Π°Π»ΠΎΠΌ. ΠΠ΅Π»Π°Π΅ΡΡΡ ΡΡΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π½Π°Π·Π²Π°Π½Π½ΠΎΠ³ΠΎ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π° connect ΠΊΠ»Π°ΡΡΠ° QObject:
bool QObject::connect(const QObject * sender, const char* signal,
const QObject * receiver, const char * member);
ΠΡΠΎΡΡΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΠΉΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡ, Π²Π»Π°Π΄Π΅ΡΡΠΈΠΉ ΡΠΈΠ³Π½Π°Π»ΠΎΠΌ (ΠΎΡΠΏΡΠ°Π²ΠΈΡΠ΅Π»Ρ), ΡΡΠ½ΠΊΡΠΈΡ ΡΠΈΠ³Π½Π°Π»Π°, ΠΎΠ±ΡΠ΅ΠΊΡ, Π²Π»Π°Π΄Π΅ΡΡΠΈΠΉ ΡΠ»ΠΎΡΠΎΠΌ (ΠΏΡΠΈΠ΅ΠΌΠ½ΠΈΠΊΠΎΠΌ), ΠΈ Π² Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ ΡΠΊΠ°ΠΆΠΈΡΠ΅ ΠΈΠΌΡ ΡΠ»ΠΎΡΠ°.
Π ΠΏΡΠΈΠΌΠ΅ΡΠ΅ MyWindow, Π΅ΡΠ»ΠΈ Π±Ρ Π²Ρ Π·Π°Ρ ΠΎΡΠ΅Π»ΠΈ ΡΠ²ΡΠ·Π°ΡΡ ΡΠΈΠ³Π½Π°Π» clicked Π²ΠΈΠ΄ΠΆΠ΅ΡΠ° QPushButton Ρ Π²Π°ΡΠΈΠΌ ΡΠ»ΠΎΡΠΎΠΌ doSomething, Π²Ρ Π±Ρ Π½Π°ΠΏΠΈΡΠ°Π»ΠΈ:
connect(button, SIGNAL(clicked()), this, SLOT(doSomething()));
Π£ΡΡΠΈΡΠ΅, ΡΡΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ ΠΌΠ°ΠΊΡΠΎΡΡ SIGNAL ΠΈ SLOT Π΄Π»Ρ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΡΠΈΠ³Π½Π°Π»ΠΎΠ² ΠΈ ΡΠ»ΠΎΡΠΎΠ². ΠΠ°ΠΊ ΠΈ Π² ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ΅ GTK+, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ²ΡΠ·Π°ΡΡ ΡΡΠ΄ ΡΠ»ΠΎΡΠΎΠ² Ρ Π·Π°Π΄Π°Π½Π½ΡΠΌ ΡΠΈΠ³Π½Π°Π»ΠΎΠΌ ΠΈ ΡΠ°ΠΊΠΆΠ΅ ΡΠ²ΡΠ·Π°ΡΡ ΡΠ»ΠΎΡ Ρ Π»ΡΠ±ΡΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ ΡΠΈΠ³Π½Π°Π»ΠΎΠ² Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΡΡ Π²ΡΠ·ΠΎΠ²ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΈ connect. ΠΡΠ»ΠΈ ΠΎΠ½Π° Π·Π°Π²Π΅ΡΡΠ°Π΅ΡΡΡ Π°Π²Π°ΡΠΈΠΉΠ½ΠΎ, ΡΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ FALSE.
ΠΡΡΠ°Π΅ΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ Π²Π°Ρ ΡΠ»ΠΎΡ Π² Π²ΠΈΠ΄Π΅ ΠΎΠ±ΡΡΠ½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ-ΠΌΠ΅ΡΠΎΠ΄Π°:
void MyWindow::doSomething() {
// ΠΠΎΠ΄ ΡΠ»ΠΎΡΠ°
}
ΠΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΡΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΠ΅ 17.2.
Π£ΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΠ΅ 17.2. Π‘ΠΈΠ³Π½Π°Π»Ρ ΠΈ ΡΠ»ΠΎΡΡΠ’Π΅ΠΏΠ΅ΡΡ, Π·Π½Π°Ρ ΠΎΡΠ½ΠΎΠ²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠΈΠ³Π½Π°Π»ΠΎΠ² ΠΈ ΡΠ»ΠΎΡΠΎΠ², ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠΌ ΠΈΡ Π² ΠΏΡΠΈΠΌΠ΅ΡΠ΅. Π£ΡΠΎΠ²Π΅ΡΡΠ΅Π½ΡΡΠ²ΡΠΉΡΠ΅ QMainWindow, Π²ΡΡΠ°Π²ΡΡΠ΅ Π² Π½Π΅Π³ΠΎ ΠΊΠ½ΠΎΠΏΠΊΡ ΠΈ ΡΠ²ΡΠΆΠΈΡΠ΅ ΡΠΈΠ³Π½Π°Π» ΠΊΠ½ΠΎΠΏΠΊΠΈ clicked ΡΠΎ ΡΠ»ΠΎΡΠΎΠΌ.
1. ΠΠ²Π΅Π΄ΠΈΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΊΠ»Π°ΡΡΠ° ΠΈ Π½Π°Π·ΠΎΠ²ΠΈΡΠ΅ ΡΠ°ΠΉΠ» ButtonWindow.h:
#include <qmainwindow.h>
class ButtonWindow : public QMainWindow {
Q_OBJECT
public:
ButtonWindow(QWidget *parent = 0, const char *name = 0);
virtual ~ButtonWindow();
private slots:
void Clicked();
};
2. ΠΠ°Π»Π΅Π΅ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΊΠ»Π°ΡΡΠ° Π² ΡΠ°ΠΉΠ»Π΅ ButtonWindow.cpp:
#include "ButtonWindow.moc"
#include <qpushbutton.h>
#include <qapplication.h>
#include <iostream>
3. Π ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ΅ Π²Ρ Π·Π°Π΄Π°Π΅ΡΠ΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΠΎΠΊΠ½Π°, ΡΠΎΠ·Π΄Π°Π΅ΡΠ΅ ΠΊΠ½ΠΎΠΏΠΊΡ ΠΈ ΡΠ²ΡΠ·ΡΠ²Π°Π΅ΡΠ΅ ΡΠΈΠ³Π½Π°Π» Π½Π°ΠΆΠ°ΡΠΈΡ ΠΊΠ½ΠΎΠΏΠΊΠΈ Ρ Π²Π°ΡΠΈΠΌ ΡΠ»ΠΎΡΠΎΠΌ. setCaption β ΠΌΠ΅ΡΠΎΠ΄ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΡΠΈΠΏΠ° QMainWindow, ΠΊΠΎΡΠΎΡΡΠΉ, ΡΡΠΎ Π½Π΅ΡΠ΄ΠΈΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ, Π·Π°Π΄Π°Π΅Ρ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΠΎΠΊΠ½Π°:
ButtonWindow::ButtonWindow(QWidget *parent, const char* name) : QMainWindow(parent, name) {
this->setCaption("This is the window Title");
QPushButton *button = new QPushButton("Click Me!", this, "Button1");
button->setGeometry(50, 30, 70, 20);
connect(button, SIGNAL(clicked()), this, SLOT(Clicked()));
}
4. Qt Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠ΄Π°Π»ΡΠ΅Ρ Π²ΠΈΠ΄ΠΆΠ΅ΡΡ, ΠΏΠΎΡΡΠΎΠΌΡ Π²Π°Ρ Π΄Π΅ΡΡΡΡΠΊΡΠΎΡ ΠΏΡΡΡ:
ButtonWindow::~ButtonWindow() {}
5. ΠΠ°ΡΠ΅ΠΌ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠ»ΠΎΡΠ°:
void ButtonWindow::Clicked(void) {
std::cout << "clicked!\n";
}
6. Π Π½Π°ΠΊΠΎΠ½Π΅Ρ, Π² ΡΡΠ½ΠΊΡΠΈΠΈ main Π²Ρ ΠΏΡΠΎΡΡΠΎ ΡΠΎΠ·Π΄Π°Π΅ΡΠ΅ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΡΠΈΠΏΠ° ButtonWindow, Π΄Π΅Π»Π°Π΅ΡΠ΅ Π΅Π³ΠΎ Π³Π»Π°Π²Π½ΡΠΌ ΠΎΠΊΠ½ΠΎΠΌ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΡΠ΅ ΠΎΠΊΠ½ΠΎ Π½Π° ΡΠΊΡΠ°Π½Π΅:
int main(int argc, char **argv) {
QApplication app(argc, argv);
ButtonWindow *window = new ButtonWindow();
app.setMainWidget(window);
window->show();
return app.exec();
}
7. ΠΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ Π΄Π°Π½Π½ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΏΡΠ΅ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ Π΄Π»Ρ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°. ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΡΠΎΠ³ΠΎ ΠΏΡΠ΅ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ° Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ Meta Object Compiler (moc, ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΠΌΠ΅ΡΠ°ΠΎΠ±ΡΠ΅ΠΊΡΠ°) ΠΈ Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ Π²ΠΊΠ»ΡΡΠ΅Π½Π° Π² ΠΏΠ°ΠΊΠ΅Ρ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ° Qt. ΠΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ moc Π΄Π»Ρ ΡΠ°ΠΉΠ»Π° ButtonWindow.h, ΡΠΎΡ ΡΠ°Π½ΠΈΠ² ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π² ΡΠ°ΠΉΠ»Π΅ ButtonWindow.moc: