Журнал LinuxFormat - перейти на главную

LXF143:KDE

Материал из Linuxformat
Перейти к: навигация, поиск
Hardcore Linux Проверьте себя на крутом проекте для продвинутых пользователей

Содержание

KDevelop: Сре­да для разработки

Грэм Мор­ри­сон объ­е­ди­ня­ет два са­мых го­ря­чих ре­ли­за из ми­ра KDE с Qt, что­бы соз­дать сияю­щий но­виз­ной тек­сто­вый ре­дак­тор.

KDevelop – сре­да раз­ра­бот­ки при­ло­жений KDE. Она сто­ит на двух стол­пах KDE – C++ и API Qt, но в ней мож­но пи­сать про­грам­мы и на дру­гих язы­ках, вклю­чая PHP. Впро­чем, вас мо­жет уди­вить, что мы сно­ва к ней вер­ну­лись – ведь в LXF134 мы до­воль­но рез­ко вы­ска­за­лись о толь­ко что вы­шед­шем пер­вом ре­ли­зе KDevelop 4.0, и осно­вания у нас на это бы­ли. Так что же из­менилось?

Ну, на тот мо­мент Qt Creator, но­вая «род­ная» сре­да раз­ра­бот­ки для про­грам­ми­стов Qt, остав­ля­ла KDevelop да­ле­ко по­за­ди. Имея без­оши­боч­ную кор­рек­цию син­так­си­са, встро­ен­ную до­ку­мен­та­цию и встро­ен­ный же ди­зайнер поль­зо­ва­тель­ских ин­тер­фей­сов, Creator так­же пре­достав­ля­ла луч­ший спо­соб по­лу­чить и по­следние ре­ли­зы Qt, и сре­ду раз­ра­бот­ки кросс­плат­фор­мен­ных про­ек­тов. Да и пре­достав­ля­ет. Од­на­ко за два по­следних ре­ли­за KDevelop вы­росла в пол­но­цен­ную аль­тер­на­ти­ву, осо­бен­но для раз­ра­бот­чи­ков KDE, и ес­ли вы еще не слы­ша­ли о но­вых воз­мож­но­стях и улуч­шениях ста­биль­но­сти в вер­сии 4.2, са­мое вре­мя с ни-ми по­зна­ко­мить­ся.

Пре­иму­ще­ст­ва KDevelop 4.2

С KDevelop 4.2 мож­но соз­да­вать при­ло­жения в сре­де раз­ра­бот­ки, ко­то­рая понима­ет до­бав­ки KDE к API Qt. Здесь так­же есть удоб­ная он­лайн-справ­ка, под­свет­ка син­так­си­са и воз­мож­ность управ­ления сис­те­мой сбор­ки cmake. KDevelop 4.2 и KDE 4.6 вы­шли од­но­вре­мен­но, а зна­чит, KDevelop – един­ст­вен­ная ныне сре­да раз­ра­бот­ки, вклю­чаю­щая все воз­мож­но­сти KDE 4.6 по умол­чанию. Но на­чи­нать с ней ра­бо­ту непро­сто, осо­бен­но ес­ли вы из­ба­ло­ва­ны под­держ­кой для но­вич­ков от Qt Creator. Мы по­ка­жем, что, одо­лев несколь­ко «ле­жа­чих по­ли­цей­ских», с соб­ст­вен­ной сре­дой раз­ра­бот­ки KDE мож­но ра­бо­тать так же про­дук­тив­но, как со сре­дой от Nokia. Разница – в под­хо­дах к но­во­му про­ек­ту.

Сис­тем­ные тре­бо­вания

Что­бы ком­пи­ли­ро­вать про­грам­мы в KDevelop, нуж­на сре­да раз­ра­бот­ки. Так­же вам по­на­до­бят­ся биб­лио­те­ки раз­ра­бот­чи­ка KDE (па­ке­ты с рас­ши­рением DEV) и все их за­ви­си­мо­сти. Чет­вер­тое по­ко­ление KDE тре­бу­ет до­полнить ста­рый ин­ст­ру­мен­та­рий make ути­ли­той cmake, по­это­му уста­но­ви­те и ее. Для про­вер­ки, что cmake уста­нов­ле­на и ра­бо­та­ет, на­бе­ри­те cmake в команд­ной стро­ке, и то же са­мое сто­ит по­про­бо­вать сде­лать с па­ке­том ис­ход­ных ко­дов KDE 4, что­бы убе­дить­ся, что все уста­нов­ле­но и го­то­во к сбор­ке. За­гру­зи­те, на­при­мер, по­след­нюю вер­сию Amarok и ском­пи­ли­руй­те ее с по­мо­щью cmake.

