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 01:33 | Zajímavý projekt

    Singularity je rootkit ve formě jaderného modulu (Linux Kernel Module), s otevřeným zdrojovým kódem dostupným pod licencí MIT. Tento rootkit je určený pro moderní linuxová jádra 6.x a poskytuje své 'komplexní skryté funkce' prostřednictvím hookingu systémových volání pomocí ftrace. Pro nadšence je k dispozici podrobnější popis rootkitu na blogu autora, případně v článku na LWN.net. Projekt je zamýšlen jako pomůcka pro bezpečnostní experty a výzkumníky, takže instalujte pouze na vlastní nebezpečí a raději pouze do vlastních strojů 😉.

    NUKE GAZA! 🎆 | Komentářů: 0
    včera 21:22 | Zajímavý projekt

    Iconify je seznam a galerie kolekcí vektorových open-source ikon, ke stažení je přes 275000 ikon z více jak dvou set sad. Tento rovněž open-source projekt dává vývojářům k dispozici i API pro snadnou integraci svobodných ikon do jejich projektů.

    NUKE GAZA! 🎆 | Komentářů: 0
    včera 03:33 | IT novinky

    Dle plánu certifikační autorita Let's Encrypt nově vydává také certifikáty s šestidenní platností (160 hodin) s možností vystavit je na IP adresu.

    Ladislav Hagara | Komentářů: 6
    17.1. 14:44 | Nová verze

    V programovacím jazyce Go naprogramovaná webová aplikace pro spolupráci na zdrojových kódech pomocí gitu Forgejo byla vydána ve verzi 14.0 (Mastodon). Forgejo je fork Gitei.

    Ladislav Hagara | Komentářů: 3
    17.1. 13:11 | Zajímavý projekt

    Just the Browser je projekt, 'který vám pomůže v internetovém prohlížeči deaktivovat funkce umělé inteligence, telemetrii, sponzorovaný obsah, integraci produktů a další nepříjemnosti' (repozitář na GitHubu). Využívá k tomu skrytá nastavení ve webových prohlížečích, určená původně pro firmy a organizace ('enterprise policies'). Pod linuxem je skriptem pro automatickou úpravu nastavení prozatím podporován pouze prohlížeč Firefox.

    NUKE GAZA! 🎆 | Komentářů: 3
    16.1. 16:44 | Nová verze

    Svobodný multiplatformní herní engine Bevy napsaný v Rustu byl vydán ve verzi 0.18. Díky 174 přispěvatelům.

    Ladislav Hagara | Komentářů: 2
    16.1. 15:11 | IT novinky

    Miliardy korun na digitalizaci služeb státu nestačily. Stát do ní v letech 2020 až 2024 vložil víc než 50 miliard korun, ale původní cíl se nepodařilo splnit. Od loňského února měly být služby státu plně digitalizované a občané měli mít právo komunikovat se státem digitálně. Do tohoto data se povedlo plně digitalizovat 18 procent agendových služeb státu. Dnes to uvedl Nejvyšší kontrolní úřad (NKÚ) v souhrnné zprávě o stavu digitalizace v Česku. Zpráva vychází z výsledků víc než 50 kontrol, které NKÚ v posledních pěti letech v tomto oboru uskutečnil.

    Ladislav Hagara | Komentářů: 25
    16.1. 13:55 | IT novinky

    Nadace Wikimedia, která je provozovatelem internetové encyklopedie Wikipedia, oznámila u příležitosti 25. výročí vzniku encyklopedie nové licenční dohody s firmami vyvíjejícími umělou inteligenci (AI). Mezi partnery encyklopedie tak nově patří Microsoft, Amazon a Meta Platforms, ale také start-up Perplexity a francouzská společnost Mistral AI. Wikimedia má podobnou dohodu od roku 2022 také se společností Google ze skupiny

    … více »
    Ladislav Hagara | Komentářů: 0
    16.1. 02:22 | Nová verze

    D7VK byl vydán ve verzi 1.2. Jedná se o fork DXVK implementující překlad volání Direct3D 5, 6 a 7 na Vulkan. DXVK zvládá Direct3D 8, 9, 10 a 11.

    Ladislav Hagara | Komentářů: 0
    16.1. 02:00 | Nová verze

    Byla vydána verze 12.0.0 knihovny libvirt (Wikipedie) zastřešující různé virtualizační technologie a vytvářející jednotné rozhraní pro správu virtuálních strojů. Současně byl ve verzi 12.0.0 vydán související modul pro Python libvirt-python. Přehled novinek v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    Které desktopové prostředí na Linuxu používáte?
     (17%)
     (5%)
     (0%)
     (9%)
     (19%)
     (3%)
     (6%)
     (2%)
     (11%)
     (40%)
    Celkem 506 hlasů
     Komentářů: 14, poslední včera 10:22
    Rozcestník

    Začíname KProgramovať - III

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

    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.