abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 14:22 | Zajímavý článek

    Github publikoval Octoverse 2025 (YouTube), tj. každoroční přehled o stavu open source a veřejných softwarových projektů na GitHubu. Každou sekundu se připojil více než jeden nový vývojář. Nejpoužívanějším programovacím jazykem se stal TypeScript.

    Ladislav Hagara | Komentářů: 0
    dnes 09:55 | Komunita

    Kit je nový maskot webového prohlížeče Firefox.

    Ladislav Hagara | Komentářů: 12
    dnes 00:11 | Nová verze

    Mastodon (Wikipedie) - sociální síť, která není na prodej - byl vydán ve verzi 4.5. Přehled novinek s náhledy v oznámení na blogu.

    Ladislav Hagara | Komentářů: 1
    včera 23:55 | IT novinky

    Německo zvažuje, že zaplatí místním telekomunikačním operátorům včetně Deutsche Telekom, aby nahradili zařízení od čínské firmy Huawei. Náklady na výměnu by mohly přesáhnout dvě miliardy eur (bezmála 49 miliard Kč). Jeden scénář počítá s tím, že vláda na tento záměr použije prostředky určené na obranu či infrastrukturu.

    Ladislav Hagara | Komentářů: 1
    včera 18:00 | Komunita

    Po dvaceti letech skončil leader japonské SUMO (SUpport.MOzilla.org) komunity Marsf. Důvodem bylo nasazení sumobota, který nedodržuje nastavené postupy a hrubě zasahuje do překladů i archivů. Marsf zároveň zakázal použití svých příspěvků a dat k učení sumobota a AI a požádal o vyřazení svých dat ze všech učebních dat.

    karkar | Komentářů: 7
    včera 11:00 | IT novinky

    Úřad pro ochranu hospodářské soutěže zahajuje sektorové šetření v oblasti mobilních telekomunikačních služeb poskytovaných domácnostem v České republice. Z poznatků získaných na základě prvotní analýzy provedené ve spolupráci s Českým telekomunikačním úřadem (ČTÚ) ÚOHS zjistil, že vzájemné vztahy mezi operátory je zapotřebí detailněji prověřit kvůli možné nefunkčnosti některých aspektů konkurence na trzích, na nichž roste tržní podíl klíčových hráčů a naopak klesá význam nezávislých virtuálních operátorů.

    Ladislav Hagara | Komentářů: 16
    včera 10:55 | Humor

    Různé audity bezpečnostních systémů pařížského muzea Louvre odhalily závažné problémy v oblasti kybernetické bezpečnosti a tyto problémy přetrvávaly déle než deset let. Jeden z těchto auditů, který v roce 2014 provedla francouzská národní agentura pro kybernetickou bezpečnost, například ukázal, že heslo do kamerového systému muzea bylo „Louvre“. 😀

    Ladislav Hagara | Komentářů: 15
    včera 01:00 | Komunita

    Z upstreamu GNOME Mutter byl zcela odstraněn backend X11. GNOME 50 tedy poběží už pouze nad Waylandem. Aplikace pro X11 budou využívat XWayland.

    Ladislav Hagara | Komentářů: 19
    včera 00:00 | IT novinky

    Byl publikován plán na odstranění XSLT z webových prohlížečů Chrome a Chromium. S odstraněním XSLT souhlasí také vývojáři Firefoxu a WebKit. Důvodem jsou bezpečnostní rizika a klesající využití v moderním webovém vývoji.

    Ladislav Hagara | Komentářů: 1
    5.11. 15:55 | Nová verze

    Desktopové prostředí LXQt (Lightweight Qt Desktop Environment, Wikipedie) vzniklé sloučením projektů Razor-qt a LXDE bylo vydáno ve verzi 2.3.0. Přehled novinek v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    Jaké řešení používáte k vývoji / práci?
     (35%)
     (48%)
     (18%)
     (17%)
     (22%)
     (15%)
     (21%)
     (16%)
     (16%)
    Celkem 321 hlasů
     Komentářů: 15, poslední 2.11. 08:25
    Rozcestník

    Začíname KProgramovať - III

    7. 2. 2003 | Ondrej Krsko | Programování | 8782×

    Další ovládací prvky a dialogová okna. Layout Management. AbcZilla.

    Layout Management

    Dnes budem pokračovať v predstavovaní ovládacích prvkov a takisto sa pozrieme na štandartné dialógové okná. Spomeniem napríklad KFileDialog. Začnem ale opäť dlhším teoretickým úvodom - popíšem správcov rozloženia ovládacích prvkov (Layout Management).

    Doteraz sme pri programovaní sami určovali rozloženie ovládacích prvkov a ich veľkosť. Vytváranie formulárov týmto spôsobom ale vedie k viacerým problémom:

  • internacionálizacia programov: Tento proces som ešte nespomínal, ale dostanem sa k nemu v niektorom z ďalších dielov. Stručne prezradím, že KDE umožňuje veľmi ľahko vytvoriť rôzne jazykové mutácie programu. Preto sa zadávaním pevnej veľkosti prvku môže stať, že nie celý text sa "vmestí" do zadaného priestoru.
  • fonty: Podobný problém môžu spôsobiť aj rôzne fonty.
  • problematické zadávanie súradníc: Hodiť na formulár dva prvky ako v príklade z minulej časti nie je naozaj ťažké. Pri väčších formulároch to už nemusí byť veľmi zábavné.
  • zmena veľkosti: Ak užívateľ zmení veľkosť okna, prvky sa neprispôsobia a dostanú sa napríklad za hranice okna. Možete zakázať meniť veľkosť okna, nie vždy s tým ale bude spokojný aj užívateľ.
  • štýly: KDE umožňuje meniť vzhľad aplikácii. Prvky môžu vyzerať úplne inak v porovnaní s tým, ako predpokladáte vy.
  • Aká existuje alternatíva? Knižnica Qt poskytuje pokročilý layout systém. Nebudem ho popisovať do detailov, pretože neskôr začneme používať Qt Designer na návrh dialógov. Aj tu treba ale vedieť, že niečo ako layout management existuje. Takže, poďme sa pozrieť ako na to.

    Aj takto môže vyzerať program z predchádzajúceho dielu:

    AbcLinuxu.cz Browser

    Aj vy radi navštevujete AbcLinuxu? Spravíme si vlastný browser, ktorý bude po spustení otvárať stránku abclinuxu.cz. Nepôjde o akýsi hlúpy prehliadač, ktorý okrem tagu body a head nič iné nepozná. Využijeme prvok KHTMLPart, ktorý je použitý napríklad v prehliadači Konqueror (kvôli tomuto prehliadaču bol vlastne vytvorený).

    Výsledný program bude vyzerať takto:

    Ako ste si určite všimli, program sa skladá z:

    • menu (KMenu)
    • navigačné tlačítka (QPushButton)
    • adresa (KLineEdit)
    • prehliadač (KHTMLPart)

    Menu, tlačítka a textový riadok už vytvoriť vieme. Nový je len KHTMLPart. Pozostáva z dvoch častí. Jedna slúži na udržiavanie spracovaných dát HTML dokumentu (DOM) a z KHTMLView. KHTMLView je potomok triedy QScrollView, ktorý implementuje renderovanie HTML. Pozrime sa teda na konštruktor hlavného okna (nie je to kompletný výpis, vybral som len najzaujímavejšie časti:-).

    1. ...
    2. QVBox * vbox = new QVBox ( this );
    3. QHBox * hbox = new QHBox ( vbox );
    4.  
    5. btnNav1 = new QPushButton (i18n("AbcLinuxu"), hbox );
    6. btnNav2 = new QPushButton (i18n("AbcPalírna"), hbox );
    7. btnNav3 = new QPushButton (i18n("Hardware"), hbox );
    8.  
    9. location = new KLineEdit ( vbox );
    10. location->setText( "http://www.abclinuxu.cz/" );
    11.  
    12. browser=new KHTMLPart( vbox );
    13. browser->setJavaEnabled(true);
    14. browser->setJScriptEnabled(true);
    15. browser->openURL( location->text() );
    16.  
    17. setCentralWidget( vbox );

    Na riadku číslo 2 a 3 vytváram dvoch správcov rozloženia. Ich rozloženie bude takéto:

    Ako hlavný správca je použitý QVBox. Ten ukladá všetky svoje prvky vertikálne (postupne pod seba). Ich veľkosti prispôsobuje podľa metódy QWidget:: sizeHint(), ktorá udržiava informácie o "odporúčaných" veľkostiach pre prvok. Ďalší použitý správca je QHBox, ktorý vytváram na riadku 3. Ten funguje podobne ako QVBox, ale ukladá prvky horizontálne (vedľa seba). Ako jeho rodiča uvádzam už vytvorený QVBox.

    Na riadku 5, 6 a 7 vytvorím tri tlačítka, ktoré sú vložené do QHBoxu. Určite ste si všimli, že nikde nie je zadaná ich veľkosť. O tú sa postará automaticky správca rozloženia. Ďalej vložím pod QHBox ovládací prvok KLineEdit a KHTMLPart. Po vytvorení povolím JavaScript a Javu (tie sú štandartne zakázané, šikovnejšie by bolo asi prečítať nastavenia Konqueroru).

    Ďalej musíme vytvoriť ešte obsluhu kliknutia na tlačítka, stlačenia klávesu enter v KLineEdite a pridať obsluhu signálu openURLRequest. Ten je vyvolaný pri zmene URL v KHTMLPart (napríklad po kliknutí na odkaz, presmerovaní, atď). Spracovanie kliknutia je jednoduché, stačí nasmerovať prehliadač na definovanú adresu, napríklad pomocou metódy openURL().

    Štandartné dialógové okná

    Štandartné dialógové okná sú už predpripravené dialógy. Vďaka nim docielime štandartný vzhľad aplikácie (bolo by zvláštne, keby každá aplikácia používala iný dialóg na výber súboru). KDE ponúka pomerne veľa takýchto dialógov, pozrieme sa na niektoré z nich:

    • KFileDialog je asi najčastejšie používaný. Slúži na výber súboru. Jedná sa o pomerne prepracovaný dialóg (aspon v KDE 3.x). Obsahuje zoznam často používaných adresárov, dokáže filtrovať zoznam súborov, ponúka možnosť náhľadu (resp. automatického náhľadu) na súbor ešte pred jeho vybratím.
    • KDirSelectDialog slúži na výber adresára. Zobrazuje štruktúru súborového systému v prehľadnom strome.
    • KIconDialog ponúka zoznam systémových ikon (zatriedených do viacerých kategórií) alebo možno vybrať ikonu priamo z disku.

    Ďalšie dialógy nájdete v KDE dokumentácii. V ukážkovom programe som do menu súbor pridal 3 položky, každá zodpovedá jednému dialógovému oknu. Obsluha kliknutia na tieto položky je jednoduchá:

    1. void KHello::fileFileDialog() {
    2.  KURL filename = KFileDialog: :getOpenURL( QString::null, "*", this );
    3.  KMessageBox: :information( 0, filename.url(), i18n ( "Information" ), "fileOpenInformationDialog" );
    4. }
    5.  
    6. void KHello::fileDirSel() {
    7.   KURL dirname = KDirSelectDialog::selectDirectory( );
    8.  KMessageBox::information ( 0, dirname.url(), i18n( "Information" ), "fileOpenInformationDialog" );
    9. }
    10.  
    11. void KHello::fileIconDialog() {
    12.   QString iconname = KIconDialog::getIcon( );
    13.  KMessageBox::information ( 0, iconname, i18n( "Information" ), "fileOpenInformationDialog" );
    14. }

    Ako vidíte, použitie dialógov nie je nič zložité. Netreba vytvárať žiadne objekty, stačí zavolať statickú metódu slúžiacu na zobrazenie dialógu (napríklad KFileDialog::getOpenURL). KFileDialog a KDirSelectDialog vracajú ako parameter URL (v minulej časti som spomínal KIO, ktoré zabezpečuje rovnakú prácu so súbormi bez ohľadu na to, kde sa nachádzajú). KIconDialog má ako návratovú hodnotu QString. Celý program si môžete stiahnuť tu.

    Nabudúce...

    Nabudúce začneme používať pohodlnejšie nástroje na vývoj programov pre KDE. Ako hlavné vývojové prostredie som si vybral KDevelop. Nová verzia 3.0 je na "spadnutie", zatiaľ si ale vystačíme s verziami 2.x.x. Ak ešte nemáte KDevelop nainštalovaný, choďte na domácu stránku projektu www.kdevelop.org.

    Okrem KDevelopu budeme potrebovať Qt Designer na návrh užívateľského rozhrania. Ak ho nemáte, pozrite sa na stránku www.trolltech.com. Qt Designer aj KDevelop sú ale súčasťou väčšiny distribúcií, takže by ste ich mali mať už nainštalované. Určite sa máte na čo tešiť, tieto nástroje vám uľahčia veľa práce (dúfam, že sa do mňa nepustia žiadny zástancovia ručného kódovanie užívateľského rozhrania, ktorý si myslia, že tieto nástroje sú len pre nováčikov, ktorý si nechcú špiniť ruky v textovom editore:-).

    Takže si pripravte tieto dva nástroje, budete ich čoskoro potrebovať!

           

    Hodnocení: 37 %

            špatnédobré        

    Nástroje: Tisk bez diskuse

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    Komentáře

    Vložit další komentář

    7.2.2003 10:54 andrej
    Rozbalit Rozbalit vše KDE 3.1
    Ahoj, bude tento serial aj o programovani pre KDE 3.1 ??? Dakuje Andre
    10.2.2003 01:40 Ondrej Krsko | skóre: 17
    Rozbalit Rozbalit vše KDE 3.1
    Ahoj. KDE3.1 by sa nemalo moc lysit od KDE3.0.x. Ak by som nasiel nejaku vec, ktora sa zmenila, tak v seriali na to upozornim.
    10.2.2003 14:43 L.Lunak
    Rozbalit Rozbalit vše KDE 3.1
    KDE 3.1 je zpetne kompatibilni s KDE3.0, takze jedina vec, ktera se muze "zmenit", je pridani novych veci.
    17.7.2006 22:01 Euroska
    Rozbalit Rozbalit vše Re: Začíname KProgramovať - III
    Zdravim... Chtel sem se neco naucit o QT, ale ztroskotal jsem na KHTML_Part... Prvni sem si myslel, ze sem neco jen spatne opsal/zkopci, ale na http://developer.kde.org/ je to stejne...

    Nechce se prekousat pres radek
    browser=new KHTMLPart( vbox );
    a reaguje na to:
    /home/Programovani/khello/src/khello.cpp:45: undefined reference to `KHTMLPart::KHTMLPart(QWidget*, char const*, QObject*, char const*, KHTMLPart::GUIProfile)'
    
    Zdrojaky jsou stejne, jako v priklade...Pozivam KDevelop.. Kdyby nekdo tusil, cim to muze byt, byl bych mu moc vdecny :)
    9.11.2006 18:59 Euroska
    Rozbalit Rozbalit vše Re: Začíname KProgramovať - III
    Takze chybela nactena knihovna -lkhtml.. Sry za blby dotaz.

    Založit nové vláknoNahoru

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.