summaryrefslogtreecommitdiffstats
path: root/tde-i18n-ru/docs/tdevelop/kde_app_devel/index.docbook
blob: 4e05a5912c6f57ffde0fdcf888c65139866b0dbc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
<?xml version="1.0" ?>
<!DOCTYPE book PUBLIC "-//KDE//DTD DocBook XML V4.1.2-Based Variant V1.1//EN" "dtd/kdex.dtd" [
  <!ENTITY tdevelop "<application
>KDevelop</application
>">
  <!ENTITY kappname "&tdevelop;">
  <!ENTITY % addindex "INCLUDE">
  <!ENTITY % Russian "INCLUDE"
> <!-- change language only here -->
]>

<book lang="&language;">

<bookinfo>
<title
>ΠžΡΠ½ΠΎΠ²Ρ‹ программирования Π² &tdevelop;</title>

<date
>2002-12-05</date>
<releaseinfo
>2.0</releaseinfo>

<authorgroup>
<author
><firstname
>Ralf</firstname
> <surname
>Nolden</surname
> <affiliation
><address
><email
>Ralf.Nolden@post.rwth-aachen.de</email
></address
></affiliation>
</author>
<author
><firstname
>Caleb</firstname
> <surname
>Tennis</surname
> <affiliation
><address
><email
>caleb@aei-tech.com</email
></address
></affiliation>
</author>
</authorgroup>

<copyright>
<year
>1999</year>
<holder
>Ralf Nolden</holder>
</copyright>
<copyright>
<year
>2002</year>
<holder
>Caleb Tennis</holder>
</copyright>

<!-- ROLES_OF_TRANSLATORS -->

<legalnotice
>&FDLNotice;</legalnotice>

<abstract>
<para
>Руководство ΠΏΠΎ написанию C++ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ для KDE с использованиСм &tdevelop;</para>
</abstract>

<keywordset>
<keyword
>KDE</keyword>
<keyword
>KDevelop</keyword>
<keyword
>IDE</keyword>
<keyword
>Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°</keyword>
<keyword
>ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅</keyword>
</keywordset>

</bookinfo>

<chapter id="chapter1">
<title
>Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅</title>
<para
>Π‘ ΠΏΡ€ΠΈΠΎΠ±Ρ€Π΅Ρ‚Π΅Π½ΠΈΠ΅ΠΌ Unix-ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΌΠΈ систСмами всё большСй популярности Π΄Π°ΠΆΠ΅ срСди Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΈΠ·-Π·Π° Ρ‚Π°ΠΊΠΈΡ… прСимущСств, ΠΊΠ°ΠΊ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ, Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ (Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠ·-Π·Π° Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π½Π°Ρ‡Π°Π»ΡŒΡΡ‚Π²Π° ΠΎ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π΅ Π½Π° эти ОБ - ΠΏΡ€ΠΈΠΌ. ΠΏΠ΅Ρ€Π΅Π².), Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΈΠ· Π½ΠΈΡ… Ρ€Π°Π·ΠΎΡ‡Π°Ρ€ΠΎΠ²Ρ‹Π²Π°ΡŽΡ‚ ΠΈΠ·-Π·Π° Π½Π΅ΠΏΠΎΡ…ΠΎΠΆΠ΅Π³ΠΎ внСшнСго Π²ΠΈΠ΄Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΈ ΠΈΡ… Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ повСдСния. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ, ΠΏΠΈΡˆΡƒΡ‰ΠΈΠΌ прилоТСния ΠΏΠΎΠ΄ KDE, прСдоставляСтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΈΡΠ°Ρ‚ΡŒ пСрвоклассныС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ для Unix-ΠΊΠ»ΠΎΠ½ΠΎΠ², Ρ‡Ρ‚ΠΎ способствуСт Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡŽ сообщСства ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ этих ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСм посрСдством прСдоставлСния ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π»ΡƒΡ‡ΡˆΠ΅Π³ΠΎ качСства. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ KDE становится всё Π±ΠΎΠ»Π΅Π΅ популярной срСдой для программистов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ хотят ΡΠΎΡΡ€Π΅Π΄ΠΎΡ‚ΠΎΡ‡ΠΈΡ‚ΡŒΡΡ Π½Π° Π³Π»Π°Π²Π½ΠΎΠΉ Ρ†Π΅Π»ΠΈ своСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, оставив ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΏΠΎ созданию интСрфСйса Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌ KDE. </para>

<sect1 id="c1s1">
<title
>Π§Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ</title>
<para
>Π”Π°Π»Π΅Π΅ прСдполагаСтся, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΡƒΠΆΠ΅ Π·Π½Π°Π΅Ρ‚Π΅ C++. Если это Π½Π΅ Ρ‚Π°ΠΊ, ΠΏΠΎΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΡƒΠΉΡ‚Π΅ΡΡŒ сначала Π² самом языкС. Книги ΠΎ Π½Ρ‘ΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π»ΠΈΠ±ΠΎ Π² мСстном ΠΊΠ½ΠΈΠΆΠ½ΠΎΠΌ ΠΌΠ°Π³Π°Π·ΠΈΠ½Π΅, Π»ΠΈΠ±ΠΎ Π² элСктронном Π²ΠΈΠ΄Π΅ Π² Π‘Π΅Ρ‚ΠΈ. Знания ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ графичСского ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса (GUI) Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹, Ρ‚.ΠΊ. Π² этом руководствС Ρ‚Π°ΠΊΠΆΠ΅ даётся Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Π΄ΠΈΠ·Π°ΠΉΠ½Π° Π½Π° Π±Π°Π·Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ Qt ΠΈ KDE. Π’Π°ΠΊΠΆΠ΅ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΎΡΠ²ΠΎΠΈΡ‚ΡŒΡΡ с &tdevelop;, Π² Ρ‡Ρ‘ΠΌ Π²Π°ΠΌ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Руководство &tdevelop;, содСрТащСС ΠΎΠ±Π·ΠΎΡ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ этой срСды Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. </para>
</sect1>

<sect1 id="c1s2">
<title
>Об этом руководствС</title>
<para
>Π­Ρ‚ΠΎ руководство написано для ознакомлСния программистов с Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ KDE Π² ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ срСдС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ KDevelop. </para>
<para
>Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π³Π»Π°Π²Ρ‹ содСрТат способы создания ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ², описаниС Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ исходного ΠΊΠΎΠ΄Π°, созданного мастСром, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ‚Π°ΠΊΠΈΡ… элСмСнты интСрфСйса, ΠΊΠ°ΠΊ ΠΏΠ°Π½Π΅Π»ΠΈ инструмСнтов, мСню, ΠΈ области прСдставлСния (view). </para>
<para
>Π—Π°Ρ‚Π΅ΠΌ ΠΈΠ΄Ρ‘Ρ‚ обсуТдСниС Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ² с ΠΈΠ·Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° создания элСмСнтов управлСния (элСмСнтов ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π°ΠΌΠΈ) ΠΈ измСнСния ΠΈΡ… свойств. </para>
<para
>Π—Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ руководство нСсколькими Ρ‚Π΅ΠΌΠ°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ дополнят ваши знания ΠΏΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ ΠΈ написанию Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ. </para>
<sect2 id="c1s2s1">
<title
>Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Π³Π»Π°Π²Π΅</title>
<para
>ΠœΡ‹ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΠΌ наш взгляд Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Qt ΠΈ KDE, ΠΈΡ… основныС ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΈ Π²ΠΎΠΎΠ±Ρ‰Π΅ ΠΏΠΎΡ‡Π΅ΠΌΡƒ всё сдСлано Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ ΠΎΠ½ΠΎ Π΅ΡΡ‚ΡŒ. Π’Π°ΠΊΠΆΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ описано созданиС ΡƒΡ‡Π΅Π±Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΏΠΎΠ΄ Qt с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ &tdevelop;, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠ΅ смогут ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΡΠ²ΠΎΠΈΡ‚ΡŒΡΡ с основными возмоТностями &tdevelop;. </para>
</sect2>

<sect2 id="c1s2s2">
<title
>Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Π³Π»Π°Π²Π°Ρ…</title>
<para
>Π’Ρ‹ Π½Π°ΡƒΡ‡ΠΈΡ‚Π΅ΡΡŒ: <itemizedlist>
<listitem
><para
>ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ KAppWizard</para
></listitem>
<listitem
><para
>ΡƒΠ·Π½Π°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ сразу послС Π΅Π³ΠΎ создания</para
></listitem>
<listitem
><para
>Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ ΡƒΠΆΠ΅ созданный ΠΊΠΎΠ΄</para
></listitem>
<listitem
><para
>Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ прСдставлСниС</para
></listitem>
<listitem
><para
>Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ возмоТности Π² вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ², мСню ΠΈ ΠΏΠ°Π½Π΅Π»Π΅ΠΉ инструмСнтов</para
></listitem>
<listitem
><para
>Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ простым Π² использовании с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ контСкстной справки</para
></listitem>
<listitem
><para
>ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ</para
></listitem>
</itemizedlist>
</para>
</sect2>

</sect1>

<sect1 id="c1s3">
<title
>Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ информация</title>
<para
>Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ информация ΠΏΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ Π² Qt/KDE: <itemizedlist>
<listitem
><para
>ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΠ΄ Qt ΠΏΠΎΠ΄ Ρ€Π΅Π΄Π°ΠΊΡ†ΠΈΠ΅ΠΉ Matthias Kalle Dalheimer</para
></listitem>
<listitem
><para
><ulink url="www.tdevelop.org"
>Руководство KDevelop, поставляСмоС с KDevelop</ulink
></para
></listitem>
<listitem
><para
><ulink url="doc.trolltech.com"
>Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊ ΠΏΠΎ функциям Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Qt</ulink
></para
></listitem>
<listitem
><para
><ulink url="developer.kde.org"
>Π‘Π°ΠΉΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² KDE</ulink
></para
></listitem>
</itemizedlist>
</para>
<para
>Π’Π°ΠΊΠΆΠ΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, воспользовавшись <ulink url="http://www.google.com"
>поисковой машиной</ulink
>, подпиской Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ списки рассылки, ΡΠ΅Ρ‚ΡŒΡŽ Usenet. </para>
<para
>Для получСния ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΏΠΎ KDevelop IDE посылайтС запросы Π² список рассылки <email
>tdevelop@tdevelop.org</email
>. ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² KDevelop ΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π²Π°ΠΌ ΠΏΠΎΠΌΠΎΡ‰ΡŒ бСсплатно ΠΈ Π΅Ρ‘ возмоТности ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Ρ‹. ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, Π·Π°Π΄Π°Π²Π°ΠΉΡ‚Π΅ вопросы Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎ KDevelop. </para>
</sect1>

</chapter>

<chapter id="chapter2">
<title
>Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ KDE ΠΈ Qt</title>
<para
>НорвСТская компания TrollTech (<ulink url="http://www.trolltech.com"
>http://www.trolltech.com</ulink
>) являСтся Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠΌ, Ρ‚.Π½. GUI-инструмСнтария, Qt. GUI Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²Ρ‹Π²Π°Π΅Ρ‚ΡΡ ΠΊΠ°ΠΊ "Graphical User Interface" ("графичСский ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ интСрфСйс"). Π­Ρ‚ΠΎΡ‚ инструмСнтарий Π½ΡƒΠΆΠ΅Π½ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ с графичСским интСрфСйсом, Ρ‡Π°Ρ‰Π΅ всСго Ρ‡Π΅Ρ€Π΅Π· интСрфСйс X-Window (ΠΈΠ»ΠΈ совмСстимый) Π½Π° систСмах Unix, Ρ‚.ΠΊ. систСма  X Π½Π΅ содСрТит ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠ³ΠΎ интСрфСйса сама ΠΏΠΎ сСбС (Π½Π° Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ разрабатываСтся Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π° Y Window System, которая Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ графичСских элСмСнтов, Π½ΠΎ Π΅Ρ‘ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° находится Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ стадии - ΠΏΡ€ΠΈΠΌ. ΠΏΠ΅Ρ€Π΅Π².). Доступны ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса, Π½ΠΎ Qt ΠΈΠΌΠ΅Π΅Ρ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ прСимущСства, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния ΠΏΡ€ΠΎΡ‰Π΅ ΠΈ быстрСС. Qt Ρ‚Π°ΠΊΠΆΠ΅ доступна для Microsoft Windows, Ρ‡Ρ‚ΠΎ позволяСт Π΄Π΅Π»Π°Ρ‚ΡŒ пСрСносимыС прилоТСния с графичСским интСрфСйсом. </para>
<para
>ЦСль ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ KDE (<ulink url="http://www.kde.org"
>http://www.kde.org</ulink
>)   -- ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ систСмы Unix Π±ΠΎΠ»Π΅Π΅ друТСствСнными для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ Qt, для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΎΠΊΠΎΠ½Π½ΠΎΠ³ΠΎ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π° для ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ X-Window (ΠΈΠ»ΠΈ совмСстимой с Π½Π΅ΠΉ), Π° Ρ‚Π°ΠΊΠΆΠ΅ большого количСства Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, поставляСмых Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π°Ρ… KDE. ПослС Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΏΠ΅Ρ€Π²Ρ‹Ρ… вСрсий KDE, ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΠ»ΠΈ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π½ΡƒΡŽ ΠΈΠΌ срСду Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ графичСских ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ KDE ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ ΠΎΠ±Ρ‰ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ классы для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ с ΡƒΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ согласованным интСрфСйсом. Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Π½Π΅ придётся ΠΎΡΠ²Π°ΠΈΠ²Π°Ρ‚ΡŒΡΡ с интСрфСйсом ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ с нуля, Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ со Π΅Ρ‘ спСцифичСскими функциями. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ KDE Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚ Π΄Ρ€ΡƒΠ³ с Π΄Ρ€ΡƒΠ³ΠΎΠΌ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ стола: ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ с Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹ΠΌ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ΠΎΠΌ посрСдством Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ "ΠΏΠ΅Ρ€Π΅Ρ‚Π°Ρ‰ΠΈΡ‚ΡŒ ΠΈ ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ", с ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ΠΎΠΌ сСссии ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ возмоТности, прСдоставляСмыС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ KDE. </para>
<para
>И Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° QT ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ KDE написаны Π½Π° языкС программирования C++, поэтому ΠΏΠΎΡ‡Ρ‚ΠΈ всС прилоТСния, ΠΈΡ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠ΅, Ρ‚ΠΎΠΆΠ΅ написаны Π½Π° C++. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠΌΡ‹ ΡΠΎΠ²Π΅Ρ€ΡˆΠΈΠΌ ΠΊΡ€Π°Ρ‚ΠΊΠΈΠΉ экскурс Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, ΡƒΠ²ΠΈΠ΄ΠΈΠΌ, ΠΊΠ°ΠΊΠΈΠ΅ возмоТности ΠΎΠ½ΠΈ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚, ΠΈ ΠΊΠ°ΠΊ Π² ΠΎΠ±Ρ‰ΠΈΡ… Ρ‡Π΅Ρ€Ρ‚Π°Ρ… ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ прилоТСния Qt ΠΈ KDE. </para>

