SOURCES = main.cpp window.cpp
HEADERS = window.h
ΠΡ Π·Π°Π΄Π°Π΅ΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠΈΡΡΡΡΠΈΠΉ Π΄Π²ΠΎΠΈΡΠ½ΡΠΉ ΡΠ°ΠΉΠ», Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΈ moc ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ², ΠΏΡΡΡ ΠΊ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ KDE ΠΈ ΠΈΡΡ ΠΎΠ΄Π½ΡΠ΅ ΡΠ΅ΠΊΡΡΡ, ΠΈ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ, ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ ΡΠΎΡΠΌΠΈΡΡΠ΅ΡΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Π£ΡΡΠΈΡΠ΅, ΡΡΠΎ ΠΌΠ΅ΡΡΠΎΠ½Π°Ρ ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ² Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ ΠΈ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² KDE Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ Π²Π°ΡΠ΅Π³ΠΎ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²Π°. ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ SUSE Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΡΠΈΡΠ°Π²Π½ΡΡΡ INCLUDEPATH ΠΏΡΡΡ /opt/kde3/include ΠΈ QMAKE_LIBS_X11 ΠΏΡΡΡ /opt/kde3/lib.
$ qmake file.pro -ΠΎ Makefile
ΠΠ°ΡΠ΅ΠΌ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ make ΠΊΠ°ΠΊ ΠΎΠ±ΡΡΠ½ΠΎ, ΡΡΠΎ Π½Π΅ Π²ΡΠ·ΠΎΠ²Π΅Ρ Π·Π°ΡΡΡΠ΄Π½Π΅Π½ΠΈΠΉ. ΠΠ»Ρ ΡΠΏΡΠΎΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ qmake Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°ΠΌΠΈ Π»ΡΠ±ΠΎΠΉ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ, ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΠΈΠΌΠΈ KDE/Qt.
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΌΠ΅Π½Ρ ΠΈ ΠΏΠ°Π½Π΅Π»Π΅ΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² Ρ ΠΏΠΎΠΌΠΎΡΡΡ KDE
ΠΠ»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΠΏΡΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΌΠΎΡΡ Π²ΠΈΠ΄ΠΆΠ΅ΡΠΎΠ² KDE, ΠΌΡ ΠΎΡΡΠ°Π²ΠΈΠ»ΠΈ ΠΌΠ΅Π½Ρ ΠΈ ΠΏΠ°Π½Π΅Π»ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² Π½Π°ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠΊ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½ΠΈ β ΡΠΆ ΠΎΡΠ΅Π½Ρ Π½Π°Π³Π»ΡΠ΄Π½ΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ KDE ΡΠΊΠΎΠ½ΠΎΠΌΡΡ Π²ΡΠ΅ΠΌΡ ΠΈ ΡΡΠΈΠ»ΠΈΡ ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ ΡΠΎΠ»ΡΠΊΠΎ Qt ΠΈΠ»ΠΈ Π»ΡΠ±ΡΡ Π΄ΡΡΠ³ΠΈΡ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠΎΠ² Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°.
ΠΠ±ΡΡΠ½ΠΎ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°Ρ GUI ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΌΠ΅Π½Ρ ΠΈ ΠΏΠ°Π½Π΅Π»Π΅ΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² β ΠΎΡΠ»ΠΈΡΠ°ΡΡΠΈΠ΅ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ, ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠΎ ΡΠ²ΠΎΠΈΠΌ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΌ Π²ΠΈΠ΄ΠΆΠ΅ΡΠΎΠΌ. ΠΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΈ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°ΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π΅Π»Π°Ρ Π½Π΅Π΄ΠΎΡΡΡΠΏΠ½ΡΠΌΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ Π²Π°ΡΠΈΠ°Π½ΡΡ, ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ.
Π£ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ² KDE ΠΏΠΎΡΠ²ΠΈΠ»ΠΎΡΡ Π»ΡΡΡΠ΅Π΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅. ΠΠΌΠ΅ΡΡΠΎ ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΎΠ±ΠΎΡΠΎΠ±Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π° Π² KDE ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ Π²ΠΈΠ΄ΠΆΠ΅Ρ KAction Π΄Π»Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. ΠΡΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΎΡΠΊΡΡΡΡ Π½ΠΎΠ²ΡΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ, ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ ΡΠ°ΠΉΠ» ΠΈΠ»ΠΈ Π²ΡΠ²Π΅ΡΡΠΈ ΠΎΠΊΠ½ΠΎ ΡΠΏΡΠ°Π²ΠΊΠΈ.
KAction ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅ΡΡΡ ΡΠ΅ΠΊΡΡ, ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠ½ΡΠΉ Π°ΠΊΡΠ΅Π»Π΅ΡΠ°ΡΠΎΡ, ΠΏΠΈΠΊΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΈ ΡΠ»ΠΎΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΠΏΡΠΈ Π°ΠΊΡΠΈΠ²ΠΈΠ·Π°ΡΠΈΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ:
KAction *new_file = new KAction("New", "filenew",
KstdAccel::shortcut(KstdAccel::New), this,
SLOT(newFile()), this, "newaction");
ΠΠ°ΡΠ΅ΠΌ KAction ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π²ΡΡΠ°Π²Π»Π΅Π½ΠΎ Π² ΠΌΠ΅Π½Ρ ΠΈ ΠΏΠ°Π½Π΅Π»Ρ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² Π±Π΅Π· Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ:
new_file->plug(a_menu);
new_file->plug(a_toolbar);
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π²Ρ ΡΠΎΠ·Π΄Π°Π»ΠΈ ΠΏΡΠ½ΠΊΡ ΠΌΠ΅Π½Ρ New ΠΈ ΠΊΠ½ΠΎΠΏΠΊΡ ΠΏΠ°Π½Π΅Π»ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΡΠ·ΡΠ²Π°ΡΡ newFile ΠΏΡΠΈ ΡΠ΅Π»ΡΠΊΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡΡΠΈ.
Π’Π΅ΠΏΠ΅ΡΡ Π΅ΡΠ»ΠΈ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΎΡΠΌΠ΅Π½ΠΈΡΡ KAction β ΡΠΊΠ°ΠΆΠ΅ΠΌ, Π²Ρ Π½Π΅ Ρ ΠΎΡΠΈΡΠ΅, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΌΠΎΠ³ ΡΠΎΠ·Π΄Π°ΡΡ Π½ΠΎΠ²ΡΠΉ ΡΠ°ΠΉΠ», β Π²ΡΠ·ΠΎΠ² ΡΠ΅Π½ΡΡΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½:
new_file->setEnabled(FALSE);
ΠΡΠΎ Π²ΡΠ΅, ΡΡΠΎ ΠΊΠ°ΡΠ°Π΅ΡΡΡ ΠΌΠ΅Π½Ρ ΠΈ ΠΏΠ°Π½Π΅Π»Π΅ΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² Π² ΡΡΠ΅Π΄Π΅ KDE β Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΠΎΡΠ΅Π½Ρ Π»Π΅Π³ΠΊΠΎ ΠΈ ΠΏΡΠΎΡΡΠΎ. ΠΠ°Π»Π΅Π΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ Π²ΠΈΠ΄ΠΆΠ΅ΡΠ° KAction:
#include <kde/kaction.h>
KAction(const QString& text, const KShortcut& cut,
const QObject* receiver, const char* slot,
QObject *parent, const char* name = 0);
KDE ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ KAction Π΄Π»Ρ ΡΠ½ΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΡΠ΅ΠΊΡΡΠ°, ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠ½ΡΡ Π°ΠΊΡΠ΅Π»Π΅ΡΠ°ΡΠΎΡΠΎΠ² ΠΈ ΠΏΠΈΠΊΡΠΎΠ³ΡΠ°ΠΌΠΌ Π² ΡΠ°Π·Π½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ KDE:
#include <kde/kaction.h>
KAction* openNew(const QObject* recvr, const char *slot,
KActionCollection* parent, const char* name = 0)ΠΆ
KAction* save ...
KAction* saveAs ...
KAction* revert ...
KAction* close ...
KAction* print ...
Π Ρ.Π΄.
ΠΡΠ±ΠΎΠ΅ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΠΎΠ΄Π½ΠΈ ΠΈ ΡΠ΅ ΠΆΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ; ΡΠ»ΠΎΡ-ΠΏΡΠΈΠ΅ΠΌΠ½ΠΈΠΊ ΠΈ ΡΡΠ½ΠΊΡΠΈΡ, KActionCollection ΠΈ ΠΈΠΌΡ KAction. ΠΠ±ΡΠ΅ΠΊΡ KActionCollection ΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ Π² ΠΎΠΊΠ½Π΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ KAction, ΠΈ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Π° actionCollection ΠΎΠΊΠ½Π° KMainWindow:
KAction *saveas = KStdAction::saveAs(this, SLOT(saveAs()) ,
actionCollection(), "saveas");
ΠΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΡΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΠ΅ 17.8.
Π£ΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΠ΅ 17.8. ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² KDE Ρ ΠΌΠ΅Π½Ρ ΠΈ ΠΏΠ°Π½Π΅Π»ΡΠΌΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ²Π ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π΄Π°Π»Π΅Π΅ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π²Ρ ΠΎΠΏΡΠΎΠ±ΡΠ΅ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ KAction Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΡΡΠ΅Π΄Ρ KDE.
1. ΠΠ°ΡΠ½ΠΈΡΠ΅ Ρ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° KDEMenu.h. KDEMenu β ΡΡΠΎ ΠΏΠΎΠ΄ΠΊΠ»Π°ΡΡ KMainWindow, ΡΠ²Π»ΡΡΡΠ΅Π³ΠΎΡΡ ΠΏΠΎΠ΄ΠΊΠ»Π°ΡΡΠΎΠΌ ΠΊΠ»Π°ΡΡΠ° QMainWindow. KMainWindow ΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ΅Π°Π½ΡΠΎΠΌ Π² ΡΡΠ΅Π΄Π΅ KDE ΠΈ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΌΠΈ ΠΏΠ°Π½Π΅Π»ΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² ΠΈ ΡΡΡΠΎΠΊΠΎΠΉ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ.
#include <kde/kmainwindow.h>
class KDEMenu : public KMainWindow {
Q_OBJECT
public:
KDEMenu(const char * name = 0);
private slots:
void newFile();
void aboutApp();
};
2. Π€Π°ΠΉΠ» KDEMenu.cpp Π½Π°ΡΠ½ΠΈΡΠ΅ Ρ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ² #include Π΄Π»Ρ Π²ΠΈΠ΄ΠΆΠ΅ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ΄Π΅ΡΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ:
#include "KDEMenu.h"
#include <kde/kapp.h>
#include <kde/kaction.h>
#include <kde/kstdaccel.h>
#include <kde/kmenubar.h>
#include <kde/kaboutdialog.h>
3. Π ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ°Ρ , ΡΠΎΠ·Π΄Π°ΡΡΠΈΡ ΡΡΠΈ Π²ΠΈΠ΄ΠΆΠ΅ΡΠ° KAction, new_file ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ Π²ΡΡΡΠ½ΡΡ, a quit_action ΠΈ help_action ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ KAction:
KDEMenu::KDEMenu(const char *name = 0) : KMainWindow (0L, name) {
KAction *new_file = new KAction("New", "filenew",
KstdAccel::shortcut(KstdAccel::New), this, SLOT(newFile()),
this, "newaction");
KAction *quit_action = KStdAction::quit(KApplication::kApplication(),
SLOT(quit()), actionCollection());
KAction *help_action = KStdAction::aboutApp(this, SLOT(aboutApp()),
actionCollection());
4. Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π΄Π²Π° ΠΌΠ΅Π½Ρ Π²Π΅ΡΡ Π½Π΅Π³ΠΎ ΡΡΠΎΠ²Π½Ρ ΠΈ Π²ΠΊΠ»ΡΡΠΈΡΠ΅ ΠΈΡ Π² ΡΡΡΠΎΠΊΡ ΠΌΠ΅Π½Ρ KApplication:
QPopupMenu *file_menu = new QPopupMenu;
QPopupMenu *help_menu = new QPopupMenu;
menuBar()->insertItem("&File", file_menu);
menuBar()->insertItem("&Help", help_menu);
5. Π’Π΅ΠΏΠ΅ΡΡ Π²ΡΡΠ°Π²ΡΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Π² ΠΌΠ΅Π½Ρ ΠΈ ΠΏΠ°Π½Π΅Π»Ρ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ², Π΄ΠΎΠ±Π°Π²ΠΈΠ² ΡΠ°Π·Π΄Π΅Π»ΠΈΡΠ΅Π»ΡΠ½ΡΡ Π»ΠΈΠ½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ new_file ΠΈ quit_action:
new_file->plug(file_menu);
file_menu->insertSeparator();
quit_action->plug(file_menu);
help_action->plug(help_menu);
new_file->plug(toolBar());
quit_action->plug(toolBar());
}
6. Π Π·Π°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΉ ΡΠ»ΠΎΡΠΎΠ²: aboutApp ΡΠΎΠ·Π΄Π°Π΅Ρ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ KAbout Π΄Π»Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΠ²Π΅Π΄Π΅Π½ΠΈΠΉ ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅. Π£ΡΡΠΈΡΠ΅, ΡΡΠΎ ΡΠ»ΠΎΡ quit ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ ΠΊΠ°ΠΊ ΡΠ°ΡΡΡ KApplication:
void KDEMenu::newFile() {
// Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°
}
void KDEMenu::aboutApp() {
KAboutDialog *about = new KAboutDialog(this, "dialog");
about->setAuthor(QString("A. N. Author"),
QString(" [email protected]"), QString("http://url.com"),
QString("work"));
about->setVersion("1.0");
about->show();
}
int main(int argc, char **argv) {
KApplication app(argc, argv, "cdapp");
KDEMenu* window = new KDEMenu("kdemenu");
app.setMainWidget(window);
window->show();
return app.exec();
}
7. ΠΠ°Π»Π΅Π΅ Π²Π°ΠΌ Π½ΡΠΆΠ΅Π½ ΡΠ°ΠΉΠ» menu.pro Π΄Π»Ρ ΡΡΠΈΠ»ΠΈΡΡ qmake:
TARGET = kdemenu
MOC_DIR = moc
OBJECTS_DIR = obj
INCLUDEPATH = /usr/include/kde
QMAKE_LIBDIR_X11 += -L$KDEDIR/lib
QMAKE_LIBS_X11 += -lkdeui -lkdecore
SOURCES = KDEMenu.cpp
HEADERS = KDEMenu.h
8. Π’Π΅ΠΏΠ΅ΡΡ Π·Π°ΠΏΡΡΡΠΈΡΠ΅ qmake Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ make-ΡΠ°ΠΉΠ»Π°, ΠΎΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠΉΡΠ΅ ΠΈ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ:
$ qmake menu.pro -ΠΎ Makefile
$ make
$ ./kdemenu
ΠΠ°ΠΊ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ
ΠΠ΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΎ, ΡΡΠΎ ΡΡΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΠΎΠ»ΡΡΠΈΠ»ΡΡ ΡΡΡΡ Π΄Π»ΠΈΠ½Π½Π΅Π΅ Π΄ΡΡΠ³ΠΈΡ , ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΉ ΠΊΠΎΠ΄ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΊΡΠ°ΡΠΎΠΊ, Π΅ΡΠ»ΠΈ ΡΡΠ΅ΡΡΡ Π²ΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΡ ΠΈΠΌ ΡΠ°Π±ΠΎΡΡ ΠΏΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΡΡΠΎΠΊΠΈ ΠΌΠ΅Π½Ρ ΠΈ ΡΠ°ΠΌΠΈΡ ΠΌΠ΅Π½Ρ. ΠΡΡΡΠ΅Π΅ ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎ Π²ΠΈΠ΄ΠΆΠ΅ΡΠΎΠ² KAction β Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· Π½ΠΈΡ Π² ΡΠ°Π·Π½ΡΡ ΡΠ°ΡΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ ΠΏΠ°Π½Π΅Π»Ρ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² ΠΈ ΠΌΠ΅Π½Ρ Π² ΡΡΡΠΎΠΊΠ΅ ΠΌΠ΅Π½Ρ, Π²ΡΠ΅ ΡΠΏΠΎΠΌΡΠ½ΡΡΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅.
ΠΠΎΡΡΡΠΎΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ KDE ΡΡΠ΅Π±ΡΠ΅Ρ Π±ΠΎΠ»ΡΡΠ΅ ΡΠ°Π±ΠΎΡΡ, ΡΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ, ΠΏΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅, Π½Π° ΠΏΠ΅ΡΠ²ΡΠΉ Π²Π·Π³Π»ΡΠ΄. Π Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΡΠ°ΠΉΠ» menu.pro ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π° qmake ΡΠΊΡΡΠ²Π°ΡΡ Π±ΠΎΠ»ΡΡΠΎΠΉ Π½Π°Π±ΠΎΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π² ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π²Π°ΠΌ ΠΏΡΠΈΡΠ»ΠΎΡΡ Π±Ρ Π²ΡΡΠ°Π²Π»ΡΡΡ Π²ΡΡΡΠ½ΡΡ Π² Π²Π°Ρ make-ΡΠ°ΠΉΠ».
ΠΠ° ΡΠΈΡ. 17.11 ΠΈ 17.12 ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ ΠΏΠΎΡΠ²Π»ΡΡΡΡΡ Π² ΠΎΠΊΠ½Π΅ ΠΌΠ΅Π½Ρ ΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΏΠ°Π½Π΅Π»ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ².
Π ΠΈΡ. 17.11
Π ΠΈΡ. 17.12
Π Π²ΠΎΡ ΠΎΠ½ΠΎ! ΠΡ Π·Π°ΠΊΠΎΠ½ΡΠΈΠ»ΠΈ Π½Π°Ρ ΡΡΡ ΠΏΠΎ Qt ΠΈ KDE, ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π² Π±Π°Π·ΠΎΠ²ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ, Π²ΡΠ΅Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ GUI, ΠΎΠΊΠ½Π°, ΡΡ Π΅ΠΌΡ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ, ΠΊΠ½ΠΎΠΏΠΊΠΈ, Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΡΠ΅ ΠΎΠΊΠ½Π° ΠΈ ΠΌΠ΅Π½Ρ. Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π±Π΅ΡΡΠΈΡΠ»Π΅Π½Π½ΠΎΠ΅ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π²ΠΈΠ΄ΠΆΠ΅ΡΠΎΠ² Qt ΠΈ KDE, ΠΎ ΠΊΠΎΡΠΎΡΡΡ ΠΌΡ Π½Π΅ ΡΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΈ, Π½Π°ΡΠΈΠ½Π°Ρ Ρ QColorDialog β Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° Π΄Π»Ρ Π²ΡΠ±ΠΎΡΠ° ΡΠ²Π΅ΡΠ° β ΠΈ Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°Ρ KHTML β Π²ΠΈΠ΄ΠΆΠ΅ΡΠΎΠΌ Web-ΠΎΠ±ΠΎΠ·ΡΠ΅Π²Π°ΡΠ΅Π»Ρ β Π²ΡΠ΅ ΠΎΠ½ΠΈ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΠΎΠΏΠΈΡΠ°Π½Ρ Π½Π° Web-ΡΠ°ΠΉΡΠ°Ρ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Trolltech ΠΈ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΡΠ΅Π΄Ρ KDE.
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½ΡΡ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ-Π΄ΠΈΡΠΊΠΎΠ² Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ KDE/Qt
Π’Π΅ΠΏΠ΅ΡΡ, ΠΊΠΎΠ³Π΄Π° Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΈΠ»Ρ ΠΈ ΠΌΠΎΡΡ KDE/Qt, ΠΏΡΠΈΡΠ»ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ½ΠΎΠ²Π° ΠΎΠ±ΡΠ°ΡΠΈΡΡ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ-Π΄ΠΈΡΠΊΠ°ΠΌΠΈ, ΡΡΠΎΠ±Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ Π΅Π³ΠΎ Π² ΡΡΠ²ΡΡΠ²ΠΎ.
ΠΠ°ΠΏΠΎΠΌΠΈΠ½Π°Π΅ΠΌ, ΡΠ΅Π³ΠΎ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ Π΄ΠΎΠ±ΠΈΡΡΡΡ ΠΎΡ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½ΡΡ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ-Π΄ΠΈΡΠΊΠΎΠ²:
β‘ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΡ Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ ΠΈΠ· Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°;
β‘ ΠΏΠΎΠΈΡΠΊ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ-Π΄ΠΈΡΠΊΠ° Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ ;
β‘ Π²ΡΠ²ΠΎΠ΄ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ-Π΄ΠΈΡΠΊΠ΅ ΠΈ Π΅Π³ΠΎ Π΄ΠΎΡΠΎΠΆΠΊΠ°Ρ ;
β‘ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ-Π΄ΠΈΡΠΊΠ° Π² Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ ;