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

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

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

HEADERS = window.h

Π’Ρ‹ Π·Π°Π΄Π°Π΅Ρ‚Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ», Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ moc ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ², ΠΏΡƒΡ‚ΡŒ ΠΊ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ KDE ΠΈ исходныС тСксты, ΠΈ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹, ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… формируСтся ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Π£Ρ‡Ρ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ мСстонахоТдСниС Ρ„Π°ΠΉΠ»ΠΎΠ² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ ΠΈ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² KDE зависит ΠΎΡ‚ вашСго дистрибутива. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ SUSE Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€ΠΈΡ€Π°Π²Π½ΡΡ‚ΡŒ

INCLUDEPATH
ΠΏΡƒΡ‚ΡŒ /opt/kde3/include ΠΈ
QMAKE_LIBS_X11
ΠΏΡƒΡ‚ΡŒ /opt/kde3/lib.

$ <b>qmake file.pro -ΠΎ Makefile</b>

Π—Π°Ρ‚Π΅ΠΌ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ

make
ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π΅ Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ Π·Π°Ρ‚Ρ€ΡƒΠ΄Π½Π΅Π½ΠΈΠΉ. Для упрощСния ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ построСния прилоТСния слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ
qmake
с ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ любой слоТности, ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‰ΠΈΠΌΠΈ KDE/Qt.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ мСню ΠΈ ΠΏΠ°Π½Π΅Π»Π΅ΠΉ инструмСнтов с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ KDE

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

ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ… GUI элСмСнты мСню ΠΈ ΠΏΠ°Π½Π΅Π»Π΅ΠΉ инструмСнтов β€” ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‰ΠΈΠ΅ΡΡ элСмСнты, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ со своим собствСнным Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΎΠΌ. Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта ΠΈ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ измСнСния, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, дСлая нСдоступными ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ.

Π£ программистов KDE появилось Π»ΡƒΡ‡ΡˆΠ΅Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅. ВмСсто Ρ‚Π°ΠΊΠΎΠ³ΠΎ обособлСнного ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° Π² KDE ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚

KAction
для прСдставлСния дСйствия, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Π­Ρ‚ΠΎ дСйствиС ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚, ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ» ΠΈΠ»ΠΈ вывСсти ΠΎΠΊΠ½ΠΎ справки.

KAction
присваиваСтся тСкст, ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Π½Ρ‹ΠΉ аксСлСратор, ΠΏΠΈΠΊΡ‚ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΈ слот, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ вызываСтся ΠΏΡ€ΠΈ Π°ΠΊΡ‚ΠΈΠ²ΠΈΠ·Π°Ρ†ΠΈΠΈ дСйствия:

KAction *new_file = new KAction(&quot;New&quot;, &quot;filenew&quot;,

Β KstdAccel::shortcut(KstdAccel::New), this,

Β SLOT(newFile()), this, &quot;newaction&quot;);

Π—Π°Ρ‚Π΅ΠΌ

KAction
ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ вставлСно Π² мСню ΠΈ панСль инструмСнтов Π±Π΅Π· Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ описания:

new_file-&gt;plug(a_menu);

new_file-&gt;plug(a_toolbar);

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π²Ρ‹ создали ΠΏΡƒΠ½ΠΊΡ‚ мСню New ΠΈ ΠΊΠ½ΠΎΠΏΠΊΡƒ ΠΏΠ°Π½Π΅Π»ΠΈ инструмСнтов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚

newFile
ΠΏΡ€ΠΈ Ρ‰Π΅Π»Ρ‡ΠΊΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡ‹ΡˆΠΈ.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ссли Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ

KAction
β€” скаТСм, Π²Ρ‹ Π½Π΅ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠ³ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ Ρ„Π°ΠΉΠ», β€” Π²Ρ‹Π·ΠΎΠ² Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½:

new_file-&gt;setEnabled(FALSE);

Π­Ρ‚ΠΎ всС, Ρ‡Ρ‚ΠΎ касаСтся мСню ΠΈ ΠΏΠ°Π½Π΅Π»Π΅ΠΉ инструмСнтов Π² срСдС KDE β€” Π½Π° самом Π΄Π΅Π»Π΅ ΠΎΡ‡Π΅Π½ΡŒ Π»Π΅Π³ΠΊΠΎ ΠΈ просто. Π”Π°Π»Π΅Π΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ конструктор Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π°

KAction
:

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

<b>KAction(const QString&amp; text, const KShortcut&amp; cut,</b>

<b>Β const QObject* receiver, const char* slot,</b>

<b>Β QObject *parent, const char* name = 0);</b>

KDE прСдоставляСт стандартныС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹

KAction
для ΡƒΠ½ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ тСкста, ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Π½Ρ‹Ρ… аксСлСраторов ΠΈ ΠΏΠΈΠΊΡ‚ΠΎΠ³Ρ€Π°ΠΌΠΌ Π² Ρ€Π°Π·Π½Ρ‹Ρ… прилоТСниях KDE:

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

<b>KAction* openNew(const QObject* recvr, const char *slot,</b>

<b>Β KActionCollection* parent, const char* name = 0)ΠΆ</b>

<b>KAction* save ...</b>

<b>KAction* saveAs ...</b>

<b>KAction* revert ...</b>

<b>KAction* close ...</b>

<b>KAction* print ...</b>

И Ρ‚.Π΄.

Π›ΡŽΠ±ΠΎΠ΅ стандартноС дСйствиС ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΎΠ΄Π½ΠΈ ΠΈ Ρ‚Π΅ ΠΆΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹; слот-ΠΏΡ€ΠΈΠ΅ΠΌΠ½ΠΈΠΊ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ,

KActionCollection
и имя
KAction
. ΠžΠ±ΡŠΠ΅ΠΊΡ‚
KActionCollection
управляСт Π² ΠΎΠΊΠ½Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ
KAction
, ΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°
actionCollection
ΠΎΠΊΠ½Π°
KMainWindow
:

KAction *saveas = KStdAction::saveAs(this, SLOT(saveAs()) ,

Β actionCollection(), &quot;saveas&quot;);

Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡƒΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ 17.8.

Π£ΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ 17.8. ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² KDE с мСню ΠΈ панСлями инструмСнтов

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π΄Π°Π»Π΅Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π²Ρ‹ ΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅Ρ‚Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹

KAction
Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ срСды KDE.

1. НачнитС с Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° KDEMenu.h.

KDEMenu
β€” это подкласс
KMainWindow
, ΡΠ²Π»ΡΡŽΡ‰Π΅Π³ΠΎΡΡ подклассом класса
QMainWindow
.
KMainWindow
управляСт сСансом Π² срСдС KDE ΠΈ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ встроСнными панСлью инструмСнтов ΠΈ строкой состояния.

#include &lt;kde/kmainwindow.h&gt;

class KDEMenu : public KMainWindow {

Β Q_OBJECT

public:

Β KDEMenu(const char * name = 0);

private slots:

Β void newFile();

Β void aboutApp();

};

2.Β Π€Π°ΠΉΠ» KDEMenu.cpp Π½Π°Ρ‡Π½ΠΈΡ‚Π΅ с Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²

#include
для Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ:

#include &quot;KDEMenu.h&quot;

#includeΒ &lt;kde/kapp.h&gt;

#includeΒ &lt;kde/kaction.h&gt;

#includeΒ &lt;kde/kstdaccel.h&gt;

#includeΒ &lt;kde/kmenubar.h&gt;

#includeΒ &lt;kde/kaboutdialog.h&gt;

3.Β Π’ конструкторах, ΡΠΎΠ·Π΄Π°ΡŽΡ‰ΠΈΡ… Ρ‚Ρ€ΠΈ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π°

KAction
,
new_file
опрСдСляСтся Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ, a
quit_action
ΠΈ
help_action
ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ стандартныС опрСдСлСния
KAction
:

KDEMenu::KDEMenu(const char *name = 0) : KMainWindow (0L, name) {

Β KAction *new_file = new KAction(&quot;New&quot;, &quot;filenew&quot;,