<sect1 id="c2s1">
<title
>GUI-инструмСнтарий Qt</title>
<para
>Как сказано Π²Ρ‹ΡˆΠ΅, Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Qt прСдоставляСт собой Π½Π°Π±ΠΎΡ€ графичСских элСмСнтов. ΠšΡ€ΠΎΠΌΠ΅ этого: <itemizedlist>
<listitem
><para
>ΠšΠ»Π°ΡΡΡ‹ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, Π³ΠΎΡ‚ΠΎΠ²Ρ‹Π΅ ΠΊ использованию Π΄Π°ΠΆΠ΅ Π½Π΅ графичСскими ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ</para
></listitem>
<listitem
><para
>Π£Π΄ΠΎΠ±Π½ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ взаимодСйствия с ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ Ρ‡Π΅Ρ€Π΅Π· ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ сигналов/слотов</para
></listitem>
<listitem
><para
>Набор ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Ρ… GUI-элСмСнтов, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… "Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π°ΠΌΠΈ"</para
></listitem>
<listitem
><para
>ΠŸΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Π΅ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π΄ΠΈΠ°Π»ΠΎΠ³ открытия Ρ„Π°ΠΉΠ»Π°</para
></listitem>
</itemizedlist>
</para>
<para
>Π—Π½Π°Π½ΠΈΠ΅ классов Qt ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, Π΄Π°ΠΆΠ΅ Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ΄ KDE. Для Π½Π°Ρ‡Π°Π»Π° Ρ€Π°Π·Π±Π΅Ρ€Ρ‘ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΏΠΎΠ΄ Qt, Π° ΠΏΠΎΡ‚ΠΎΠΌ сдСлаСм ΠΈΠ· Π½Π΅Ρ‘ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΏΠΎΠ΄ KDE. </para>

<sect2 id="c2s1s1">
<title
>ΠŸΠ΅Ρ€Π²ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Qt</title>
<para
>ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Π² Π½Π°Ρ‡Π°Π»Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° C++ Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ функция <function
>main()</function
>, которая выполняСтся ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΏΡ€ΠΈ запускС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΎΠΊΠ½Π° ΠΈ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ взаимодСйствиС с ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ, сначала ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ, ΠΊΠ°ΠΊ эти ΠΎΠΊΠ½Π° Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ. ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΠΌ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΡƒΡ‡Π΅Π±Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΠ· Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΏΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ Qt ΠΈ Ρ€Π°Π·Π±Π΅Ρ€Ρ‘ΠΌ шаги выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, которая ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΎΠΊΠ½ΠΎ: <programlisting
>#include &lt;qapplication.h>
#include &lt;qpushbutton.h>

int main( int argc, char **argv )
{
QApplication a( argc, argv );

QPushButton hello( "Hello world!", 0 );
hello.resize( 100, 30 );

a.setMainWidget( &amp;hello );
hello.show();
return a.exec();
}
</programlisting>
</para>
<para
>ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ прорисовываСт ΠΎΠΊΠ½ΠΎ с ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ "Hello world". Для всСх Qt-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ сначала экзСмпляр класса <classname
>QApplication</classname
>, прСдставлСнного ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ a. </para>
<para
>Π”Π°Π»Π΅Π΅ создаётся экзСмпляр класса <classname
>QPushButton</classname
> ΠΈ ΠΈΠΌΠ΅Π½Π΅ΠΌ hello. Он прСдставляСт собой ΠΊΠ½ΠΎΠΏΠΊΡƒ. ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ hello ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ строку Π² Π²ΠΈΠ΄Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Π΅Ρ‘ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠ΅. </para>
<para
>ВызываСтся ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΊΠ½ΠΎΠΏΠΊΠΈ hello <methodname
>resize()</methodname
>. Он измСняСт Ρ€Π°Π·ΠΌΠ΅Ρ€ элСмСнта управлСния <classname
>QPushButton</classname
> - ΡˆΠΈΡ€ΠΈΠ½Π° 100 Ρ‚ΠΎΡ‡Π΅ΠΊ ΠΈ высота - 30. НаконСц, вызываСтся ΠΌΠ΅Ρ‚ΠΎΠ΄ setMainWidget() для ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ a ΠΈ show() для ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ hello. QApplication выполняСтся ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ <methodname
>a.exec()</methodname
>, запускаСтся Ρ†ΠΈΠΊΠ» опроса событий, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ повторяСтся Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° событиСм Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½ΠΎ Ρ†Π΅Π»ΠΎΠ΅ число, ΡΠΈΠ³Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰Π΅Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмС ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Π° прилоТСния Π·Π°ΠΊΠΎΠ½Ρ‡Π΅Π½Π°. </para>
</sect2>

<sect2 id="c2s1s2">
<title
>Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊ Qt</title>
<para
>Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ посмотрим Π½Π° ΡΠΏΡ€Π°Π²ΠΎΡ‡Π½ΡƒΡŽ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ Qt. ЗапуститС &tdevelop; ΠΈ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ "Qt" ΠΈΠ· Π΄Π΅Ρ€Π΅Π²Π°, располоТСнного Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ. Π—Π΄Π΅ΡΡŒ Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ всю Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ классах ΠΈ ΠΈΡ… ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Ρ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Qt. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, разбираСмая ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° показываСтся ΠΏΠ΅Ρ€Π²ΠΎΠΉ Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ обучСния. Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΉΡ‚ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ классах <classname
>QApplication</classname
> ΠΈ <classname
>QPushButton</classname
>, Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Ρ€Π°Π·Π΄Π΅Π» "Alphabetical Class List" ΠΈ Π½Π°ΠΉΠ΄ΠΈΡ‚Π΅ Π² спискС ΠΈΠΌΠ΅Π½Π° классов. НаТмитС Π½Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ ссылку для получСния ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ³ΠΎ описания класса. </para>
<para
>Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ ΠΏΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ Qt Π²Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΉΡ‚ΠΈ Π½Π° сайтС ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Trolltech Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ <ulink url="doc.trolltech.com"
>докумСнтация Qt</ulink
> (Π½Π° английском языкС) </para>
<para
><classname
>QApplication</classname
> ΠΈΠΌΠ΅Π΅Ρ‚ конструктор ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹. Если Π²Ρ‹ послСдуСтС Π·Π° ссылкой, Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ большС ΡƒΠ·Π½Π°Ρ‚ΡŒ ΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΈΠ· ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ². Π­Ρ‚ΠΎ остаётся Π²Π΅Ρ€Π½Ρ‹ΠΌ ΠΈ для Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΏΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ KDE, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π΅ΠΉ схоТий Ρ‚ΠΈΠΏ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ. </para>
<sect3 id="c2s1s2s1">
<title
>Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΡ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°</title>
<para
>НачинитС с <classname
>QApplication</classname
>, ΠΈ Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ всС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅: <itemizedlist>
<listitem
><para
>конструктор <methodname
>QApplication()</methodname
></para
></listitem>
<listitem
><para
>ΠΌΠ΅Ρ‚ΠΎΠ΄ <methodname
>setMainWidget()</methodname
></para
></listitem>
<listitem
><para
>ΠΌΠ΅Ρ‚ΠΎΠ΄ <methodname
>exec()</methodname
></para
></listitem>
</itemizedlist>
</para>
<para
>Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΡ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΎΡ‡Π΅Π½ΡŒ проста: <orderedlist>
<listitem
><para
>Π‘ΠΎΠ·Π΄Π°Ρ‘ΠΌ экзСмпляр класса <classname
>QApplication</classname
> с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ конструктора, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π½Π°ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ GUI-элСмСнты, прСдоставляСмыС Qt</para
></listitem>
<listitem
><para
>Π‘ΠΎΠ·Π΄Π°Ρ‘ΠΌ элСмСнт управлСния Π² ΠΎΠΊΠ½Π΅ прилоТСния</para
></listitem>
<listitem
><para
>Π”Π΅Π»Π°Π΅ΠΌ элСмСнт управлСния Π³Π»Π°Π²Π½Ρ‹ΠΌ для прилоТСния (пСрСмСнная 'a')</para
></listitem>
<listitem
><para
>ЗапускаСм экзСмпляр <classname
>QApplication</classname
></para
></listitem>
</orderedlist
> 
</para>
<para
>Π’Ρ‚ΠΎΡ€ΠΎΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ нашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ - ΠΊΠ½ΠΎΠΏΠΊΠ°, экзСмпляр  класса <classname
>QPushButton</classname
>. Из Π΄Π²ΡƒΡ… доступных конструкторов экзСмпляров этого класса ΠΌΡ‹ воспользовались Π²Ρ‚ΠΎΡ€Ρ‹ΠΌ: ΠΎΠ½ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π² Π²ΠΈΠ΄Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° строку тСкста, которая Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Π½Π° Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠ΅. Π—Π°Ρ‚Π΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ <methodname
>resize()</methodname
> ΠΌΡ‹ измСняСм Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΊΠ½ΠΎΠΏΠΊΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ вся строка Π±Ρ‹Π»Π° Π²ΠΈΠ΄Π½Π° Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠ΅. </para>
<para
>Π”Π°Π»Π΅Π΅ ΠΈΠ΄Ρ‘Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ <methodname
>show()</methodname
>. Но Π΅Π³ΠΎ Π½Π΅Ρ‚ Π² описании класса <classname
>QPushButton</classname
>. Π­Ρ‚ΠΎΡ‚ класс наслСдуСт ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ класса <classname
>QButton</classname
>, Π° Ρ‚ΠΎΡ‚, Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, наслСдуСт ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹  <classname
>QWidget</classname
>. Π­Ρ‚ΠΎΡ‚ класс содСрТит ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠ΅ количСство ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², Π² Ρ‚ΠΎΠΌ числС <methodname
>show()</methodname
>. Π˜Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ ΠΆΠ΅ дСлалось с ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ: <orderedlist>
<listitem
><para
>Π‘ΠΎΠ·Π΄Π°Ρ‘ΠΌ экзСмпляр класса <classname
>QPushButton</classname
>, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π²Ρ‚ΠΎΡ€ΠΎΠΉ конструктор для указания надписи Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠ΅</para
></listitem>
<listitem
><para
>ИзмСняСм Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΊΠ½ΠΎΠΏΠΊΠΈ</para
></listitem>
<listitem
><para
>Π”Π΅Π»Π°Π΅ΠΌ основным элСмСнтом управлСния для ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π°, экзСмпляра класса <classname
>QApplication</classname
></para
></listitem>
<listitem
><para
>Π’Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ <methodname
>show()</methodname
>, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΡŽ элСмСнта управлСния. Он наслСдуСтся ΠΎΡ‚ класса <classname
>QWidget</classname
></para
></listitem>
</orderedlist>
</para>
<para
>ПослС Π²Ρ‹Π·ΠΎΠ²Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π° <methodname
>exec()</methodname
>, ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ становится Π²ΠΈΠ΄ΠΈΠΌΡ‹ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ. Окно прилоТСния содСрТит ΠΊΠ½ΠΎΠΏΠΊΡƒ "Hello world!". ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: GUI-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π²Π΅Π΄ΡƒΡ‚ сСбя нСсколько ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ ΠΎΡ‚ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½Ρ‹Ρ…. Π“Π»Π°Π²Π½ΠΎΠ΅ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² Ρ‚.Π½. "Π³Π»Π°Π²Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» событий" ("main event loop"). Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚ дСйствий со стороны ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, ΠΈ Π²Ρ‹Π΄Π°Ρ‘Ρ‚ Π½Π° Π½ΠΈΡ… ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΡƒΡŽ Ρ€Π΅Π°ΠΊΡ†ΠΈΡŽ. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π°Π·Π΄Π΅Π» Ρ€Π°Π·ΡŠΡΡΠ½ΡΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ для программиста, ΠΈ ΠΊΠ°ΠΊ эти события ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π² Qt. </para>
<note
><para
>Для ΠΎΠΏΡ‹Ρ‚Π½Ρ‹Ρ…: ΠΊΠ½ΠΎΠΏΠΊΠ° Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ родитСля, это Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ это элСмСнт управлСния Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ уровня (top-level) ΠΈ выполняСтся Π² локальном Ρ†ΠΈΠΊΠ»Π΅ событий, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΆΠ΄Π°Ρ‚ΡŒ Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° событий. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ это объяснСно Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ класса QWidget ΠΈ The KDE Library Reference Guide</para>
</note
> 