По­кон­чив с на­строй­кой сис­те­мы, за­пускай­те KDevelop. На фоне Qt Creator он вы­гля­дит го­лым: есть толь­ко про­стой мас­тер за­пуска и, в от­ли­чие от Creator, вспо­мо­га­тель­ных средств для на­ча­ла но­во­го про­ек­та ма­ло. Для раз­ра­бот­чи­ков KDE чис­ло шаб­ло­нов про­ек­тов, вклю­чен­ных в KDevelop, рав­но ну­лю. Здесь да­же нель­зя на­ско­ро соз­дать стар­то­вый про­ект в ка­че­­ст­ве от­прав­ной точ­ки.

Од­на­ко не все по­те­ря­но: вам не при­дет­ся на­би­рать ка­ж­дую строч­ку про­стой про­грам­мы KDE вруч­ную, что­бы по­лу­чить ба­зо­вый шаб­лон и за­ста­вить его ра­бо­тать. Эту ра­бо­ту за вас сде­ла­ет од­на из ути­лит KDE, и бла­го­да­ря вол­шеб­ст­ву cmake вы смо­же­те им­пор­ти­ро­вать на­чаль­ную струк­ту­ру про­ек­та в KDevelop с той же лег­ко­стью, как ес­ли бы про­ект был соз­дан внут­ри са­мой сре­ды. Итак, соз­дай­те се­бе ко­пию KAppTemplate, мас­те­ра за­пуска, ко­то­ро­го нет в KDevelop. Луч­ше восполь­зуй­тесь вер­си­ей из ре­по­зи­то­рия па­ке­тов сво­его ди­ст­ри­бу­ти­ва, а не той, что в Ин­тернете, по­то­му что до­маш­ная страница про­ек­та не об­нов­ля­лась несколь­ко лет.

Ра­зо­брать­ся в са­мом при­ло­жении очень лег­ко. Са­мый важ­ный шаг – вто­рой: тут вы за­дае­те тип соз­да­вае­мо­го про­ек­та. В на­шем ре­ли­зе пе­ре­чис­ле­ны 10 раз­лич­ных ти­пов про­ек­тов KDE, от мо­ду­лей рас­ши­рения Konqueror до ап­пле­тов Plasma. Тот, что нам ин­те­ре­сен – KDE 4 GUI Application, ба­зо­вый шаб­лон для боль­шин­ст­ва стан­дарт­ных при­ло­жений KDE. За­дай­те имя про­ек­та и за­тем, на треть­ем ша­ге, соз­дай­те фай­лы и со­храните их в но­вый ка­та­лог.


Те­перь им­пор­ти­руй­те этот про­ект в сре­ду KDevelop. За­крой­те мас­тер за­пуска KDevelop, ес­ли он поя­вил­ся, и вы­бе­ри­те Open/Import Project [От­крыть/Им­пор­ти­ро­вать Про­ект] в ме­ню Project [Проект]. С по­мо­щью кноп­ки вы­бо­ра фай­лов най­ди­те ка­та­лог све­же­соз­дан­но­го про­ек­та и вы­бе­ри­те файл CMakeLists.txt, ко­то­рый сгенери­ро­вал­ся в корневом ка­та­ло­ге про­ек­та root. Ес­ли вы не ви­ди­те его, убе­ди­тесь, что тек­сто­вые фай­лы есть в фильт­ре, и на­жми­те на кноп­ку Next [Далее]. Этот файл со­дер­жит все за­ви­си­мо­сти про­ек­та, и KDevelop су­ме­ет пре­об­ра­зо­вать этот про­ект в свой соб­ст­вен­ный фор­мат. На по­следнем эта­пе, им­пор­те, убе­ди­тесь, что в ка­че­­ст­ве сис­те­мы сбор­ки [Build System] вы­бран CMake Pro­ject Manager, и на­жми­те на кноп­ку Finish [Конец]. Поя­вит­ся дру­гое ок­но, где нуж­но бу­дет ука­зать рас­по­ло­жение фай­лов cmake, но ес­ли они уже на­строе­ны, зна­чения этих по­лей мож­но не ме­нять.

Ранние сбор­ки

Внешний вид KDevelop со вре­мен треть­ей вер­сии серь­ез­но пе­ре­де­лан, и хо­тя эк­ран, как пра­ви­ло, за­полнен до­воль­но плот­но, в основ­ных об­лас­тях ок­на ра­зо­брать­ся лег­ко, ес­ли вам слу­ча­лось иметь де­ло с дру­гой сре­дой раз­ра­бот­ки. На­при­мер, сле­ва на­хо­дят­ся фай­лы про­ек­та и клас­сы, со­дер­жа­щие­ся в этих фай­лах. Так­же мож­но от­крыть сра­зу несколь­ко про­ек­тов, по­это­му пе­ред ком­пи­ля­ци­ей сто­ит убе­дить­ся, что вы­бран вер­ный про­ект и его рас­по­ло­жение ука­за­но пра­виль­но. Спра­ва вы най­де­те окош­ко для про­смот­ра шаб­ло­нов ко­да, точнее, неболь­ших час­то ис­поль­зуе­мых фраг­мен­тов ко­да. На­при­мер, мож­но занести ту­да опе­ра­тор ‘for’ или ‘if’ и встав­лять их в те­ку­щую по­зи­цию кур­со­ра одним на­жа­ти­ем кноп­ки, а не на­би­рать эти кон­ст­рук­ции вруч­ную с рис­ком до­пустить ошиб­ки. Шаб­ло­ны мож­но да­же от­сор­ти­ро­вать по ка­те­го­рии: на­при­мер, по язы­ку про­грам­ми­ро­вания. Этот ком­понент взят из мо­ду­ля рас­ши­рения Kate, пре­достав­ляю­ще­го те же воз­мож­но­сти.

Пре­ж­де чем дви­гать­ся даль­ше, ском­пи­ли­руй­те но­вый про­ект, что­бы убе­дить­ся, что все ра­бо­та­ет. Для это­го на­жми­те F8 или кноп­ку Build Selection [Ском­пи­ли­ро­вать вы­бран­ный про­ект] на панели ин­ст­ру­мен­тов, пред­ва­ри­тель­но убе­див­шись, что в де­ре­ве про­ек­тов [Projects] выбран корневой ка­та­лог про­ек­та. Когда начнет­ся про­цесс ком­пи­ля­ции, вы уви­ди­те, что панель вы­во­да внизу из­менилась, и те­перь на ней вы­во­дит­ся ре­зуль­тат ра­бо­ты ко­ман­ды cmake. Там ото­бра­жа­ют­ся об­на­ру­жен­ные ошиб­ки, и ес­ли они вы­зва­ны непра­виль­ным ко­дом, мож­но щелк­нуть по ним и попаcть в со­от­вет­ст­вую­щую стро­ку фай­ла ис­ход­но­го ко­да. Это стан­дарт­ная прак­ти­ка в сре­дах раз­ра­бот­ки, по­доб­ных KDevelop, но так как ника­ко­го ко­да мы еще не на­пи­са­ли, про­блем быть не долж­но.

По­сле ком­пи­ля­ции KDevelop еще не зна­ет, где най­ти ис­пол­няе­мый файл. На­жми­те F9 или на­жми­те на кноп­ку Execute (Вы­полнить) и вы­бе­ри­те свой про­ект из спи­ска – обыч­но это вто­рой про­ект из двух пред­ло­жен­ных. Щелкните на плю­си­ке, что­бы из­менить на­строй­ки про­ек­та, и вы­бе­ри­те дво­ич­ный файл из вы­па­даю­ще­го спи­ска Project Target [Цель про­ек­та]. Ес­ли он не по­яв­ля­ет­ся, вве­ди­те его рас­по­ло­жение вруч­ную в ви­де appname /src/appname. На­жми­те Apply [Применить], и файл дол­жен за­пустить­ся. Ес­ли вам по­на­до­бит­ся вер­нуть­ся в это ок­но, восполь­зуй­тесь пунк­том Configure Launch Configuration [На­строй­ка кон­фи­гу­ра­ции за­пуска] ме­ню Run [За­пуск]. На эк­ране поя­вит­ся ок­но при­ло­жения, а на панели вы­во­да KDevelop бу­дут ото­бра­жать­ся все ошиб­ки вы­полнения. Ес­ли все ра­бо­та­ет и вы до­воль­ны, за­крой­те при­ло­жение.


