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

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

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

Β  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-Ρ„Π°ΠΉΠ»Π°, ΠΎΡ‚ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ:

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

$ <b>make</b>

$ <b>./kdemenu</b>

Как это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚

НСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ этот ΠΏΡ€ΠΈΠΌΠ΅Ρ€ получился Ρ‡ΡƒΡ‚ΡŒ Π΄Π»ΠΈΠ½Π½Π΅Π΅ Π΄Ρ€ΡƒΠ³ΠΈΡ…, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ довольно ΠΊΡ€Π°Ρ‚ΠΎΠΊ, Ссли ΡƒΡ‡Π΅ΡΡ‚ΡŒ всю Π²Ρ‹ΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡƒΡŽ ΠΈΠΌ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΏΠΎ созданию строки мСню ΠΈ самих мСню. Π›ΡƒΡ‡ΡˆΠ΅Π΅ качСство Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΎΠ²

KAction
β€” Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ использования ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· Π½ΠΈΡ… Π² Ρ€Π°Π·Π½Ρ‹Ρ… частях ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ панСль инструмСнтов ΠΈ мСню Π² строкС мСню, всС упомянутыС возмоТности ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ‹ Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅.

ΠŸΠΎΡΡ‚Ρ€ΠΎΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ KDE Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ большС Ρ€Π°Π±ΠΎΡ‚Ρ‹, Ρ‡Π΅ΠΌ созданиС Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅, Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ взгляд. Π’ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Ρ„Π°ΠΉΠ» menu.pro ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π°

qmake
ΡΠΊΡ€Ρ‹Π²Π°ΡŽΡ‚ большой Π½Π°Π±ΠΎΡ€ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС Π²Π°ΠΌ ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ Π±Ρ‹ Π²ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ Π² ваш make-Ρ„Π°ΠΉΠ».

На рис. 17.11 ΠΈ 17.12 ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ ΠΏΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ Π² ΠΎΠΊΠ½Π΅ мСню ΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΏΠ°Π½Π΅Π»ΠΈ инструмСнтов.

ΠžΡΠ½ΠΎΠ²Ρ‹ программирования Π² Linux - image076.jpg

Рис. 17.11 

ΠžΡΠ½ΠΎΠ²Ρ‹ программирования Π² Linux - image077.jpg

Рис. 17.12 

И Π²ΠΎΡ‚ ΠΎΠ½ΠΎ! ΠœΡ‹ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΠ»ΠΈ наш Ρ‚ΡƒΡ€ ΠΏΠΎ Qt ΠΈ KDE, рассмотрСв Π±Π°Π·ΠΎΠ²Ρ‹Π΅ элСмСнты, всСх ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ GUI, ΠΎΠΊΠ½Π°, схСмы размСщСния, ΠΊΠ½ΠΎΠΏΠΊΠΈ, Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²Ρ‹Π΅ ΠΎΠΊΠ½Π° ΠΈ мСню. БущСствуСт бСсчислСнноС мноТСство Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΎΠ² Qt ΠΈ KDE, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΡ‹ Π½Π΅ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΈ, начиная с

QColorDialog
β€” Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° для Π²Ρ‹Π±ΠΎΡ€Π° Ρ†Π²Π΅Ρ‚Π° β€” ΠΈ заканчивая
KHTML
β€” Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΎΠΌ Web-обозрСватСля β€” всС ΠΎΠ½ΠΈ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ описаны Π½Π° Web-сайтах ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Trolltech ΠΈ графичСской срСды KDE.Β 

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚-дисков с использованиСм KDE/Qt

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ силу ΠΈ ΠΌΠΎΡ‰ΡŒ KDE/Qt, ΠΏΡ€ΠΈΡˆΠ»ΠΎ врСмя снова ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚-дисками, Ρ‡Ρ‚ΠΎΠ±Ρ‹ привСсти Π΅Π³ΠΎ Π² чувство.

НапоминаСм, Ρ‡Π΅Π³ΠΎ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ ΠΎΡ‚ вашСго прилоТСния для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚-дисков:

░ рСгистрация Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· графичСского ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса;

░ поиск ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚-диска Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…;

β–‘Β Π²Ρ‹Π²ΠΎΠ΄ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚-дискС ΠΈ Π΅Π³ΠΎ Π΄ΠΎΡ€ΠΎΠΆΠΊΠ°Ρ…;

β–‘Β Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚-диска Π² Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ…;

β–‘Β ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠΊΠ½Π° About (О ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅).

MainWindow

НачнСм обсуТдСниС с ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° для Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° прилоТСния, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ содСрТит Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ поля поиска ΠΈ список для отобраТСния Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² поиска.

1. НачнитС с Π²Π²ΠΎΠ΄Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π² Ρ„Π°ΠΉΠ» MainWindow.h (ΠΈΠ»ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚Π΅ Π΅Π³ΠΎ с Web-сайта ΠΊΠ½ΠΈΠ³ΠΈ). ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠΊΠ½ΠΎ содСрТит Π²ΠΈΠ΄ΠΆΠ΅Ρ‚

QLineEdit
для поиска ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚-дисков ΠΈ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚
QListView
для Π²Ρ‹Π²ΠΎΠ΄Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² поиска, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ qlistview.h ΠΈ qlineedit.h:

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

#include &lt;qlistview.h&gt;