</sect3>
</sect2>

<sect2 id="c2s1s3">
<title
>ВзаимодСйствиС с ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ</title>
<para
>ПослС прочтСния послСдних Ρ€Π°Π·Π΄Π΅Π»ΠΎΠ², Π²Ρ‹ ΡƒΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π·Π½Π°Ρ‚ΡŒ: <itemizedlist>
<listitem
><para
>Π§Ρ‚ΠΎ прСдоставляСт Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Qt Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Ρ… GUI-программирования</para
></listitem>
<listitem
><para
>Как создаётся ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π°Ρ Qt ΠΈ</para
></listitem>
<listitem
><para
>Π“Π΄Π΅ ΠΈ ΠΊΠ°ΠΊ Π½Π°ΠΉΡ‚ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ классах, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Π°ΠΌ Π½ΡƒΠΆΠ½Ρ‹</para
></listitem>
</itemizedlist
> 
</para>
<para
>Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΠΆΠΈΠ²ΠΈΠΌ Π½Π°ΡˆΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° событий. Π’ ΠΎΠ±Ρ‰Π΅ΠΌ, Π΅ΡΡ‚ΡŒ Π΄Π²Π° способа взаимодСйствия ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ с ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ - ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€ΠΎΠΉ ΠΈ ΠΌΡ‹ΡˆΡŒΡŽ. Π’ ΠΎΠ±ΠΎΠΈΡ… случаях графичСский интСрфСйс прСдоставляСт ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ рСгистрации Π½ΠΎΠ²Ρ‹Ρ… событий ΠΎΡ‚ этих устройств ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈΡ… ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. </para
> 
<para
>Оконная систСма посылаСт всС события ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌΡƒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ. <classname
>QApplication</classname
> пСрСсылаСт ΠΈΡ… Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΌΡƒ ΠΎΠΊΠ½Ρƒ Π² Π²ΠΈΠ΄Π΅ <classname
>QEvent</classname
> ΠΈ элСмСнты управлСния Π·Π°Ρ‚Π΅ΠΌ Ρ€Π΅ΡˆΠ°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ этом Π΄Π΅Π»Π°Ρ‚ΡŒ. Π‘ΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ элСмСнт управлСния ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ событиС ΠΈ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ <methodname
>QWidget::event (QEvent*)</methodname
>, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ опрСдСляСтся Ρ‚ΠΈΠΏ события ΠΈ выдаётся ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π°Ρ рСакция; <methodname
>event()</methodname
> - Π³Π»Π°Π²Π½Ρ‹ΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ событий. Он ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‘Ρ‚ событиС Ρ‚.Π½. Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°ΠΌ событий, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ ΠΈ Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ с этим событиСм. Если Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π° для Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° события Π½Π΅Ρ‚, Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ событий. Они Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹: <itemizedlist>
<listitem
><para
>Бобытия с ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ - Π½Π°ΠΆΠ°Ρ‚ΠΈΠ΅ клавиш TAB ΠΈ Shift-TAB:</para>
<itemizedlist>
<listitem
><para
><methodname
>virtual void focusInEvent(QFocusEvent *)</methodname
></para
></listitem>
<listitem
><para
><methodname
>virtual void focusOutEvent(QFocusEvent *)</methodname
></para
></listitem>
</itemizedlist>
</listitem>

<listitem
><para
>Π’Π΅ΡΡŒ ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠΉ Π²Π²ΠΎΠ΄ с ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹:</para>
<itemizedlist>
<listitem
><para
><methodname
>virtual void keyPressEvent(QKeyEvent *)</methodname
></para
></listitem>
<listitem
><para
><methodname
>virtual void keyReleaseEvent(QKeyEvent *)</methodname
></para
></listitem>
</itemizedlist>
</listitem>

<listitem
><para
>ДвиТСния курсора ΠΌΡ‹ΡˆΠΈ:</para>
<itemizedlist>
<listitem
><para
><methodname
>virtual void mouseMoveEvent(QMouseEvent *)</methodname
></para
></listitem>
<listitem
><para
><methodname
>virtual void enterEvent(QEvent *)</methodname
></para
></listitem>
<listitem
><para
><methodname
>virtual void leaveEvent(QEvent *)</methodname
></para
></listitem>
</itemizedlist>
</listitem>

<listitem
><para
>Π©Π΅Π»Ρ‡ΠΊΠΈ ΠΌΡ‹ΡˆΡŒΡŽ</para>
<itemizedlist>
<listitem
><para
><methodname
>virtual void mousePressEvent(QMouseEvent *)</methodname
></para
></listitem>
<listitem
><para
><methodname
>virtual void mouseReleaseEvent(QMouseEvent *)</methodname
></para
></listitem>
<listitem
><para
><methodname
>virtual void mouseDoubleClickEvent(QMouseEvent *)</methodname
></para
></listitem>
</itemizedlist>
</listitem>

<listitem
><para
>Бобытия с ΠΎΠΊΠ½ΠΎΠΌ, содСрТащим элСмСнт управлСния</para>
<itemizedlist>
<listitem
><para
><methodname
>virtual void moveEvent(QMoveEvent *)</methodname
></para
></listitem>
<listitem
><para
><methodname
>virtual void resizeEvent(QResizeEvent *)</methodname
></para
></listitem>
<listitem
><para
><methodname
>virtual void closeEvent(QCloseEvent *)</methodname
></para
></listitem>
</itemizedlist>
</listitem>

</itemizedlist>
</para>
<para
>ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ всС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ событий ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΈ Π·Π°Ρ‰ΠΈΡ‰Ρ‘Π½Π½Ρ‹ΠΌΠΈ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅Π½Π°Π·Π½Π°Ρ‡ΠΈΡ‚ΡŒ события, Π½ΡƒΠΆΠ½Ρ‹Π΅ Π²Π°ΠΌ, ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ свою Ρ€Π΅Π°ΠΊΡ†ΠΈΡŽ. <classname
>QWidget</classname
> Ρ‚Π°ΠΊΠΆΠ΅ содСрТит Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΈΠ³ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² Π²Π°ΡˆΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ…. Π’ любом случаС, класс <classname
>QWidget</classname
> Π½ΡƒΠΆΠ½ΠΎ ΡƒΠ·Π½Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡ΡˆΠ΅. </para>
</sect2>
<sect2 id="c1s2s4">
<title
>ВзаимодСйствиС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Ρ‡Π΅Ρ€Π΅Π· сигналы ΠΈ слоты</title>
<para
>Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ ΠΊ основному ΠΎΡ‚Π»ΠΈΡ‡ΠΈΡŽ Qt: ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡƒ сигнал/слот. Π­Ρ‚ΠΎ быстроС ΠΈ ΡƒΠ΄ΠΎΠ±Π½ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ взаимодСйствия ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Ρ€Π΅ΡˆΠ°Π΅Ρ‚ΡΡ посрСдством callback-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ…, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΡ… с X-Window. Π’Π°ΠΊ ΠΊΠ°ΠΊ Ρ‚Π°ΠΊΠΎΠ΅ взаимодСйствиС Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π°ΠΊΠΊΡƒΡ€Π°Ρ‚Π½ΠΎΠ³ΠΎ программирования ΠΈ ΠΈΠ½ΠΎΠ³Π΄Π° Π΄Π΅Π»Π°Π΅Ρ‚ созданиС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса ΠΎΡ‡Π΅Π½ΡŒ слоТным (Ρ‡Ρ‚ΠΎ описано Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΏΠΎ Qt ΠΈ объяснСно Π² ΠΊΠ½ΠΈΠ³Π΅ К.Π”Π°Π»ΡŒΡ…Π΅ΠΉΠΌΠ΅Ρ€Π° [K.Dalheimer] 'Programming with Qt'), Troll Tech ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Π»Π° Π½ΠΎΠ²ΡƒΡŽ систСму, Π³Π΄Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΡΡ‹Π»Π°Ρ‚ΡŒ сигналы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ²ΡΠ·Ρ‹Π²Π°Ρ‚ΡŒ с ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ, ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹ΠΌΠΈ ΠΊΠ°ΠΊ слоты. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡΡ‚Ρƒ Π½Π° C++ Π½ΡƒΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Π΅Ρ‰ΠΈ ΠΎ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ΅: <itemizedlist>
<listitem
><para
>объявлСниС класса, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π΅Π³ΠΎ сигналы/слот Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ макрос Q_OBJECT Π² Π½Π°Ρ‡Π°Π»Π΅ (Π±Π΅Π· Ρ‚ΠΎΡ‡ΠΊΠΈ с запятой); ΠΈ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ унаслСдовано ΠΎΡ‚ класса <classname
>QObject</classname
> </para
></listitem>
<listitem
><para
>сигнал ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ послан ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ словом emit (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, emit signal (ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹...)) ΠΈΠ· любого ΠΌΠ΅Ρ‚ΠΎΠ΄Π° класса, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰Π΅Π³ΠΎ сигналы/слоты </para
></listitem>

<listitem
><para
>всС сигналы, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠ΅ΡΡ Π½Π΅ наслСдуСмыми классами, Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Π² объявлСниС класса Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ signals </para
></listitem>
<listitem
><para
>всС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ связаны с сигналом, ΠΎΠ±ΡŠΡΠ²Π»ΡΡŽΡ‚ΡΡ Π² Ρ€Π°Π·Π΄Π΅Π»Π°Ρ… опрСдСлСния класса с Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ словом slot, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ public slots </para
></listitem>
<listitem
><para
>компилятор ΠΌΠ΅Ρ‚Π°ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² (moc, meta-object compiler) ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹, замСняя макросы Π½Π° Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ (это Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ). Π’Ρ‹Π²ΠΎΠ΄ moc пСрСдаётся компилятору C++. </para
></listitem>
</itemizedlist>
</para>
<para
>Π”Ρ€ΡƒΠ³ΠΎΠΉ способ использования сигналов Π±Π΅Π· наслСдования ΠΎΡ‚ класса  <classname
>QObject</classname
> - ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ класс <classname
>QSignal</classname
>: Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ свСдСния ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ использования Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΉΡ‚ΠΈ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ. Π”Π°Π»Π΅Π΅ подразумСваСтся, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ наслСдованиС ΠΎΡ‚ класса <classname
>QObject</classname
>. </para>
<para
>Π’ этом случаС ваш класс ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡΡ‹Π»Π°Ρ‚ΡŒ сигналы ΠΊΡƒΠ΄Π° ΡƒΠ³ΠΎΠ΄Π½ΠΎ ΠΈ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ слоты, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠ²ΡΠ·Ρ‹Π²Π°Ρ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ сигналы. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ сигналы, Π²Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π·Π°Π±ΠΎΡ‚ΠΈΡ‚ΡŒΡΡ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΡ‚ΠΎ ΠΈΡ… ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ - Π½ΡƒΠΆΠ½ΠΎ просто ΠΏΠΎΡΠ»Π°Ρ‚ΡŒ сигнал, Π° ΠΏΠΎΡ‚ΠΎΠΌ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ любой слот, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ ΠΏΡ€ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ сигнала. Π‘Π»ΠΎΡ‚Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π² Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. </para>
<para
>Π’Π΅ΠΏΠ΅Ρ€ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ сигнал со слотом,Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ΡΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ <methodname
>connect()</methodname
> класса <classname
>QObject</classname
> ΠΈΠ»ΠΈ, Ссли доступно, Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° для создания привязки ΠΊ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌΡƒ сигналу. </para>

<sect3 id="c1s2s4s1">
<title
>ΠŸΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎΠ΅ использованиС</title>
<para
>Π’ качСствС объяснСния взаимодСйствия ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ Π²ΠΎΠ·ΡŒΠΌΡ‘ΠΌ наш ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΈ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΠΌ Π΅Π³ΠΎ простой привязкой сигнала ΠΈ слота: <programlisting
>#include &lt;qapplication.h>
#include &lt;qpushbutton.h>

int main( int argc, char **argv )
{
QApplication a( argc, argv );

QPushButton hello( "Hello world!" , 0);
hello.resize( 100, 30 );

a.setMainWidget( &amp;hello );

QObject::connect(&amp;hello, SIGNAL( clicked() ), &amp;a, SLOT( quit() ));

hello.show();
return a.exec();
}
</programlisting>
</para>
<para
>Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, ΠΌΡ‹ лишь Ρ€Π°ΡΡˆΠΈΡ€ΠΈΠ»ΠΈ возмоТности ΠΊΠ½ΠΎΠΏΠΊΠΈ с использованиСм ΠΌΠ΅Ρ‚ΠΎΠ΄Π° <methodname
>connect()</methodname
>: <methodname
>connect(&amp;hello, SIGNAL( clicked() ), &amp;a, SLOT( quit() ))</methodname
> &mdash; всё, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ. Π§Ρ‚ΠΎ ΠΆΠ΅ это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚? ОбъявлСниС ΠΌΠ΅Ρ‚ΠΎΠ΄Π° <methodname
>connect()</methodname
> в классС QObject: </para>
<para
><methodname
>bool connect ( const QObject * sender, const char * signal, const QObject * receiver, const char * member ) </methodname
></para>
<para
>Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° экзСмпляр <classname
>QObject</classname
> являСтся ΠΈΠ½ΠΈΡ†ΠΈΠ°Ρ‚ΠΎΡ€ΠΎΠΌ сигнала, ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π΅. ΠžΡΡ‚Π°Π²ΡˆΠΈΠ΅ΡΡ Π΄Π²Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° Π΅ΡΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚-ΠΏΡ€ΠΈΡ‘ΠΌΠ½ΠΈΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠΌΠ΅Π΅Ρ‚ слот, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΈ имя Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ-слота, которая Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π° ΠΏΡ€ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠΈ сигнала. </para>
<para
>Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ сигналов ΠΈ слотов, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π²Π°ΡˆΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΌΠΎΠ³ΡƒΡ‚ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ с Π΄Ρ€ΡƒΠ³ΠΎΠΌ Π±Π΅Π· явной зависимости ΠΎΡ‚ Ρ‚ΠΈΠΏΠ° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°-ΠΏΡ€ΠΈΡ‘ΠΌΠ½ΠΈΠΊΠ°. Π”Π°Π»Π΅Π΅ Π² этом руководствС приводится Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ описаниС Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΌΠ΅Ρ…Π°Π½Π·ΠΈΠΌΠ° сигналов/слотов. КомС этого, ΠΎ Π½Ρ‘ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π² <ulink url="developer.kde.org/documentation/library/libraryref.html"
>The KDE Library Reference Guide</ulink
> ΠΈ <ulink url="doc.trolltech.com"
>Qt online reference</ulink
>. </para>
</sect3>
</sect2>
</sect1>