Те­перь по­ра до­ба­вить немно­го сво­его функ­цио­на­ла. Са­мое боль­шое раз­ли­чие ме­ж­ду KDevelop и Qt Creator в том, что в пер­вом нет встро­ен­но­го ди­зайнера ин­тер­фей­сов. Это бы­ло бы про­бле­мой, так как в лю­бой ува­жаю­щей се­бя сре­де раз­ра­бот­ки ныне обя­зан быть ре­дак­тор ин­тер­фей­сов в том или ином ви­де. К сча­стью, на по­мощь при­хо­дит дру­гое сто­роннее при­ло­жение. На сей раз это поч­тен­ный Qt Designer, са­мо­стоя­тель­ная вер­сия то­го же ди­зайнера, что в Qt Creator. Он уже дол­жен быть уста­нов­лен как часть па­ке­тов раз­ра­бот­чи­ка Qt, ис­поль­зуе­мых в KDE 4, и его мож­но от­крыть, за­пустив ис­пол­няе­мый файл designer-qt4.

По су­ти, Qt Designer – это тот же са­мый ком­понент Qt Creator, но в этой вер­сии вы долж­ны най­ти не толь­ко спи­сок вид­же­тов Qt, но и вид­же­ты KDE. Они пе­ре­чис­ле­ны на боль­шой панели сле­ва, и с ее по­мо­щью вид­же­ты мож­но до­ба­вить в ок­на сво­ей про­грам­мы. У на­ше­го при­ло­жения-шаб­ло­на уже есть ин­тер­фейс, и, к сча­стью, он не же­ст­ко за­шит в ис­ход­ных фай­лах, а ис­поль­зу­ет фор­мат фай­ла Qt Designer – UI. Что­бы за­гру­зить этот файл, про­пусти­те мас­тер соз­дания но­вой фор­мы, по­яв­ляю­щий­ся при пер­вом за­пуске при­ло­жения, и че­рез ме­ню Open [От­крыть] пе­рей­ди­те в ка­та­лог с ис­ход­ным ко­дом про­ек­та src. В нем на­хо­дят­ся две фор­мы UI – од­на для ок­на при­ло­жения и од­на для диа­ло­га на­стро­ек [Preferences]. Нам ин­те­ре­сен файл глав­но­го ок­на при­ло­жения appview_base.ui.

За­гру­зив этот файл, вы долж­ны уви­деть нечто по­хо­жее на вы­пол­няю­щую­ся про­грам­му. Ок­но со­сто­ит из един­ст­вен­ной мет­ки внут­ри чер­но­го квад­ра­та, безо вся­кой иронии го­во­ря­щей ‘hello, world’. В от­ли­чие от окон­ча­тель­ной вер­сии про­грам­мы, вы не уви­ди­те в этом окне ме­ню и панель ин­ст­ру­мен­тов. Оба эти эле­мен­та до­бав­ля­ют­ся поз­же в ис­ход­ном ко­де про­ек­та. Мы убе­рем вид­жет мет­ки и за­меним его чем-нибудь бо­лее функ­цио­наль­ным. Для это­го ак­ку­рат­но вы­де­ли­те его мы­шью и на­жми­те кла­ви­шу Delete. При­ят­но то, что в пол­ном вид­же­тов Designer мож­но сво­бод­но пе­ре­тас­ки­вать вид­же­ты в свое при­ло­жение и уда­лять их от­ту­да, не бес­по­ко­ясь об ис­ход­ном ко­де. На­при­мер, мож­но до­ба­вить но­вый вид­жет KDE WebKit, мгно­вен­но на­де­лив свое при­ло­жение са­мым со­вре­мен­ным web-ин­тер­фей­сом, или до­ба­вить спи­сок про­цес­сов из спи­ска вид­же­тов KSysGuard. По­сле до­бав­ления в ис­ход­ный код про­ек­та ин­фор­ма­ции о за­го­ло­воч­ных фай­лах оба вид­же­та бу­дут ра­бо­тать без вся­ких до­полнитель­ных дей­ст­вий.

Од­на­ко в на­шем про­ек­те мы за­меним вид­жет мет­ки вид­же­том KRichTextEdit. Он де­ла­ет имен­но то, о чем вы по­ду­ма­ли, пре­достав­ляя поль­зо­ва­те­лю панель ре­дак­ти­ро­вания тек­ста с за­дан­ны­ми шриф­том, раз­ме­ром, вы­де­лением жир­ным и кур­си­вом. Впро­чем, он не по­зво­ля­ет из­ме­нять эти па­ра­мет­ры, чем мы и зай­мем­ся да­лее.

Сиг­на­лы и сло­ты

Со­храните свою ра­бо­ту в Qt Designer и вернитесь в KDevelop. Пре­ж­де чем пе­ре­ком­пи­ли­ро­вать при­ло­жение, что­бы уви­деть на­ши из­менения в ин­тер­фей­се, нуж­но уб­рать все сле­ды мет­ки, ко­то­рую мы унич­то­жи­ли в Designer. Их мож­но най­ти в фай­лах appview.cpp (ко всем ис­поль­зуе­мым здесь име­нам фай­лов спе­ре­ди нуж­но до­ба­вить на­звание про­ек­та). Най­ди­те две стро­ки, ссы­лаю­щие­ся на вид­жет kcfg_sillyLabel, ко­то­рый мы уда­ли­ли с фор­мы. За­ком­мен­ти­руй­те их, до­ба­вив в на­ча­ле стро­ки // , или уда­ли­те. Ес­ли те­перь ском­пи­ли­ро­вать и за­пустить про­ект, вы уви­ди­те, что на мес­те мет­ки поя­ви­лось ок­но тек­сто­во­го ре­дак­то­ра, и в него мож­но вве­сти текст. Щелк­нув на нем пра­вой кноп­кой мы­ши, вы так­же смо­же­те ско­пи­ро­вать, вы­ре­зать и вста­вить текст, а так­же вы­ полнить спе­ци­фич­ные для KDE за­да­чи, та­кие как пе­ре­вод и про­вер­ку ор­фо­гра­фии. Они за­ви­сят от ис­поль­зуе­мой уста­нов­ки KDE, но по­яв­ля­ют­ся в про­грам­ме са­ми.

Однако са­ми не по­яв­ля­ют­ся воз­мож­но­сти, обя­зан­ные быть в при­лич­ном тек­сто­вом ре­дак­то­ре – а имен­но, вы­де­ление тек­ста жир­ным и кур­си­вом и воз­мож­ность из­ме­нять стиль шриф­та. В ре­дак­то­ре есть этот функ­цио­нал, но ожи­да­ет­ся, что ин­тер­фейс реа­ли­зу­ют са­ми раз­ра­бот­чи­ки. И в Qt, и в KDE это оз­на­ча­ет ра­бо­ту с сиг­на­ла­ми и сло­та­ми. С их по­мо­щью ком­понен­ты в обо­их сре­дах взаи­мо­дей­ст­ву­ют друг с дру­гом, об­ра­зуя нечто вро­де тру­бо­про­во­да. На­при­мер, один от­прав­ля­ет сиг­нал, ти­па на­жа­тия кноп­ки, а дру­гой принима­ет это дей­ст­вие и от­прав­ля­ет его в слот, та­кой как вы­де­ление вы­бран­но­го фраг­мен­та жир­ным шриф­том в тек­сто­вом ре­дак­то­ре. В ре­зуль­та­те боль­шин­ст­во при­ло­жений в KDE и Qt со­сто­ят из се­ти со­единений со­бы­тий с фраг­мен­та­ми ко­да, ко­то­рые их об­ра­ба­ты­ва­ют, и опи­сание сиг­на­лов и сло­тов ка­ж­до­го вид­же­та занима­ет боль­шую часть до­ку­мен­та­ции API обо­их сред.