<sect1 id="c2s3">
<title
>Π§Ρ‚ΠΎ Π΄Π°Ρ‘Ρ‚ KDE</title>
<sect2 id="c2s3s1">
<title
>Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ KDE 3.x</title>
<para
>ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ KDE, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Π°ΠΌ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ понадобятся ΠΏΡ€ΠΈ написании KDE-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ: <itemizedlist>
<listitem
><para
>tdecore - всС классы с Π½Π΅ графичСскими элСмСнтами, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹ΠΌΠΈ для обСспСчСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ </para
></listitem>
<listitem
><para
>tdeui - элСмСнты ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ мСню, ΠΏΠ°Π½Π΅Π»ΠΈ инструмСнтов ΠΈ Ρ‚.Π΄. </para
></listitem>
<listitem
><para
>kfile - Π΄ΠΈΠ°Π»ΠΎΠ³ΠΈ Π²Ρ‹Π±ΠΎΡ€Π° Ρ„Π°ΠΉΠ»ΠΎΠ² </para
></listitem>
</itemizedlist>
</para>
<para
>Π’Π°ΠΊΠΆΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π²Π°ΠΌ понадобятся Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ: <itemizedlist>
<listitem
><para
>tdefx - растровыС изобраТСния, эффСкты Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ QStyle - KStyle </para
></listitem>
<listitem
><para
>khtml - ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ ΠΏΠΎΠΊΠ°Π·Π° HTML </para
></listitem>
<listitem
><para
>kjs - ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Javascript </para
></listitem>
<listitem
><para
>kio - Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹ΠΉ доступ ΠΊ сСтСвым Ρ„Π°ΠΉΠ»Π°ΠΌ </para
></listitem>
<listitem
><para
>kparts - ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° интСрфСйса ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² (ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ…, внСдряСмых ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ) </para
></listitem>
</itemizedlist>
</para>
<para
>Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΈΠ· нашСй ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° Qt KDE-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ. </para>
</sect2>
<sect2 id="c2s3s2">
<title
>ΠŸΡ€ΠΈΠΌΠ΅Ρ€ прилоТСния KDE</title>
<para
>Π’ дальнСйшСм Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ написаниС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΏΠΎΠ΄ KDE Π½ΠΈ капСльки Π½Π΅ Ρ‚Ρ€ΡƒΠ΄Π½Π΅Π΅ написания ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° Qt. Для использования возмоТностСй KDE, Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ классы. Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ обсудим измСнСния ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с вСрсиСй Π½Π° Qt: <programlisting
>#include &lt;kapplication.h>
#include &lt;qpushbutton.h>

int main( int argc, char **argv )
{
KApplication a( argc, argv );

QPushButton hello( "Hello world!", 0 );
hello.resize( 100, 30 );

a.setTopWidget( &amp;hello );

QObject::connect(&amp;hello, SIGNAL( clicked() ), &amp;a, SLOT( quit() ));

hello.show();
return a.exec();
}
</programlisting>
</para
> 
<para
>Π’Ρ‹ Π²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ помСняли класс <classname
>QApplication</classname
> Π½Π° <classname
>KApplication</classname
>. Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ использовали ΠΌΠ΅Ρ‚ΠΎΠ΄  <methodname
>setTopWidget</methodname
> вмСсто <methodname
>setMainWidget()</methodname
> для указания Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ элСмСнта управлСния для <classname
>KApplication</classname
>. Всё! Π’Π°ΡˆΠ΅ ΠΏΠ΅Ρ€Π²ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ KDE Π³ΠΎΡ‚ΠΎΠ²ΠΎ - ΠΎΡΡ‚Π°Π»ΠΎΡΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΏΡƒΡ‚ΡŒ ΠΊ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹ΠΌ Ρ„Π°ΠΉΠ»Π°ΠΌ KDE ΠΈ ΡΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ tdecore ΠΊΠ»ΡŽΡ‡ΠΎΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Ρ‰ΠΈΠΊΠ° -ltdecore. </para>
<para
>Если Π²Ρ‹ Π½Π΅ ΡΠΎΠ±ΠΈΡ€Π°Π΅Ρ‚Π΅ΡΡŒ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ простыС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π²Π°ΠΌ понадобится Π±ΠΎΠ»Π΅Π΅ удобная срСда написания ПО. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Π³Π»Π°Π²Π΅ Ρ€Π΅Ρ‡ΡŒ ΠΏΠΎΠΉΠ΄Ρ‘Ρ‚ ΠΎ &tdevelop;. </para>
<para
>Π˜Ρ‚Π°ΠΊ, ΠΊ этому Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Π²Ρ‹ ΡƒΠΆΠ΅ ΠΏΡ€ΠΎΡˆΠ»ΠΈΡΡŒ ΠΏΠΎ страницам справочной Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Qt, Π² Ρ‚.Ρ‡. ΠΏΠΎ классам <classname
>QApplication</classname
>, <classname
>QWidget</classname
> ΠΈ <classname
>QObject</classname
>, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ tdecore, классу <classname
>KApplication</classname
>. <ulink url="developer.kde.org/documentation/library/libraryref.html"
>KDE Library Reference handbook</ulink
> содСрТит ΠΏΠΎΠ»Π½ΠΎΠ΅ описаниС использования конструкторов <classname
>QApplication</classname
> ΠΈ <classname
>KApplication</classname
>, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки. </para>
</sect2>
</sect1>

</chapter>

<chapter id="chapter3">
<title
>Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½ΠΎΠ²Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ</title>

<sect1 id="c3s1">
<title
>ΠœΠ°ΡΡ‚Π΅Ρ€ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ</title>
<para
>ΠœΠ°ΡΡ‚Π΅Ρ€ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ (Application Wizard) ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°ΠΌ Π½Π°Ρ‡Π°Ρ‚ΡŒ, прСдоставив скСлСт-основаниС для Π²Π°ΡˆΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. Π’ зависимости ΠΎΡ‚ Ρ†Π΅Π»ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ шаблона: <itemizedlist>
<listitem
><para
>KDE Application Framework: ΠΏΠΎΠ»Π½Ρ‹ΠΉ каркас для ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ прилоТСния KDE </para
></listitem>
<listitem
><para
>QMake Project: структура ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ основываСтся Π½Π° систСмС сборки qmake Ρ„ΠΈΡ€ΠΌΡ‹ Trolltech </para
></listitem>
<listitem
><para
>Simple hello world program: консольная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π° C++ Π±Π΅Π· графичСского интСрфСйса </para
></listitem>
<listitem
><para
>ΠΈ Π½Π΅ΠΌΠ°Π»ΠΎΠ΅ количСство Π΄Ρ€ΡƒΠ³ΠΈΡ… шаблонов </para
></listitem>
</itemizedlist>
</para>
<para
>Π’ этой Π³Π»Π°Π²Π΅ ΠΌΡ‹ рассмотрим использованиС ΠœΠ°ΡΡ‚Π΅Ρ€Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ Π²ΠΎΠΎΠ±Ρ‰Π΅ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ дСйствия ΠΏΡ€ΠΈ создании ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° KDE. </para>
</sect1>

<sect1 id="c3s2">
<title
>ΠœΠ°ΡΡ‚Π΅Ρ€ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°</title>
<sect2 id="c3s2s1">
<title
>Запуск мастСра ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ пСрвая страница</title>
<para
>ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ &tdevelop;, Π² мСню "ΠŸΡ€ΠΎΠ΅ΠΊΡ‚" Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ "Новый ΠΏΡ€ΠΎΠ΅ΠΊΡ‚". Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Π²Π΅Ρ‚ΠΊΡƒ C++, KDE, Application Framework. </para>
<para
>Π’Ρ‹Π±Π΅Ρ€Π΅ΠΌ имя KScribble. <screenshot
><mediaobject
><imageobject>
<imagedata fileref="appwizard.png" format="PNG"/>
</imageobject
><textobject
><phrase
>ΠœΠ°ΡΡ‚Π΅Ρ€ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ</phrase
></textobject>
</mediaobject
></screenshot>
</para>
</sect2>
<sect2 id="c3s2s2">
<title
>БистСма контроля вСрсий</title>
<para
>Π”Π°Π»Π΅Π΅ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ систСму контроля вСрсий, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ CVS, ΠΈΠ»ΠΈ ΠΎΡ‚ΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ Π΅Ρ‘ использования. Π’ нашСм случаС - это послСднСС. </para>
</sect2>
<sect2 id="c3s2s3">
<title
>Π¨Π°Π±Π»ΠΎΠ½Ρ‹ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹Ρ… ΠΈ исходных Ρ„Π°ΠΉΠ»ΠΎΠ²</title>
<para
>ΠžΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ тСкст, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒΡΡ Π² Π½Π°Ρ‡Π°Π»ΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ вновь создаваСмого Ρ„Π°ΠΉΠ»Π°. Π—Π°Ρ‚Π΅ΠΌ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ "Π“ΠΎΡ‚ΠΎΠ²ΠΎ". Если ΠΎΠ½Π° Π½Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Π°, Π²Π΅Ρ€Π½ΠΈΡ‚Π΅ΡΡŒ ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹Ρ… Π²Π°ΠΌΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ². </para>
</sect2>
<sect2 id="c3s2s4">
<title
>ΠžΠΊΠΎΠ½Ρ‡Π°Π½ΠΈΠ΅</title>
<para
>ΠžΡ‚ΠΊΡ€ΠΎΠ΅Ρ‚ΡΡ ΠΎΠΊΠ½ΠΎ с сообщСниями, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ, послС ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ³ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ гСнСрирования Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΠΎΡΠ²ΠΈΡ‚ΡŒΡΡ надпись **** Success *****. </para>
</sect2>
</sect1>

<sect1 id="c3s3">
<title
>ΠŸΠ΅Ρ€Π²Π°Ρ сборка</title>
<para
>Π”Π°Π²Π°ΠΉΡ‚Π΅ пройдёмся ΠΏΠΎ Π²Ρ‹Π΄Π°Π½Π½ΠΎΠΌΡƒ мастСром ΠΊΠΎΠ΄Ρƒ для получСния ΠΎΠ±Ρ‰Π΅Π³ΠΎ прСдставлСния ΠΏΠΎ структурС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. </para>
<para
>Π”Π°Π»Π΅Π΅ прСдполагаСтся, Ρ‡Ρ‚ΠΎ Π²Ρ‹ освоились с Π±Π°Π·ΠΎΠ²ΠΎΠΉ Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠ΅ΠΉ &tdevelop;. Если это Π½Π΅ Ρ‚Π°ΠΊ, ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ΡΡŒ ΠΊ руководству KDevelop. </para>
<para
>ΠœΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ Automake ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ Ρ„Π°ΠΉΠ»Ρ‹ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°: <screenshot
><mediaobject
><imageobject>
<imagedata fileref="kscribblefiles.png" format="PNG"/>
</imageobject
><textobject
><phrase
>Π€Π°ΠΉΠ»Ρ‹ нашСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°</phrase
></textobject>
</mediaobject
></screenshot>
</para>
<para
>ΠŸΠ΅Ρ€Π΅Π΄ ΡƒΠ³Π»ΡƒΠ±Π»Π΅Π½ΠΈΠ΅ΠΌ Π² исходники, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠΌ сборку. Для этого Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ "Π‘ΠΎΠ±Ρ€Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚" ΠΈΠ· мСню "Π‘Π±ΠΎΡ€ΠΊΠ°", ΠΈΠ»ΠΈ просто Π½Π°ΠΆΠΌΠΈΡ‚Π΅ F8. Π’ появившСмся ΠΎΠΊΠ½Π΅ Π²Ρ‹Π²ΠΎΠ΄Π° Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ сообщСния сборщика <command
>make</command
>. <programlisting
>1 cd /home/caleb/kscribble &amp;&amp; WANT_AUTOCONF_2_5=1 WANT_AUTOMAKE_1_6=1 gmake k
2 gmake all-recursive
3 gmake[1]: Entering directory `/home/caleb/kscribble'
4 Making all in doc
5 gmake[2]: Entering directory `/home/caleb/kscribble/doc'
6 Making all in .
7 gmake[3]: Entering directory `/home/caleb/kscribble/doc'
8 gmake[3]: Nothing to be done for `all-am'.
9 gmake[3]: Leaving directory `/home/caleb/kscribble/doc'
10 Making all in en
11 gmake[3]: Entering directory `/home/caleb/kscribble/doc/en'
12 /usr/local/kde3/bin/meinproc --check --cache index.cache.bz2 /home/caleb/kscribble/doc/en/index.docbook
13 gmake[3]: Leaving directory `/home/caleb/kscribble/doc/en'
14 gmake[2]: Leaving directory `/home/caleb/kscribble/doc'
15 Making all in po
16 gmake[2]: Entering directory `/home/caleb/kscribble/po'
17 gmake[2]: Nothing to be done for `all'.
18 gmake[2]: Leaving directory `/home/caleb/kscribble/po'
19 Making all in src
20 gmake[2]: Entering directory `/home/caleb/kscribble/src'
21 source='main.cpp' object='main.o' libtool=no \
22 depfile='.deps/main.Po' tmpdepfile='.deps/main.TPo' \
23 depmode=gcc3 /bin/sh /home/caleb/kscribble/admin/depcomp \
24 g++ -DHAVE_CONFIG_H -I. -I/home/caleb/kscribble/src -I.. -I/usr/local/kde3/include 
   -I/usr/lib/qt/include -I/usr/X11R6/include -DQT_THREAD_SUPPORT -D_REENTRANT -Wnon-virtual-dtor 
   -Wno-long-long -Wundef -Wall -pedantic -W -Wpointer-arith -Wmissing-prototypes -Wwrite-strings 
   -ansi -D_XOPEN_SOURCE=500 -D_BSD_SOURCE -Wcast-align -Wconversion -O2 -fno-exceptions -fno-check-new 
   -c -o main.o `test -f 'main.cpp' || echo '/home/caleb/kscribble/src/'`main.cpp