Мы до­ба­вим кноп­ку на панель ин­ст­ру­мен­тов и восполь­зу­ем­ся сиг­на­лом «на­жа­то» [pressed] этой кноп­ки для ак­ти­ва­ции од­ной из функ­ций фор­ма­ти­ро­вания в тек­сто­вом ре­дак­то­ре. Панели ин­ст­ру­мен­тов и ме­ню в KDE об­ра­ба­ты­ва­ют­ся не так, как дру­гие эле­мен­ты ин­тер­фей­са, по­это­му их не вид­но в Designer. Так про­ис­хо­дит по­то­му, что они на­зы­ва­ют­ся дей­ст­вия­ми, а не вид­же­та­ми; их мож­но лег­ко до­ба­вить, пе­ре­мес­тить и из­менить их на­строй­ки. Имен­но по­это­му, на­при­мер, поч­ти во всех при­ло­жениях KDE есть лег­ко на­страи­вае­мая панель ин­ст­ру­мен­тов. Рас­по­ло­жение ико­нок на панели ин­ст­ру­мен­тов мож­но най­ти в основ­ном фай­ле на­строй­ки при­ло­жения, и по­сле то­го как ути­ли­та KDE уста­нов­ле­на, этот файл бу­дет на­хо­дить­ся в глав­ном ка­та­ло­ге с кон­фи­гу­ра­ци­ей KDE, ко­то­рый за­ви­сит от ди­ст­ри­бу­ти­ва. Из KDevelop этот файл мож­но от­крыть с по­мо­щью двой­но­го щелч­ка на фай­ле RC в окне Project.

В этом фай­ле уже есть запись для дей­ст­вия пунк­та ме­ню Move, и мы за­меним ее, соз­дав вме­сто нее дей­ст­вие Bold. Нам по­тре­бу­ет­ся из­менить имя по­ля на bold, и текст то­же на Bold, но са­мая важ­ная часть это­го фай­ла – по­ле дей­ст­вия. По­че­му? По­то­му, что на это по­ле на­прав­ле­на ссыл­ка на код из фай­ла на­строй­ки. По­это­му вам нуж­но соз­дать имя дей­ст­вия, ко­то­рое мы так­же до­ба­вим и в при­ло­жение – пусть это бу­дет makeBold. Со­храните файл и от­крой­те глав­ный ис­ход­ный файл про­ек­та (appname.cpp).

Ме­тод в дей­ст­вии

Сиг­на­лы и сло­ты для ка­ж­до­го дей­ст­вия за­да­ют­ся в ме­то­де setupActions; это са­мый верхний блок ко­да в фай­ле. В нем бу­дет на­хо­дить­ся един­ст­вен­ное дей­ст­вие дли­ной в три стро­ки ко­да, на­звание ко­то­ро­го на­чи­на­ет­ся с KAction. Мы из­меним его так, что вме­сто него бу­дет ис­поль­зо­вать­ся дей­ст­вие Bold. Стро­ка KIcon в пер­вой строч­ке – ссыл­ка на изо­бра­жение, ис­поль­зу­емое для икон­ки. В KDE есть мно­же­ст­во стан­дарт­ных изо­бра­жений для ико­нок, и, к сча­стью, сре­ди них есть од­но для обо­зна­чения вы­де­ления тек­ста. Оно на­зы­ва­ет­ся format-text-bold. Сле­дую­щую стро­ку в той же са­мой стро­чке нуж­но за­менить на bold. Это текст, ко­то­рый мы уви­дим в при­ло­жении, и он по­ме­щен внутрь функ­ции i18n, так что пе­ре­во­дчи­ки смо­гут лег­ко ло­ка­ли­зо­вать текст. Этой же схе­мой сле­ду­ет поль­зо­вать­ся для лю­бой стро­ки, ко­то­рую ви­дит поль­зо­ва­тель.

В стро­ке, сле­дую­щей за KAction, обе стро­ки нуж­но за­менить на bold, и пер­вая ис­поль­зу­ет­ся для свя­зи это­го дей­ст­вия с на­званием пунк­та ме­ню в кон­фи­гу­ра­ци­он­ном фай­ле. На­конец, в по­следней стро­ке кон­фи­гу­ра­ции мы за­да­ем сиг­нал и слот, и она долж­на вы­гля­деть сле­дую­щим об­ра­зом:


 connect(bold, SIGNAL(triggered(bool)), m_view, SLOT(setBold()));