25 /usr/lib/qt/bin/moc /home/caleb/kscribble/src/kscribble.h -o kscribble.moc
26 source='kscribble.cpp' object='kscribble.o' libtool=no \
27 depfile='.deps/kscribble.Po' tmpdepfile='.deps/kscribble.TPo' \
28 depmode=gcc3 /bin/sh /home/caleb/kscribble/admin/depcomp \
29 g++ -DHAVE_CONFIG_H -I. -I/home/caleb/kscribble/src -I.. -I/usr/local/kde3/include 
   -I/usr/lib/qt/include -I/usr/X11R6/include -DQT_THREAD_SUPPORT -D_REENTRANT -Wnon-virtual-dtor 
   -Wno-long-long -Wundef -Wall -pedantic -W -Wpointer-arith -Wmissing-prototypes -Wwrite-strings 
   -ansi -D_XOPEN_SOURCE=500 -D_BSD_SOURCE -Wcast-align -Wconversion -O2 -fno-exceptions -fno-check-new 
   -c -o kscribble.o `test -f 'kscribble.cpp' || echo '/home/caleb/kscribble/src/'`kscribble.cpp
30 kscribble.cpp: In member function `void KScribble::setupActions()'
31 kscribble.cpp:107: warning: unused variable `KAction*custom'
32 /usr/lib/qt/bin/moc /home/caleb/kscribble/src/kscribbleview.h -o kscribbleview.moc
33 source='kscribbleview.cpp' object='kscribbleview.o' libtool=no \
34 depfile='.deps/kscribbleview.Po' tmpdepfile='.deps/kscribbleview.TPo' \
35 depmode=gcc3 /bin/sh /home/caleb/kscribble/admin/depcomp \
36 g++ -DHAVE_CONFIG_H -I. -I/home/caleb/kscribble/src -I.. -I/usr/local/kde3/include 
   -I/usr/lib/qt/include -I/usr/X11R6/include -DQT_THREAD_SUPPORT -D_REENTRANT -Wnon-virtual-dtor 
   -Wno-long-long -Wundef -Wall -pedantic -W -Wpointer-arith -Wmissing-prototypes -Wwrite-strings -ansi 
   -D_XOPEN_SOURCE=500 -D_BSD_SOURCE -Wcast-align -Wconversion -O2 -fno-exceptions -fno-check-new -c 
   -o kscribbleview.o `test -f 'kscribbleview.cpp' || echo '/home/caleb/kscribble/src/'`kscribbleview.cpp
37 kscribbleview.cpp: In member function `void KScribbleView::print(QPainter*,
38  int, int)':
39 kscribbleview.cpp:79: warning: unused parameter `QPainter*p'
40 kscribbleview.cpp:79: warning: unused parameter `int height'
41 kscribbleview.cpp:79: warning: unused parameter `int width'
42 /usr/lib/qt/bin/moc /home/caleb/kscribble/src/pref.h -o pref.moc
43 source='pref.cpp' object='pref.o' libtool=no \
44 depfile='.deps/pref.Po' tmpdepfile='.deps/pref.TPo' \
45 depmode=gcc3 /bin/sh /home/caleb/kscribble/admin/depcomp \
46 g++ -DHAVE_CONFIG_H -I. -I/home/caleb/kscribble/src -I.. -I/usr/local/kde3/include 
   -I/usr/lib/qt/include -I/usr/X11R6/include -DQT_THREAD_SUPPORT -D_REENTRANT -Wnon-virtual-dtor 
   -Wno-long-long -Wundef -Wall -pedantic -W -Wpointer-arith -Wmissing-prototypes -Wwrite-strings 
   -ansi -D_XOPEN_SOURCE=500 -D_BSD_SOURCE -Wcast-align -Wconversion -O2 -fno-exceptions -fno-check-new 
   -c -o pref.o `test -f 'pref.cpp' || echo '/home/caleb/kscribble/src/'`pref.cpp
47 /usr/local/kde3/bin/dcopidl /home/caleb/kscribble/src/kscribbleiface.h 
> kscribbleiface.kidl || 
   ( rm -f kscribbleiface.kidl ; /bin/false )
48 /usr/local/kde3/bin/dcopidl2cpp --c++-suffix cpp --no-signals --no-stub kscribbleiface.kidl
49 source='kscribbleiface_skel.cpp' object='kscribbleiface_skel.o' libtool=no \
50 depfile='.deps/kscribbleiface_skel.Po' tmpdepfile='.deps/kscribbleiface_skel.TPo' \
51 depmode=gcc3 /bin/sh /home/caleb/kscribble/admin/depcomp \
52 g++ -DHAVE_CONFIG_H -I. -I/home/caleb/kscribble/src -I.. -I/usr/local/kde3/include 
   -I/usr/lib/qt/include -I/usr/X11R6/include -DQT_THREAD_SUPPORT -D_REENTRANT -Wnon-virtual-dtor 
   -Wno-long-long -Wundef -Wall -pedantic -W -Wpointer-arith -Wmissing-prototypes -Wwrite-strings 
   -ansi -D_XOPEN_SOURCE=500 -D_BSD_SOURCE -Wcast-align -Wconversion -O2 -fno-exceptions -fno-check-new 
   -c -o kscribbleiface_skel.o `test -f 'kscribbleiface_skel.cpp' || 
   echo '/home/caleb/kscribble/src/'`kscribbleiface_skel.cpp
53 /bin/sh ../libtool --silent --mode=link --tag=CXX g++ -Wnon-virtual-dtor -Wno-long-long -Wundef -Wall 
   -pedantic -W -Wpointer-arith -Wmissing-prototypes -Wwrite-strings -ansi -D_XOPEN_SOURCE=500 
   -D_BSD_SOURCE -Wcast-align -Wconversion -O2 -fno-exceptions -fno-check-new -o kscribble -R 
   /usr/local/kde3/lib -R /usr/lib/qt/lib -R /usr/X11R6/lib -L/usr/X11R6/lib -L/usr/lib/qt/lib 
   -L/usr/local/kde3/lib main.o kscribble.o kscribbleview.o pref.o kscribbleiface_skel.o -lkio 
54 source='kscribble_client.cpp' object='kscribble_client.o' libtool=no \
55 depfile='.deps/kscribble_client.Po' tmpdepfile='.deps/kscribble_client.TPo' \
56 depmode=gcc3 /bin/sh /home/caleb/kscribble/admin/depcomp \
57 g++ -DHAVE_CONFIG_H -I. -I/home/caleb/kscribble/src -I.. -I/usr/local/kde3/include 
   -I/usr/lib/qt/include -I/usr/X11R6/include -DQT_THREAD_SUPPORT -D_REENTRANT -Wnon-virtual-dtor 
   -Wno-long-long -Wundef -Wall -pedantic -W -Wpointer-arith -Wmissing-prototypes -Wwrite-strings 
   -ansi -D_XOPEN_SOURCE=500 -D_BSD_SOURCE -Wcast-align -Wconversion -O2 -fno-exceptions -fno-check-new 
   -c -o kscribble_client.o `test -f 'kscribble_client.cpp' || echo 
   '/home/caleb/kscribble/src/'`kscribble_client.cpp
58 /bin/sh ../libtool --silent --mode=link --tag=CXX g++ -Wnon-virtual-dtor -Wno-long-long -Wundef 
   -Wall -pedantic -W -Wpointer-arith -Wmissing-prototypes -Wwrite-strings -ansi -D_XOPEN_SOURCE=500 
   -D_BSD_SOURCE -Wcast-align -Wconversion -O2 -fno-exceptions -fno-check-new -o kscribble_client -R 
   /usr/local/kde3/lib -R /usr/lib/qt/lib -R /usr/X11R6/lib -L/usr/X11R6/lib -L/usr/lib/qt/lib 
   -L/usr/local/kde3/lib kscribble_client.o -ltdecore 