Она свя­зы­ва­ет сиг­нал, от­прав­ляе­мый пунк­том ме­ню bold, со сло­том setBold в при­ло­жении. Прав­да, мы еще не соз­да­ли слот setBold. Как вы ви­ди­те из вы­зо­ва функ­ции connect, при­ло­жение ожи­да­ет, что этот слот бу­дет на­хо­дить­ся в объ­ек­те m_view, и это свя­за­но с ко­дом в за­го­ло­воч­ном фай­ле appname_view и ис­ход­ных фай­лах. Сна­ча­ла от­крой­те за­го­ло­воч­ный файл и до­бавь­те ди­рек­ти­ву #include “krichtextwidget.h” к спи­ску ди­рек­тив в на­ча­ле фай­ла, а ме­тод void setBold(); — в раз­дел при­ват­ных сло­тов это­го ме­то­да. Эта функ­ция бу­дет при­емником на­ше­го сиг­на­ла, и те­перь нуж­но до­ба­вить код об­ра­бот­ки вхо­дя­ще­го сиг­на­ла в глав­ный файл CCP. От­крой­те файл view.cpp и соз­дай­те в нем сле­дую­щую функ­цию:

 void appnameView::setBold()
 { ui_appnameview_base.krichtextwidget->setTextBold(true);
 }

Ав­то­до­полнение ко­да по­мо­жет вам при пе­ре­име­но­вании фай­лов при­ло­жения сво­его про­ек­та, а так­же при по­ис­ке ме­то­да bold в вид­же­те тек­сто­во­го ре­дак­то­ра. Вот и все, что необ­хо­ди­мо для то­го, что­бы тек­сто­вый ре­дак­тор за­ра­бо­тал, и вы ви­ди­те, как лег­ко до­ба­вить в та­кой ре­дак­тор все осталь­ные необ­хо­ди­мые функ­ции.

Впро­чем, по­сле ком­пи­ля­ции и за­пуска при­ло­жения вас ждет раз­оча­ро­вание: в панели ин­ст­ру­мен­тов нет ни сле­да но­вой икон­ки. Де­ло в том, что дей­ст­вие-то мы до­ба­ви­ли, но не вста­ви­ли его в кон­фи­гу­ра­цию панели ин­ст­ру­мен­тов. Щелк­нув на панели ин­ст­ру­мен­тов пра­вой кноп­кой мы­ши и вы­брать пункт ме­ню Configure Toolbars [На­стро­ить панели ин­ст­ру­мен­тов], вы уви­ди­те, что в спи­ске сле­ва есть дей­ст­вие Bold. Вы­брав это дей­ст­вие и щелк­нув по стрел­ке впра­во, мож­но пе­ре­мес­тить его на ак­тив­ную панель ин­ст­ру­мен­тов.

По вы­хо­ду из это­го ок­на на панели ин­ст­ру­мен­тов поя­вит­ся на­ша кноп­ка, и ее на­жа­тие сде­ла­ет вы­де­лен­ный текст жир­ным. Ес­ли вы хо­ти­те, что­бы икон­ка бы­ла в на­ча­ле панели ин­ст­ру­мен­тов, за­крой­те про­грам­му и взгляните на файл appui.rc, ко­то­рый на­хо­дит­ся в ва­шем до­машнем ка­та­ло­ге в ка­та­ло­ге .kde/share/appname. Это со­хранен­ное со­стояние ва­ше­го при­ло­жения, и его мож­но ско­пи­ро­вать в ка­та­лог с ис­пол­няе­мым фай­лом при­ло­жения, тем са­мым за­дав на­строй­ки и рас­по­ло­жение ком­понен­тов при­ло­жения.

Конеч­но, что­бы от ва­ше­го при­ло­жения был прок, нуж­но сде­лать еще очень мно­го, но с по­мо­щью рас­смот­рен­ных на­ми прие­мов до­бав­ление но­во­го функ­цио­на­ла (да­же неотъ­ем­ле­мой функ­ции со­хранения) не долж­но пред­став­лять для вас осо­бых труд­но­стей. В вид­же­те ре­дак­то­ра так­же есть ме­тод textOrHtml, ко­то­рый вы­ве­дет HTML-код для ре­дак­ти­руе­мо­го фай­ла, а уж пе­ре­слать его во внешний файл неслож­но. Про­сто поль­зуй­тесь до­ку­мен­та­ци­ей и под­свет­кой син­так­си­са KDevelop и со­об­щи­те нам о сво­их ус­пе­хах.

KDevelop 4.2

KDevelop 4.2

Персональные инструменты
купить
подписаться
Яндекс.Метрика