59 gmake[2]: Leaving directory `/home/caleb/kscribble/src'
60 gmake[2]: Entering directory `/home/caleb/kscribble'
61 gmake[2]: Nothing to be done for `all-am'.
62 gmake[2]: Leaving directory `/home/caleb/kscribble'
63 gmake[1]: Leaving directory `/home/caleb/kscribble'
64 *** Success ***
</programlisting>
</para>
<para
>ΠœΡ‹ ΠΏΡ€ΠΎΠ½ΡƒΠΌΠ΅Ρ€ΠΎΠ²Π°Π»ΠΈ строки для простоты ΠΈΡ… описания. ΠŸΡ€Π΅ΠΆΠ΄Π΅ всСго, <command
>gmake</command
> Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ рСкурсивно. Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ сначала ΠΎΠ½ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ самый Π³Π»ΡƒΠ±ΠΎΠΊΠΎΠ²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³, ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ Π΅Π³ΠΎ, Π·Π°Ρ‚Π΅ΠΌ подымаСтся Π½Π° ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Π²Ρ‹ΡˆΠ΅, ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ этот ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅ Π΄ΠΎ самого Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ. </para>
<para
>ΠŸΠ΅Ρ€Π²Π°Ρ, ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‰Π°Ρ нас строка - 24. Π’ Π½Π΅ΠΉ <command
>make</command
> обращаСтся ΠΊ GNU C++ компилятору <command
>g++</command
> для компиляции Ρ„Π°ΠΉΠ»Π° main.cpp. ΠŸΡ€ΠΈ этом ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ количСство Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠ»ΡŽΡ‡Π΅ΠΉ, ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· &tdevelop;. </para>
<para
>ΠŸΠ΅Ρ€Π΅Π΄ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ Ρ„Π°ΠΉΠ»Π° (kscribble.cpp, строка 29) вызываСтся ΠΊΠΎΠΌΠ°Π½Π΄Π° <command
>moc</command
> (meta object compiler, компилятор ΠΌΠ΅Ρ‚Π°-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²) для kscribble.h (строка 25). Π­Ρ‚ΠΎ ΠΈΠ·-Π·Π° Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ классы KScribble ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ сигналов/слотов. Она подставляСт вмСсто макроса Q_OBJECT Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄. ΠŸΠΎΠ»ΡƒΡ‡ΠΈΠ²ΡˆΠΈΠΉΡΡ Ρ„Π°ΠΉΠ», kscribble.moc, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ kscribble.cpp Ρ‡Π΅Ρ€Π΅Π· #include. </para>
</sect1>

<sect1 id="c3s4">
<title
>Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ исходный ΠΊΠΎΠ΄</title>
<para
>Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ Ρ€Π°Π±ΠΎΡ‚Ρ‹ KDE-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π΄Π°Π²Π°ΠΉΡ‚Π΅ сначала ΠΏΠΎΠ±Π»ΠΈΠΆΠ΅ рассмотрим исходный ΠΊΠΎΠ΄, прСдоставлСнный ΠœΠ°ΡΡ‚Π΅Ρ€ΠΎΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π Π°Π·Π±Π΅Ρ€Ρ‘ΠΌ ΠΊΠΎΠ΄ (ΠΏΠΎΡ‡Ρ‚ΠΈ) построчно, Π² Ρ‚ΠΎΠΌ порядкС, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠ½ выполняСтся, Π΄ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°, ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π²ΠΎΠΉΠ΄Ρ‘Ρ‚ Π² Π³Π»Π°Π²Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» событий ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΆΠΈΠ΄Π°Ρ‚ΡŒ дСйствий ΠΎΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. Π’.ΠΊ. Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ KDE ΠΈΠΌΠ΅ΡŽΡ‚ ΠΏΠΎΡ…ΠΎΠΆΡƒΡŽ структуру, это ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°ΠΌ Π»Π΅Π³Ρ‡Π΅ ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² ΠΊΠΎΠ΄Π΅ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ (Π±Π»Π°Π³ΠΎ, сС ΠΎΠ½ΠΈ Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡŽΡ‚ΡΡ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ). </para>

<sect2 id="c3s4s1">
<title
>Ѐункция main()</title>
<para
>Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ начинаСтся с Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ <function
>main()</function
>. Она прописана Π² Ρ„Π°ΠΉΠ»Π΅ main.cpp, Π΅Ρ‘ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Ρ‡Π΅Ρ€Π΅Π· "ΠžΠ±Π·ΠΎΡ€ классов", Π² Π²Π΅Ρ‚ΠΊΠ΅ "Π“Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ". <programlisting
>1  int main(int argc, char **argv)
2  {
3      KAboutData about("kscribble", I18N_NOOP("KScribble"), version, description,
4                       KAboutData::License_GPL, "(C) 2002 Your Name", 0, 0, "you@you.com");
5      about.addAuthor( "Your Name", 0, "you@you.com" );
6      KCmdLineArgs::init(argc, argv, &amp;about);
7      KCmdLineArgs::addCmdLineOptions(options);
8      KApplication app;
9  
10    // register ourselves as a dcop client
11    app.dcopClient()->registerAs(app.name(), false);
12 
13    // see if we are starting with session management
14    if (app.isRestored())
15        RESTORE(KScribble)
16    else
17    {
18        // no session.. just start up normally
19        KCmdLineArgs *args = KCmdLineArgs::parsedArgs();
20        if (args->count() == 0)
21        {
22            KScribble *widget = new KScribble;
23            widget->show();
24        }
25        else
26        {
27            int i = 0;
28            for (; i &lt; args->count(); i++)
29            {
30                KScribble *widget = new KScribble;
31                widget->show();
32                widget->load(args->url(i));
33            }
34        }
35        args->clear();
36    }
37
38    return app.exec();
39 }
</programlisting>
</para
> 
<para
>Π’ Π½Π΅ΠΉ создаётся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ <classname
>KApplication</classname
>, Π½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄ этим Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ΡΡ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ KDE, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΈ Π°Π²Ρ‚ΠΎΡ€Π΅. </para>
</sect2>
<sect2>
<title
>Запуск ΠΏΠΎΠ»ΡŒΠ·Π²Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ прилоТСния</title>

<para
>... (Π·Π°Π±Ρ‹Π»ΠΈ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ)</para>

</sect2>
<sect2>
<title
>ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€</title>
<para
>Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим Π½Π° использованиС конструктора <programlisting
>1  KScribble::KScribble()
2      : KMainWindow( 0, "KScribble" ),
3        m_view(new KScribbleView(this)),
4        m_printer(0)
5  {
6      // accept dnd
7      setAcceptDrops(true);
8  
9      // tell the KMainWindow that this is indeed the main widget
10     setCentralWidget(m_view);
11 
12     // then, setup our actions
13     setupActions();
14 
15     // and a status bar
16     statusBar()->show();
17 
18     // allow the view to change the statusbar and caption
19     connect(m_view, SIGNAL(signalChangeStatusbar(const QString&amp;)),
20             this,   SLOT(changeStatusbar(const QString&amp;)));
21     connect(m_view, SIGNAL(signalChangeCaption(const QString&amp;)),
22             this,   SLOT(changeCaption(const QString&amp;)));
23
24  }
</programlisting>
</para>
<para
><classname
>KScribble</classname
> наслСдуСт класс <classname
>KMainWindow</classname
> - Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ класс KDE-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. Класс <classname
>KScribbleView</classname
> инициализируСтся ΠΊΠ°ΠΊ Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½Ρ‹ΠΉ элСмСнт управлСния, <classname
>KStatusBar</classname
> создаётся ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ <methodname
>statusBar()</methodname
> (строка 16), Π·Π°Ρ‚Π΅ΠΌ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ сигналы ΡΠΎΠ΅Π΄ΠΈΠ½ΡΡŽΡ‚ΡΡ со слотами. </para>
</sect2>
</sect1>
</chapter>


<chapter id="chapter4">
<title
>Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ прСдставлСния</title>
<sect1 id="c4s1">
<title
>Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅</title>
<para
>ΠŸΡ€ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ (с графичСским интСрфСйсом), большая Ρ‡Π°ΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Ρ‚.Π½. "прСдставлСния" ("view", Π΄ΠΈΠ·Π°ΠΉΠ½Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса) НуТно ΡƒΠΌΠ΅Ρ‚ΡŒ эргономично Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒ элСмСнты управлСния Π² ΠΎΠΊΠ½Π°Ρ… ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°Ρ…, Π½Π΅ Π·Π»ΠΎΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π»ΡΡ‚ΡŒ, Π½ΠΎ ΠΈ Π½Π΅ ΠΏΡ€Π΅Π½Π΅Π±Ρ€Π΅Π³Π°Ρ‚ΡŒ Π½ΠΈΠΌΠΈ. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ свою ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‡Π΅Ρ€Π΅Π· элСмСнты управлСния, соСдинённыС со слотами, Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ‡Π΅Ρ€Π΅Π· ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρƒ - рСагируя Π½Π° наТатия ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Ρ… (ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΉ) клавиш. ПанСль состояния ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° для отобраТСния Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ (Π½Π΅ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½ΠΎΠΉ) ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΎ состоянии прилоТСния, ΠΈΠ»ΠΈ ΠΎ свойствах ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠ³ΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°. Рассмотрим конструированиС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π°. </para>
<para
>Π Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ - это ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, прСдназначСнная для просмотра ΠΈ/ΠΈΠ»ΠΈ рСдактирования содСрТимого тСкстовых Ρ„Π°ΠΉΠ»ΠΎΠ². Если Π²Ρ‹ запуститС Kate, Ρ‚ΠΎ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ элСмСнты интСрфСйса: <itemizedlist>
<listitem
><para
>МСню: комплСксныС (Π² Ρ‚.Ρ‡. Π½Π΅ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΠΌΡ‹Π΅) дСйствия, ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅, сохранСниС ΠΈ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ Ρ‚.Π΄. </para
></listitem>
<listitem
><para
>ПанСль инструмСнтов: Π½Π°Π±ΠΎΡ€ Π·Π½Π°Ρ‡ΠΊΠΎΠ², ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… быстрый доступ ΠΊ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΌ дСйствиям (Ρ‚Π°ΠΊΠΎΠ²Ρ‹Π΅, ΠΏΡ€ΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠΈ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ), </para
></listitem>
<listitem
><para
>ПанСль состояния: позиция курсора, вставка/Π·Π°ΠΌΠ΅Π½Π°, </para
></listitem>
<listitem
><para
>ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΠ΅, ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‰Π΅Π΅ содСрТаниС Ρ„Π°ΠΉΠ»Π°, содСрТащСС курсор, управляСмый с ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹, для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ. </para
></listitem>
</itemizedlist>
</para>
<para
>ПослСдняя являСтся Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠΉ Ρ‡Π°ΡΡ‚ΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ Π΅Ρ‘ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ опрСдСляСт простоту использования ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ("usability"). Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΡ… ΠΏΠ΅Ρ€Π²Ρ‹Ρ… шагов ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π·Π°Π΄Π°Ρ‡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ ΠΊΠ°ΠΊΠΎΠΉ Π΄ΠΈΠ·Π°ΠΉΠ½ ΠΏΠΎΠ΄ΠΎΠΉΠ΄Ρ‘Ρ‚ Π»ΡƒΡ‡ΡˆΠ΅, Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π° ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΈ, самоС Π³Π»Π°Π²Π½ΠΎΠ΅, Π½Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ с ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ, Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΎΡΡŒ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ мСньшС Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. </para>
<para
>Для Ρ‚Π°ΠΊΠΈΡ… Π·Π°Π΄Π°Ρ‡ ΠΊΠ°ΠΊ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ тСкста ΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ HTML, Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Qt ΠΈ KDE ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ ΡƒΠΆΠ΅ Π³ΠΎΡ‚ΠΎΠ²Ρ‹Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ, "прСдставлСния", ΠΏΠΎ сути - высокоуровнСвыС элСмСнты управлСния. Но для Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, всё ΠΆΠ΅ придётся Π΄Π΅Π»Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ элСмСнты управлСния. Π’ΠΎΡ‚ Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΈΠ· программиста Π΄ΠΈΠ·Π°ΠΉΠ½Π΅Ρ€Π° ΠΈ Π³Π΄Π΅ становится вострСбованной Π²Π΅Ρ‰ΡŒ, называСмая ΠΌΠΎΠ΄Π½Ρ‹ΠΌ словом "ΠΊΡ€Π΅Π°Ρ‚ΠΈΠ²", ΠΈΠ»ΠΈ попросту творчСство. Π’ΡƒΡ‚, ΠΏΡ€Π΅ΠΆΠ΄Π΅ всСго, Π³Π»Π°Π²Π½ΠΎΠ΅ ΠΈΠ½Ρ‚ΡƒΠΈΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ. ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ людСй Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, которая Π½Π΅: <itemizedlist>
<listitem
><para
>красивая </para
></listitem>
<listitem
><para
>ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ большоС количСство возмоТностСй </para
></listitem>
<listitem
><para
>простая Π² использовании </para
></listitem>
<listitem
><para
>быстрая Π² ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠΈ </para
></listitem>
</itemizedlist>
</para>
<para
>Излишним Π±ΡƒΠ΄Π΅Ρ‚ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ - самая главная Ρ†Π΅Π»ΡŒ. Никто Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ 100% ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ошибок ("bugs"), Π½ΠΎ Ρ€Π°Π·ΡƒΠΌΠ½ΠΎΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ позволяСт Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ количСство Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… Π½Π΅Π΄ΠΎΡ€Π°Π±ΠΎΡ‚ΠΎΠΊ. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° C++, Ссли Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅ ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π»ΡƒΡ‡ΡˆΠΈΠ΅ стороны - Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, скрытиС ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ (ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ) ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ΅ использованиС ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, бСзусловно принСсёт Π²Π°ΠΌ успСх. </para>
<para
>ΠŸΡ€ΠΈ создании ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° KDE ΠΈΠ»ΠΈ Qt, Π΅Π³ΠΎ прСдставлСниС (view) всСгда наслСдуСт QWidget, Π»ΠΈΠ±ΠΎ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ, Π»ΠΈΠ±ΠΎ Ρ‡Π΅Ρ€Π΅Π· Π΄Ρ€ΡƒΠ³ΠΈΠ΅ элСмСнты управлСния Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ. ΠœΠ°ΡΡ‚Π΅Ρ€ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Ρ‚Π°ΠΊΠΆΠ΅ создёт ΠΊΠΎΠ΄, содСрТащий класс yourappView, Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ QWidget. </para>
<para
>Π’ этой Π³Π»Π°Π²Π΅ ΠΌΡ‹ опишСм ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ элСмСнты управлСния Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ для создания новыхпрСдставлСний, ΠΏΠΎΡ‚ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Π·ΠΎΡ€ Π³ΠΎΡ‚ΠΎΠ²Ρ‹Ρ… прСдставлСний, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ½ΠΈ ΡƒΠΆΠ΅ содСрТат. </para>
</sect1>
<sect1 id="c4s2">
<title
>ИспользованиС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½Ρ‹Ρ… прСдставлСний</title>
<para
>ПослС проСктирования вашСго прилоТСния, просмотритС ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄. Π’ Ρ‚.Ρ‡. Π½Π°ΠΉΠ΄ΠΈΡ‚Π΅ элСмСнт управлСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ прСдставлСниС, ΠΈΠ»ΠΈ хотябы ΠΊΠ°ΠΊ Π΅Π³ΠΎ Ρ‡Π°ΡΡ‚ΡŒ, Π»ΠΈΠ±ΠΎ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ, Π»ΠΈΠ±ΠΎ наслСдованиСм. Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ KDE ΠΈ Qt ΡƒΠΆΠ΅ содСрТат Π½Π°Π±ΠΎΡ€ элСмСнтов управлСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ. Π•ΡΡ‚ΡŒ Π΄Π²Π° способа этого: <orderedlist>
<listitem
><para
>Π£Π΄Π°Π»ΠΈΡ‚ΡŒ класс Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ прСдставлСния ΠΈ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ экзСмпляр Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½ΠΎΠ³ΠΎ элСмСнта управлСния, Π·Π°Ρ‚Π΅ΠΌ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΊΠ°ΠΊ прСдставлСниС, </para
></listitem>
<listitem
><para
>Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ наслСдованиС Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ класса прСдставлСния. </para
></listitem>
</orderedlist>
</para>
<para
>Π’ любом случаС, Π½Π΅ Π·Π°Π±ΡƒΠ΄ΡŒΡ‚Π΅ ΡΠ²ΡΠ·Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ с Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ с элСмСнтом управлСния, ΠΈΠ½Π°Ρ‡Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Ρ‰ΠΈΠΊ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π΄Π°Π²Π°Ρ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΊΡƒ. ΠŸΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π² "ΠŸΡ€ΠΎΠ΅ΠΊΡ‚"->"ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹", Π²ΠΊΠ»Π°Π΄ΠΊΠ° "ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Ρ‰ΠΈΠΊΠ°" Π² &tdevelop;. Если Π² спискС Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ этой Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, Π΄ΠΎΠΏΠΈΡˆΠΈΡ‚Π΅ Π΅Ρ‘ сюда. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ список Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π½Π°ΠΉΠ΄Π΅Π½Ρ‹ сцСнариСм <command
>configure</command
>, Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ макрос Π² <filename
>configure.in</filename
> ΠΈΠ· ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠ³ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° вашСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. ПослС этого, Π½Π΅ Π·Π°Π±ΡƒΠ΄ΡŒΡ‚Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ "Π‘Π±ΠΎΡ€ΠΊΠ°"->"Autoconf ΠΈ automake" ΠΈ "Π‘Π±ΠΎΡ€ΠΊΠ°"->"Configure". </para>
<para
>Π’Π°ΠΊΠΆΠ΅, Ссли Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ находятся Π½Π΅ Π² стандартном ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ (это ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠΏΠΎ ΠΊΠ»ΡŽΡ‡Π°ΠΌ -I ΠΎΠΊΠ½Π° Π²Ρ‹Π²ΠΎΠ΄Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ "Make"), Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ "ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ компиляции" настроСк ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π½ΡƒΠΆΠ½Ρ‹ΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ с ΠΊΠ»ΡŽΡ‡Ρ‘ΠΌ -I ΠΈΠ»ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ макросом automake Π² ΠΏΠΎΠ»Π΅ "Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹". </para>
<sect2 id="c4s3s1">
<title
>ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΡ Qt</title>
<para
>На ΠΏΠ΅Ρ€Π²ΠΎΠΉ страницС Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Qt Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΉΡ‚ΠΈ ссылку Π½Π° "Widget Screenshots", Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Π½ΡƒΠΆΠ½Ρ‹ΠΉ. Они ΡƒΠΆΠ΅ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ ΠΊ использованию, ΠΈ ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ²ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ. Π”Π°Π»Π΅Π΅, ΠΌΡ‹ обсудим Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· Π½ΠΈΡ…, Π½ΠΎ ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ KDE ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ свои (Π΄ΠΎΡ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Π΅) элСмСнты управлСния, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Π΅ для Ρ‚Π΅Ρ… ΠΆΠ΅ Π·Π°Π΄Π°Ρ‡. </para>
<para
>Π’ΠΎΡ‚ нСсколько ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Qt ΠΈ ΠΈΡ… назначСния: <orderedlist>
<listitem
><para
>Если Π² области вашСго прСдставлСния Π½Π΅ Ρ…Π²Π°Ρ‚Π°Π΅Ρ‚ свободного мСста, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒΡΡ ΠΏΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρƒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ полос ΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‚ΠΊΠΈ. Для этого, Π² Qt Π΅ΡΡ‚ΡŒ класс <classname
>QScrollView</classname
>. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ свой элСмСнт управлСния наслСдником <classname
>QScrollView</classname
> ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ экзСмпляр для управлСния прСдставлСниСм. </para
></listitem
> 
<listitem
><para
>Для создания ScrollView, унаслСдуйтС Π²ΠΈΠ΄ΠΆΠ΅Ρ‚-прСдставлСниС ΠΎΡ‚ <classname
>QWidget</classname
> ΠΈ ΠΈ Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΈ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½Ρ‹Π΅ полосы ΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‚ΠΊΠΈ <classname
>QScrollBars </classname
> (Ρ‚Π°ΠΊ дСлаСтся Π² KHTMLView). </para
></listitem
> 
<listitem
><para
>Для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ тСкста, ΠΏΠ²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ΡΡŒ <classname
>QTextEdit</classname
>. Π­Ρ‚ΠΎΡ‚ класс прСдоставляСт Π·Π°ΠΊΠΎΠ½Ρ‡Π΅Π½Π½Ρ‹ΠΉ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ тСкстового Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с Π±ΡƒΡ„Π΅Ρ€ΠΎΠΌ ΠΎΠ±ΠΌΠ΅Π½Π°, Π° Ρ‚Π°ΠΊΠΆΠ΅ управляСтся полосами ΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‚ΠΊΠΈ scrollview. </para
></listitem
> 
<listitem
><para
>Π’ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ΡΡŒ <classname
>QTable</classname
> для отобраТСния Π΄Π°Π½Π½Ρ‹Ρ…, ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ. <classname
>QTable</classname
> Ρ‚Π°ΠΊΠΆΠ΅ управляСтся полосами ΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‚ΠΊΠΈ. </para
></listitem
> 
<listitem
><para
>Для отобраТСния Π΄Π²ΡƒΡ… Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΎΠ² ΠΈΠ»ΠΈ Π΄Π²ΡƒΡ… экзСмпляров ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π° ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ, Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ΡΡŒ <classname
>QSplitter </classname
>. Он позволяСт Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ прСдставлСния Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΠΎ ΠΈΠ»ΠΈ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎ. Π•Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ KMail ΠΈ KBabel. </para
></listitem
> 
<listitem
><para
><classname
>QListView</classname
> ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅ Π² Π²ΠΈΠ΄Π΅ списка ΠΈ Π΄Π΅Ρ€Π΅Π²Π°. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π΅Π³ΠΎ для Π²Ρ‹Π²ΠΎΠ΄Π° иСрархичСских Π΄Π°Π½Π½Ρ‹Ρ…. </para
></listitem
> 
</orderedlist>
</para>
<para
>Всё, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ, ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ Π² Qt, Π²Π°ΠΌ остаётся лишь ΡƒΠ·Π½Π°Ρ‚ΡŒ ΠΎ Π½ΡƒΠΆΠ½ΠΎΠΌ Π²Π°ΠΌ элСмСнтС, Π½Π°ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, ΠΈ, Ссли Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ, Π΄ΠΎΠΏΠΎΠ»Π½ΡΡ‚ΡŒ. ИспользованиС стандартных Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ позволяСт ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ, ΠΏΡ€ΠΈΠ²Ρ‹ΠΊΡˆΠΈΠΌ ΠΊ Π½ΠΈΠΌ, ΡΠΊΠΎΠ½Ρ†Π΅Π½Ρ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π½Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΎΠ½ΠΈ нСсут. </para>
</sect2>
<sect2 id="c4s3s2">
<title
>ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΡ KDE</title>
<para
>Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ KDE созданы Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΅Ρ‰Ρ‘ Π±ΠΎΠ»Π΅Π΅ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ созданиС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ для K Desktop Environment. Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° tdeui ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚: <orderedlist>
<listitem
><para
>KListView: Π±ΠΎΠ»Π΅Π΅ мощная вСрсия <classname
>QListView</classname
> </para
></listitem>
<listitem
><para
>KIconView: графичСский просмотр Π·Π½Π°Ρ‡ΠΊΠΎΠ² </para
></listitem>
</orderedlist>
</para>
<para
>Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° khtml прСдоставляСт ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€  HTML. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ для оформлСния Π²ΠΈΠ΄Π° вашСго прилоТСния ΠΏΠΎ Π΅Π³ΠΎ запуску. </para>
</sect2>
</sect1>
<sect1 id="c4s4">
<title
>Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ собствСнных прСдставлСний</title>
<para
>НАПИБАВЬ </para>
</sect1>
</chapter>

<chapter id="chapter5">
<title
>Настройка мСню ΠΈ ΠΏΠ°Π½Π΅Π»Π΅ΠΉ инструмСнтов</title>
<sect1 id="c5s1">
<title
>Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅</title>
<para
>МСню ΠΈ ΠΏΠ°Π½Π΅Π»ΠΈ инструмСнтов - ΠΎΠ΄Π½ΠΈ ΠΈΠ· самых Π³Π»Π°Π²Π½Ρ‹Ρ… частСй прилоТСния для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ. БлСдуя ΠΎΠ±Ρ‰ΠΈΠΌ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ, всС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ дСйствия Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ доступны Ρ‡Π΅Ρ€Π΅Π· мСню, ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ - Π½Π° ΠΏΠ°Π½Π΅Π»ΠΈ инструмСнтов. </para>
<para
>Π’ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ нСсколько ΠΏΠ°Π½Π΅Π»Π΅ΠΉ инструмСнтов. Они, ΠΊΡ€ΠΎΠΌΠ΅ ΠΊΠ½ΠΎΠΏΠΎΠΊ, ΠΌΠΎΠ³ΡƒΡ‚ Ρ‚Π°ΠΊΠΆΠ΅ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π²Ρ‹ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΠ΅ списки ΠΈ Ρ‚.Π΄. </para>
</sect1>
<sect1 id="c5s2">
<title
>Как это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚?</title>
<para
>ΠŸΡ€ΠΈΠΎΠΆΠ΅Π½ΠΈΠ΅ наслСдуСт класс <classname
>KMainWindow</classname
>, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ сам заботится ΠΎ создании ΠΏΠ°Π½Π΅Π»ΠΈ инструмСнтов ΠΈ мСню. Π’ ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ <methodname
>KScribble::setupActions()</methodname
> Π΅ΡΡ‚ΡŒ Π²Ρ‹Π·ΠΎΠ² <methodname
>KMainWindow::createGUI()</methodname
>. Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ Ρ„Π°ΠΉΠ» рСсурсов, Π² нашСм случаС это  kscribbleui.rc, для ΠΈΠ½Ρ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ мСню. Π’ΠΎΡ‚ Π΅Π³ΠΎ содСрТаниС: <programlisting
>1 &lt;!DOCTYPE kpartgui SYSTEM "kpartgui.dtd">
2 &lt;kpartgui name="kscribble" version="1">
3 &lt;MenuBar>
4   &lt;Menu name="custom"
>&lt;text
>C&amp;ustom&lt;/text>
5     &lt;Action name="custom_action" />
6   &lt;/Menu>
7 &lt;/MenuBar>
8 &lt;/kpartgui
>
</programlisting>
</para>
<para
>ОбъяснСниС... </para>
<para
>МоТо ΠΎΠ±ΠΎΠΉΡ‚ΠΈΡΡŒ ΠΈ Π±Π΅Π· Ρ„Π°ΠΉΠ»Π° рСсурсов. НапримСр, ΠΌΠ΅Ρ‚ΠΎΠ΄ <methodname
>menuBar()</methodname
> Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ элСмСнт управлСния <classname
>KMenuBar</classname
>, ΡΠ²Π»ΡΡŽΡ‰ΠΈΠΉΡΡ мСню для нашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΡ‹. <classname
>KMenuBar</classname
> ΠΈ Π΅Π³ΠΎ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ класс <classname
>QMenuBar</classname
> ΠΈΠΌΠ΅ΡŽΡ‚ большоС количСство ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² <methodname
>insertItem()</methodname
> для добавлСния ΠΏΡƒΠ½ΠΊΡ‚ΠΎΠ² мСню. </para>
<para
>ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ <classname
>KMainWindow</classname
><methodname
>statusBar()</methodname
> ΠΈ <methodname
> toolBar()</methodname
> Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ элСмСнты управлСния. </para>
</sect1>
<sect1 id="c5s3">
<title
>Настройка ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΉ клавиш.</title>
<para
>Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ всСгда Π·Π°Π±ΠΎΡ‚ΠΈΡ‚ΡŒΡΡ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ всС дСйствия Π² вашСй ΠΏΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ лишь с ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹. Π’Π°ΠΊΠΎΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΎΠΏΡ‹Ρ‚Π½Ρ‹ΠΌΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌΠΈ. Для этого Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ… KDE Π΅ΡΡ‚ΡŒΠΊΠ»Π°ΡΡ <classname
> KAction</classname
>. </para>
<para
>ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, сгСнСрированныС &tdevelop;, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ стандартныС ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ клавиш, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ  F1 ΠΈΠ»ΠΈ Ctrl+N. </para>
<para
>Если Π² вашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠ±ΠΈΠ½Π°Ρ†ΠΈΠΉ клавиш, Π»ΡƒΡ‡ΡˆΠ΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΈΡ… настраиваСмыми (Ρ‡Π΅Ρ€Π΅Π· мСню Настройка->ΠšΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ клавиш). Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° KDE прСдоставляСт для этого класс <classname
>KKeyChooser</classname
> для использования Π² Π΄ΠΈΠ°Π»ΠΎΠ³Π°Ρ… с Π²ΠΊΠ»Π°Π΄ΠΊΠ°ΠΌΠΈ, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ <classname
>KKeyDialog</classname
> прСдоставляСт ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π΄ΠΈΠ°Π»ΠΎΠ³. </para>

</sect1>
</chapter>

<!-- 
<chapter id="chapter6">
<title
>Other Features</title>
</chapter>

<chapter id="chapter7">
<title
>Printing Support</title>
</chapter>
-->
<chapter id="chapter8">
<title
>Π‘ΠΏΡ€Π°Π²ΠΊΠ°</title>
<sect1 id="c8s1">
<title
>Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅</title>
<para
>ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π½Π΅ всС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ - Linux-Π³ΡƒΡ€Ρƒ ΠΈ для Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΠ· Π½ΠΈΡ… Π½ΡƒΠΆΠ½Π° справка (ΠΊΠ°ΠΊ контСкстная, Ρ‚Π°ΠΊ ΠΈ просто руководство):</para>
<itemizedlist>
<listitem
><para
>Π’ΡΠΏΠ»Ρ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ подсказки</para
></listitem>
<listitem
><para
>БообщСния Π² строкС состояния</para
></listitem>
<listitem
><para
>Π§Ρ‚ΠΎ это?</para
></listitem>
</itemizedlist>
<para
>Ну, ΠΈ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ ΠΆΠ΅, руководство, Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠ΅ Ρ‡Π΅Ρ€Π΅Π· F1. Всё это прСдоставляСтся классом <classname
>KMainWindow</classname
>, Π° Π²Π°ΠΌ лишь остаётся Π½Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π΅Π³ΠΎ содСрТимым. </para>
<para
>&tdevelop; содСрТит Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ срСдства для Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ всСх Ρ‚ΠΈΠΏΠΎΠ² справки Π² вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. </para>
<para
>Π’ процСссС Ρ€Π°Π·Ρ€Π°Π±Ρ‚ΠΊΠΈ вашСго прилоТСния, ΠΏΠΎΠΏΡ‹Ρ‚Π°ΠΉΡ‚Π΅ΡΡŒ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ Π²Π²Π΅Π·Π΄Π΅. ΠŸΠΈΡˆΠΈΡ‚Π΅ справку сразу послС написания ΠΊΠΎΠ΄Π°. Π˜Π½Π°Ρ‡Π΅ ΠΏΠΎΡ‚ΠΎΠΌ придётся Π·Π°Π½ΠΎΠ²ΠΎ Π»Π΅Π·Ρ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈ Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚ΡŒΡΡ Ρ‡Ρ‚ΠΎ ΠΊ Ρ‡Π΅ΠΌΡƒ. </para>
</sect1>

<sect1 id="c8s2">
<title
>Π’ΡΠΏΠ»Ρ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ подсказки</title>
<para
>Бамая простая справка - Π²ΡΠΏΠ»Ρ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ подсказки (ΠΏΠΎΡΠ²Π»ΡΡŽΡ‰ΠΈΠ΅ΡΡ послС Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ курсора Π½Π°Π΄ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ). НаиболСС часто ΠΎΠ½ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π½Π° панСлях инструмСнтов. Π—Π° подробностями ΠΎΠ±Ρ€Π°Ρ‰Π°ΠΉΡ‚Π΅ΡΡŒ ΠΊ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ класса <classname
>KToolBar</classname
>, располоТСнного Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚ΠΊΠ΅ tdeui. </para>
<para
>Как ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΌΡ‹ рассмотрим ΠΊΠ½ΠΎΠΏΠΊΡƒ "New File": </para>
<para
>i18n("New File") Π½ΡƒΠΆΠ½Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π² макрос i18n(), описанный Π² kapp.h, для ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΊΠΈ этой строки для ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ языки. </para>
<para
>Подсказки Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π² любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ элСмСнт управлСния Ρ‡Π΅Ρ€Π΅Π· <classname
>QToolTip</classname
>: </para>
</sect1>
<sect1 id="c8s3">
<title
>Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ ΠΏΠ°Π½Π΅Π»ΠΈ состояния</title>
<para
>Π’.ΠΊ. прилоТСния, Π½Π°ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ класс <classname
>KMainWindow</classname
>, содСрТат Ρ‚Π°ΠΊΠΆΠ΅ панСль состояния, Π΅Ρ‘ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для отобраТСния Π±ΠΎΠ»Π΅Π΅ Π΄Π»ΠΈΠ½Π½ΠΎΠ³ΠΎ тССкста, Ρ‡Π΅ΠΌ Π² подсказкС. </para>
</sect1>
<sect1 id="c8s4">
<title
>Кнопка <guibutton
>Π§Ρ‚ΠΎ это?</guibutton
></title>
<para
>Подсказка <guibutton
>Π§Ρ‚ΠΎ это?</guibutton
> Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΊΡ€Π°Ρ‚ΠΊΡƒ справку (Π°Π±Π·Π°Ρ†-Π΄Π²Π°) ΠΏΠΎ Π²Ρ‹Π±Ρ€Π°Π½ΠΎΠΌΡƒ элСмСнту. Π‘Π°ΠΌΠ° ΠΊΠ½ΠΎΠΏΠΊΠ° <guibutton
>Π§Ρ‚ΠΎ это?</guibutton
> ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ располагаСтся Π»ΠΈΠ±ΠΎ Π² мСню, Π»ΠΈΠ±ΠΎ Π½Π° ΠΏΠ°Π½Π΅Π»ΠΈ инструмСнтов, Π»ΠΈΠ±ΠΎ Π² Π·Π°Π³Π°Π»ΠΎΠ²ΠΊΠ΅ ΠΎΠΊΠ½Π°. ПослС наТатия Π½Π° Π½Π΅ΠΉ, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π½Π°ΠΆΠ°Ρ‚ΡŒ Π½Π° Π½ΡƒΠΆΠ½ΠΎΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅. </para>
<para
>Для добавлСния Ρ‚Π°ΠΊΠΎΠΉ справки, Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ΡΡŒ статичСским ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ <methodname
>QWhatsThis::add(QWidget *widget, const QString &amp;text)</methodname
> </para>
</sect1>
</chapter>

<chapter id="chapter9">
<title
>ДокумСнтация</title>
<sect1 id="c9s1">
<title
>Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅</title>
<para
>ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΡ‹, создаваСмыС Π² &tdevelop; ΡƒΠΆΠ΅ содСрТат шаблон для Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ. </para>
</sect1>
<sect1 id="c9s2">
<title
>ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠ°Ρ докумСнтация</title>
<para
>ДокумСнтация для вашСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° располагаСтся Π²  ΠΏΡƒΡ‚ΡŒ-ΠΊ-ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρƒ/doc/en/index.docbook. Π‘ΠΏΡ€Π°Π²ΠΊΠ° ΠΏΠΎ языку Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΌΡƒ для написания Π΄ΠΎΠΊΡƒΠΌΠ΅Ρ‚Ρ‚Π°Ρ†ΠΈΠΈ,  ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π½Π° <ulink url="http://i18n.kde.org/doc/markup/"
>KDE's documentation website</ulink
>. Если Π²Ρ‹ испытываСтС трудности Π² написании руководства Π½Π° английском, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ KDE Editorial Team (см. ссылку Π²Ρ‹ΡˆΠ΅). </para>
</sect1>
<sect1 id="c9s3">
<title
>ДокумСнтация для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ²</title>
<para
>Данная докумСнтация ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ гСнСрируСтся автоматичСски ΠΈ содСрТит описаниС классов прилоТСния. НапримСр, Ρ‚Π°ΠΊ создаётся докумСнтация ΠΊ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ KDE. Π—Π° подробностями ΠΎΠ±Ρ€Π°Ρ‰Π°ΠΉΡ‚Π΅ΡΡŒ <ulink url="http://developer.kde.org/"
>сюда</ulink
> </para>
</sect1>
</chapter>

<chapter id="chapter10">
<title
>Π˜Π½Ρ‚Π΅Ρ€Π½Π°Ρ†ΠΈΠΎΠ½Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡ</title>
<sect1 id="c10s1">
<title
>Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅</title>
<para
>i18n - сокращСниС ΠΎΡ‚ internationalization. Π˜Π½Ρ‚Π΅Ρ€Π½Π°Ρ†ΠΈΠΎΠ½Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π΅ всСх сообщСний ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ языки, Π° Ρ‚Π°ΠΊΠΆΠ΅ всСстороннСй ΠΈΡ… ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ΅ (ΠΊΠ°ΠΊ-Ρ‚ΠΎ мноТСствСнныС Ρ„ΠΎΡ€ΠΌΡ‹, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΎΠΊ ΠΈ Ρ‚.Π΄.). Π˜Π·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΈ докумСнтация ΠΊ Π½Π΅ΠΉ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π½Π° английском, Ρ‚.ΠΊ. Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Ρ‡ΠΈΠΊΠΎΠ² Π·Π½Π°Π΅Ρ‚ ΠΈΠΌΠ΅Π½Π½ΠΎ этот язык (Ссли Π±Ρ‹ KDE Π±Ρ‹Π» ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Π½Π° Π½Π΅ΠΌΠ΅Ρ†ΠΊΠΎΠΌ, врядли ΠΌΡ‹ Π±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Π»ΠΈ Π΅Π³ΠΎ русский ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄). </para>
</sect1>
<!-- 
<sect1 id="c10s2">
<title
>How KDE support Internationalization</title>
 
</sect1
> -->
</chapter>
<!-- 
<chapter id="chapter11">
<title
>Finding Errors</title>
</chapter>

<chapter id="chapter12">
<title
>Licensing</title>
</chapter>

<chapter id="chapter13">
<title
>References</title>
</chapter>
-->
<chapter id="credits">
<title
>ΠŸΠ΅Ρ€Π΅Π²ΠΎΠ΄</title>

<para
>ΠŸΠ΅Ρ€Π΅Π²ΠΎΠ΄ осущСствил Н. Шафоростов, <ulink url="http://program.net.ua/"
>http://program.net.ua</ulink
>  </para>

<!--CREDITS_FOR_TRANSLATORS-->

</chapter
> <!-- credits -->

<appendix id="bibliography">
<title
>Библиография</title>
<bibliography>

<biblioentry>
<title
><ulink url="info://make/Top"
>GNU Make Manual</ulink
></title>
<authorgroup>
<author
><firstname
>Richard M.</firstname
><surname
>Stallman</surname
></author>
<author
><firstname
>Roland</firstname
><surname
>McGrath</surname
></author>
</authorgroup>
</biblioentry>

<biblioentry>
<title
><ulink url="info://automake/Top"
>GNU Automake</ulink
></title>
<authorgroup>
<author
><firstname
>David</firstname
><surname
>MacKenzie</surname
></author>
<author
><firstname
>Tom</firstname
><surname
>Tromey</surname
></author>
</authorgroup>
</biblioentry>

<biblioentry>
<title
><ulink url="info://autoconf/Top"
>GNU Autoconf</ulink
></title>
<authorgroup>
<author
><firstname
>David</firstname
><surname
>MacKenzie</surname
></author>
<author
><firstname
>Ben</firstname
><surname
>Elliston</surname
></author>
</authorgroup>
</biblioentry>

<biblioentry>
<title
><ulink url="info://gcc/Top"
>Using the GNU Compiler Collection</ulink
></title>
<author
><firstname
>Richard M.</firstname
><surname
>Stallman</surname
></author>
</biblioentry>

<biblioentry>
<title
><ulink url="info://libtool/Top"
>GNU Libtool</ulink
></title>
<authorgroup>
<author
><firstname
>Gordon</firstname
><surname
>Matzigkeit</surname
></author>
<author
><firstname
>Alexandre</firstname
><surname
>Oliva</surname
></author>
<author
><firstname
>Thomas</firstname
><surname
>Tanner</surname
></author>
<author
><firstname
>Gary V.</firstname
><surname
>Vaughan</surname
></author>
</authorgroup>
</biblioentry>

<biblioentry>
<title
>GNU Autoconf, Automake ΠΈ Libtool</title>
<edition
>1st edition</edition>
<pubdate
>October 2000</pubdate>
<authorgroup>
<author
><firstname
>Gary V.</firstname
><surname
>Vaughan</surname
></author>
<author
><firstname
>Ben</firstname
><surname
>Elliston</surname
></author>
<author
><firstname
>Tom</firstname
><surname
>Tromey</surname
></author>
<author
><firstname
>Ian Lance</firstname
><surname
>Taylor</surname
></author>
</authorgroup>
<publisher
><publishername
>New Riders Publishing</publishername
></publisher>
<isbn
>ISBN 1578701902</isbn>
</biblioentry>


<biblioentry>
<title
>Advanced Programming in the UNIX(R) Environment</title>
<edition
>1st edition</edition>
<pubdate
>June 1992</pubdate>
<author
><firstname
>W. Richard</firstname
><surname
>Stevens</surname
></author>
<publisher
><publishername
>Addison-Wesley Pub Co</publishername
></publisher>
<isbn
>ISBN 0201563177</isbn>
</biblioentry>

<biblioentry>
<title
>Thinking in C++, Volume 1: Introduction to Standard C++</title>
<edition
>2nd Edition</edition>
<pubdate
>April 15, 2000</pubdate>
<author
><firstname
>Bruce</firstname
><surname
>Eckel</surname
></author>
<publisher
><publishername
>Prentice Hall</publishername
></publisher>
<isbn
>ISBN 0139798099</isbn>
</biblioentry>

<biblioentry>
<title
>Open Source Development with CVS</title>
<edition
>2nd Edition</edition>
<pubdate
>October 12, 2001</pubdate>
<authorgroup>
<author
><firstname
>Karl</firstname
><surname
>Fogel</surname
></author>
<author
><firstname
>Moshe</firstname
><surname
>Bar</surname
></author>
</authorgroup>
<publisher
><publishername
>The Coriolis Group</publishername
></publisher>
<isbn
>ISBN 158880173X</isbn>
</biblioentry>

<biblioentry>
<title
>Programming PHP</title>
<edition
>1st edition</edition>
<pubdate
>March 2002</pubdate>
<authorgroup>
<author
><firstname
>Rasmus</firstname
><surname
>Lerdorf</surname
></author>
<author
><firstname
>Kevin</firstname
><surname
>Tatroe</surname
></author>
</authorgroup>
<publisher
><publishername
>O'Reilly &amp; Associates</publishername
></publisher>
<isbn
>ISBN 1565926102</isbn>
</biblioentry>

<biblioentry>
<title
>Programming Python</title>
<edition
>2nd Edition</edition>
<pubdate
>March 2001</pubdate>
<author
><firstname
>Mark</firstname
><surname
>Lutz</surname
></author>
<publisher
><publishername
>O'Reilly &amp; Associates</publishername
></publisher>
<isbn
>ISBN 0596000855</isbn>
</biblioentry>

<biblioentry>
<title
>Gui Programming With Python : Using the Qt Toolkit</title>
<edition
>Bk&amp;Cd-r edition</edition>
<pubdate
>January 2002</pubdate>
<author
><firstname
>Boudewijn</firstname
><surname
>Rempt</surname
></author>
<publisher
><publishername
>Opendocs Llc</publishername
></publisher>
<isbn
>ISBN 0970033044</isbn>
</biblioentry>

<biblioentry>
<title
>Programming Perl</title>
<subtitle
>The Camel book</subtitle>
<edition
>3rd Edition</edition>
<pubdate
>July 2000</pubdate>
<authorgroup>
<author
><firstname
>Larry</firstname
><surname
>Wall</surname
></author>
<author
><firstname
>Tom</firstname
><surname
>Christiansen</surname
></author>
<author
><firstname
>Jon</firstname
><surname
>Orwant</surname
></author>
</authorgroup>
<publisher
><publishername
>O'Reilly &amp; Associates</publishername
></publisher>
<isbn
>ISBN 0596000278</isbn>
</biblioentry>

<biblioentry>
<title
>Learning Perl</title>
<subtitle
>The Lama book</subtitle>
<edition
>3rd Edition</edition>
<pubdate
>July 15, 2001</pubdate>
<authorgroup>
<author
><firstname
>Randal L.</firstname
><surname
>Schwartz</surname
></author>
<author
><firstname
>Tom</firstname
><surname
>Phoenix</surname
></author>
</authorgroup>
<publisher
><publishername
>O'Reilly &amp; Associates</publishername
></publisher>
<isbn
>ISBN 0596001320</isbn>
</biblioentry>

</bibliography>

&underFDL;


</appendix>

</book>