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í
×

včera 23:55 | Pozvánky

Spolek OpenAlt zve příznivce otevřených technologií a otevřeného přístupu na 145. brněnský sraz, který proběhne v pátek 20. října od 18:00 hodin v restauraci Time Out na adrese Novoměstská 2 v Řečkovicích. Jedná se o poslední sraz před konferencí OpenAlt 2017, jež proběhne o víkendu 4. a 5. listopadu 2017 na FIT VUT v Brně. Běží registrace účastníků.

Ladislav Hagara | Komentářů: 0
včera 21:44 | Nová verze

Byla vydána verze 5.2.0 multiplatformního virtualizačního nástroje Oracle VM VirtualBox. Jedná se o první stabilní verzi z nové větve 5.2. Z novinek lze zmínit například možnost exportování VM do Oracle Cloudu, bezobslužnou instalaci hostovaného systému nebo vylepšené GUI. Podrobnosti v seznamu změn. Aktualizována byla také dokumentace.

Ladislav Hagara | Komentářů: 1
včera 14:00 | Zajímavý projekt

Byl spuštěn Humble Down Under Bundle. Za vlastní cenu lze koupit multiplatformní hry The Warlock of Firetop Mountain, Screencheat, Hand of Fate a Satellite Reign. Při nadprůměrné platbě (aktuálně 3,63 $) také Hacknet, Hacknet Labyrinths, Crawl a Hurtworld. Při platbě 12 $ a více lze získat navíc Armello.

Ladislav Hagara | Komentářů: 0
včera 13:00 | Nová verze

Google Chrome 62 byl prohlášen za stabilní (YouTube). Nejnovější stabilní verze 62.0.3202.62 tohoto webového prohlížeče přináší řadu oprav a vylepšení. Vylepšeny byly také nástroje pro vývojáře (YouTube). Opraveno bylo 35 bezpečnostních chyb.

Ladislav Hagara | Komentářů: 2
včera 11:00 | Zajímavý článek

Článek (en) na Mozilla.cz je věnován vykreslování stránek ve Firefoxu. V průběhu roku 2018 by se ve Firefoxu měl objevit WebRender, jenž by měl vykreslování stránek urychlit díky využití GPU.

Ladislav Hagara | Komentářů: 4
včera 08:22 | Bezpečnostní upozornění

NÚKIB (Národní úřad pro kybernetickou a informační bezpečnost) informuje o zranitelnosti ROCA v procesu generování RSA klíčů, který se odehrává v softwarové knihovně implementované například v kryptografických čipových kartách, bezpečnostních tokenech a dalších hardwarových čipech vyrobených společností Infineon Technologies AG. Zranitelnost umožňuje praktický faktorizační útok, při kterém útočník dokáže vypočítat

… více »
Ladislav Hagara | Komentářů: 3
včera 01:23 | Zajímavý software

Příspěvek na blogu otevřené certifikační autority Let's Encrypt informuje o začlenění podpory protokolu ACME (Automatic Certificate Management Environment) přímo do webového serveru Apache. Klienty ACME lze nahradit novým modulem Apache mod_md. Na vývoj tohoto modulu bylo uvolněno 70 tisíc dolarů z programu Mozilla Open Source Support (MOSS). K rozchození HTTPS na Apache stačí nově přidat do konfiguračního souboru řádek s ManagedDomain. Minutový videonávod na YouTube [reddit].

Ladislav Hagara | Komentářů: 2
17.10. 14:15 | Komunita

Daniel Stenberg, autor nástroje curl, na svém blogu oznámil, že obdržel letošní Polhemovu cenu, kterou uděluje Švédská inženýrská asociace za „technologickou inovaci nebo důvtipné řešení technického problému“.

marbu | Komentářů: 10
17.10. 13:40 | Pozvánky

Cílem Social Good Hackathonu, který se uskuteční 21. a 22. října v Brně, je vymyslet a zrealizovat projekty, které pomůžou zlepšit svět kolem nás. Je to unikátní příležitost, jak představit nejrůznější sociální projekty a zrealizovat je, propojit aktivní lidi, zástupce a zástupkyně nevládních organizací a lidi z prostředí IT a designu. Hackathon pořádá brněnská neziskovka Nesehnutí.

… více »
Barbora | Komentářů: 1
17.10. 00:44 | Pozvánky

V sobotu 21. října 2017 se na půdě Elektrotechnické fakulty ČVUT v Praze uskuteční RT-Summit – setkání vývojářů linuxového jádra a uživatelů jeho real-time verze označované jako preempt-rt.

… více »
Pavel Píša | Komentářů: 8
Jak se vás potenciálně dotkne trend odstraňování analogového audio konektoru typu 3,5mm jack z „chytrých telefonů“?
 (13%)
 (2%)
 (0%)
 (2%)
 (73%)
 (11%)
Celkem 62 hlasů
 Komentářů: 4, poslední včera 21:50
    Rozcestník

    Grafické programy v Qt 4 – 12 (stylování GUI pomocí CSS)

    2. 9. 2010 | David Watzke | Programování | 7971×

    V tomto díle se podíváme na možnosti stylování grafického uživatelského rozhraní pomocí jazyka podobného CSS a alternativně implementací vlastního stylu.

    Stylování GUI pomocí CSS

    Jeden ze způsobů, jak si upravit vzhled widgetů podle svých představ, je použití Qt Style Sheets (QSS), což je jazyk velice podobný CSS, který je přizpůsoben právě k těmto účelům.

    Chcete-li mít například červený text na (všech) tlačítkách a zelené pozadí na vstupních polích, můžete použít

    QPushButton {
    	color: red;
    }
    
    QLineEdit {
    	background-color: green;
    }
    

    Výsledek bude vypadat takto:

    qt 12 style1

    Prohlédněte si seznam stylovatelných widgetůseznam vlastností, které jim lze nastavit. Dostupná je i spousta ukázek.

    Styly se nastavují metodou setStyleSheet(const QString& styles), kterou má každý widget. Tuto metodu má i QApplication a přes instanci této třídy (kterou má každý Qt program s GUI) se nastavuje styl pro celý program. Neexistuje možnost, jak načíst soubor se stylem, metodě se zkrátka musí zadat řetězec, takže to musí programátor vyřešit sám, a to nejjednodušeji tak, že si soubor otevře pomocí QFile a celý jej načte metodou readAll().

    // soubor se stylem může být i zakompilovaný v binárce, viz
    // Grafické programy v Qt 4 – 7 (lokalizace a data programu)
    QFile file(":/qss/style.qss");
    if(file.open(QIODevice::ReadOnly | QIODevice::Text))
    {
    	qApp->setStyleSheet(file.readAll());
    	file.close();
    }
    

    Je dobré mít na paměti, že když měníte barvu popředí, je vhodné ujistit se, že bude dobře čitelné na pozadí, které může být na jiném systému jiné než vaše. To, že uživatelské rozhraní připomínající cirkus (například jako to moje ukázkové) dost lidí odradí od používání programu, pravděpodobně říkat ani nemusím. Je tedy vhodné používat styly rozumně, případně implementovat možnost úplného vypnutí stylování.

    Styly lze bez problémů měnit za běhu programu, proto jsem pro ukázku napsal program s textovým polem, kam můžete napsat svoje styly a rovnou je aplikovat:

    qt 12 styles

    styles.h: API.

    #ifndef STYLES_H
    #define STYLES_H
    
    #include <QWidget>
    
    class QTextEdit;
    
    class Styles : public QWidget
    {
    	Q_OBJECT
    
    public:
    	Styles(QWidget *parent = 0);
    
    private:
    	QTextEdit* styleEditor;
    
    private slots:
    	void applyStyle();
    };
    
    #endif // STYLES_H
    

    styles.cpp:

    #include "styles.h"
    
    #include <QCheckBox>
    #include <QPushButton>
    #include <QTextEdit>
    #include <QLabel>
    #include <QVBoxLayout>
    
    Styles::Styles(QWidget *parent)
    	: QWidget(parent)
    {
    	styleEditor = new QTextEdit;
    	QPushButton* btn = new QPushButton(tr("Apply"));
    
    	connect(btn, SIGNAL(clicked()), this, SLOT(applyStyle()));
    
    	QVBoxLayout* layout = new QVBoxLayout(this);
    	layout->addWidget(styleEditor);
    	layout->addWidget(btn);
    	layout->addSpacing(10);
    	layout->addWidget(new QCheckBox(tr("This is QCheckBox")));
    	layout->addWidget(new QLabel(tr("This is QLabel")));
    }
    
    void Styles::applyStyle()
    {
    	this->setStyleSheet( styleEditor->toPlainText() );
    }
    

    Vytvoření vlastního stylu

    Kdyby vám nestačilo to, čeho lze dosáhnout QSS stylováním, tak jiná a ještě flexibilnější možnost, jak upravit vzhled programu, je naprogramovat si vlastní nebo upravit stávající styl. V současnosti (Qt 4.7) nepodporuje QSS stylování vlastních stylů, ale prý je to v plánu.

    Vlastní styl se vytváří následovně: Nejprve je třeba vytvořit si pro styl třídu, která dědí QCommonStyle (což je základní styl) nebo některý specifický styl, jako například QCleanlooksStyle, QMacStyle, QPlastiqueStyle, nebo QWindowsXPStyle. Co všechno lze ve třídě upravit, si můžete prohlédnout v dokumentaci QStyle. V dokumentaci je též velice pěkná ukázka vytvoření stylu.

    qt 12 styles enabledwood

           

    Hodnocení: 100 %

            š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ář

    vain avatar 2.9.2010 07:37 vain | skóre: 16
    Rozbalit Rozbalit vše Re: Grafické programy v Qt 4 – 12 (stylování GUI pomocí CSS)
    No to je na zblití =)
    If the only choice you've got is to do the wrong thing, then it's not really the wrong thing, it's more like fate.
    2.9.2010 08:24 sivlk | skóre: 15 | blog: sivlk
    Rozbalit Rozbalit vše Re: Grafické programy v Qt 4 – 12 (stylování GUI pomocí CSS)
    +1
    mirec avatar 2.9.2010 09:57 mirec | skóre: 31 | blog: mirecove_dristy | Poprad
    Rozbalit Rozbalit vše Re: Grafické programy v Qt 4 – 12 (stylování GUI pomocí CSS)
    Páni to vyzerá hnusne ;) Pritom qss je celkom použiteľná vec, stačí tom trochu citu ... a hneď to vyzerá krajšie. Nemal by som zverejňovať screenshoty, ale snáď ma za jeden nikto nezabije - qss tak trochu menej hnusné. Štandardne to beží na fullscreene preto taký divný toolbar kombinovaný s titulkom okna. Všetky prvky sú ručne naštýlované, cieľom bolo vytvoriť niečo elegantné ako plastique a dobre ovládateľné cez dotykový display.
    LinuxOS.sk | USE="-fotak -zbytocnosti -farebne_lcd +vydrz +odolnost +java" emerge telefon
    David Watzke avatar 2.9.2010 11:18 David Watzke | skóre: 74 | blog: Blog... | Praha
    Rozbalit Rozbalit vše Re: Grafické programy v Qt 4 – 12 (stylování GUI pomocí CSS)
    Hezké :-) Aspoň lidí uvidí jak pěkně to může vypadat :-D
    “Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
    mirec avatar 2.9.2010 15:11 mirec | skóre: 31 | blog: mirecove_dristy | Poprad
    Rozbalit Rozbalit vše Re: Grafické programy v Qt 4 – 12 (stylování GUI pomocí CSS)
    Dík. Ešte jedna vec mi nedá spávať (no dobré kecám, ale to nie je podstatné) ... čakal som od tohto článku niečo iné. Upozornenie, že Qt 4 má takúto vlastnosť a všetko je v dokumentácii je fajn, ale niečo motivačné s peknými obrázkami (s dôrazom na pekné) by sa k článku možno hodilo, takže pre tých, ktorí sa neboja anglického textu (no tak toho textu tam je hooodne :D) - Qt Stylesheets Button Bar Tutorial (to bola inšpirácia pre mňa).
    LinuxOS.sk | USE="-fotak -zbytocnosti -farebne_lcd +vydrz +odolnost +java" emerge telefon
    2.9.2010 15:38 Mige_Amour | skóre: 12 | Benešov
    Rozbalit Rozbalit vše Re: Grafické programy v Qt 4 – 12 (stylování GUI pomocí CSS)
    Hezké, škoda, že tady se to tak nevyvedlo
    2.9.2010 15:35 Tomáš
    Rozbalit Rozbalit vše Re: Grafické programy v Qt 4 – 12 (stylování GUI pomocí CSS)
    Hezký, ale proč jsou ty butony tak velký, proti tomu písmu uvnitř. To je takový problém to udělat nějak úměrně? :-))
    mirec avatar 2.9.2010 16:03 mirec | skóre: 31 | blog: mirecove_dristy | Poprad
    Rozbalit Rozbalit vše Re: Grafické programy v Qt 4 – 12 (stylování GUI pomocí CSS)
    Písmo je malé pretože na stroji, na ktorom programujem mám nízke DPI. Na cieľovom stroji je väčšie DPI a teda aj písmo. Ale v podstate asi by nezaškodilo nastaviť písmo na presnú veľkosť v pixeloch ;)
    LinuxOS.sk | USE="-fotak -zbytocnosti -farebne_lcd +vydrz +odolnost +java" emerge telefon
    2.9.2010 20:46 Beruska
    Rozbalit Rozbalit vše Re: Grafické programy v Qt 4 – 12 (stylování GUI pomocí CSS)
    Vetsi DPI, mensi pismo.
    mirec avatar 2.9.2010 21:46 mirec | skóre: 31 | blog: mirecove_dristy | Poprad
    Rozbalit Rozbalit vše Re: Grafické programy v Qt 4 – 12 (stylování GUI pomocí CSS)
    Veľkosť písma je povedzme 9pt, v prepočte na px je to povedzme 11px. Po zvýšení dpi by veľkosť písma mala zostať rovnaká, ale v pixeloch je to už povedzme 15px. Písmo sa teda relatívne voči grafike, ktorá je v px zväčší ;) (čísla sú len orientačné)
    LinuxOS.sk | USE="-fotak -zbytocnosti -farebne_lcd +vydrz +odolnost +java" emerge telefon
    2.9.2010 13:04 Jirka
    Rozbalit Rozbalit vše Re: Grafické programy v Qt 4 – 12 (stylování GUI pomocí CSS)
    Dik, Davide.
    2.9.2010 22:53 mikro
    Rozbalit Rozbalit vše Re: Grafické programy v Qt 4 – 12 (stylování GUI pomocí CSS)
    Neexistuje možnost, jak načíst soubor se stylem, metodě se zkrátka musí zadat řetězec, takže to musí programátor vyřešit sám

    To by ta clovece grafik / dizajner asi fakt miloval, keby si mu povedal, ze ti musi dodat textak vytvoreny v Notepade ;) Samozrejme, ze styly idu editovat v Qt Designerovi, so syntax highlightingom, kontrolou syntaxe atd.
    2.9.2010 22:54 T.O.M. | skóre: 22 | blog: T.O.M.'s blog | Ostrava
    Rozbalit Rozbalit vše Re: Grafické programy v Qt 4 – 12 (stylování GUI pomocí CSS)

    Neexistuje možnost, jak načíst soubor se stylem, metodě se zkrátka musí zadat řetězec, ...

    Není pravda, že to nejde, jen je třeba na začátek řetězce s cestou k souboru přidat file:///, např.: "file:////home/user/stylesheet.qss", na widlích by to mohlo vypadat "file:///c:\Program Files\xyz/stylesheet.qss" (možná s normálními lomítky, nezkoušeno)

    Navíc pokud se style sheet načte tímto způsobem a ne vložením obsahu souboru jako v článku, může se v QSS souboru použít relativních cest (vzhledem k tomuto souboru) např. k obrázkům s pozadím, což dost zpřehlední zápis a usnadní práci.

    Jinak článek dobrý, jen by to chtělo koukatelnější ukázku možností. Za takovou barevnou změť by se styděli i v cirkuse ;-)

    mirec avatar 3.9.2010 08:33 mirec | skóre: 31 | blog: mirecove_dristy | Poprad
    Rozbalit Rozbalit vše Re: Grafické programy v Qt 4 – 12 (stylování GUI pomocí CSS)
    Příloha:
    jen by to chtělo koukatelnější ukázku možností

    Neviem, či to je len o farbách ... celý príklad sa mi zdá taký dosť umelý. Mám z neho pocit, že autor qss nikdy nepoužil ;)

    Skúsim sa na to pozrieť z pohľadu človeka, ktorý qss nikdy nevidel a nevie na čo by sa to mohlo hodiť. Takže si prečítam článok, vidím, že sa qss dá použiť na nejaké to ofarbenie prvkov, ale načo to je dobré sa moc nedozviem.

    Ak by som ja vymýšľal nejaký príklad na qss asi by som skúsil skôr niečo čisto praktické. Pri prefarbovaní inputov má ako prvé asi napadne zmeniť farbu pozadia pri nevalidnom vstupe (v niektorých dialógoch kde je viacej inputov môže byť mierne podfarbenie do červena veľmi užitočné na nájdenie chyby).

    Ako prvé ma napadne označenie inputov nejakou sémantickou značkou. To je možné dosiahnuť dynamickými property, takže zavoláme input->setProperty("inputInvalid", true alebo false) pri zmene obsahu inputu.

    Ďalším krokom bude napísanie príslušného qss. To je pre tento prípad jednoduché: *[inputInvalid='true'] { background-color: red; }

    Poctivý čitateľ skúšajúci si príklad by asi v tomto momente zistil, že takto to jednoducho nefunguje. Po zmene dynamických property je potrebné ručne vnútiť widgetu prekreslenie aby nastala viditeľná zmena.

    input->style()->unpolish(input);
    input->ensurePolished();
    

    Posledným detailom v tomto príklade je farba, ktorá je daná napevno. Omnoho lepším riešením by bolo zobrať farbu z aktuálnej palety a v určitom pomere ju zmiešať s červenou. Výsledok môžte skúsiť v prílohe. Pekný príklad použitia qss a dynamických property je napríklad tu.

    LinuxOS.sk | USE="-fotak -zbytocnosti -farebne_lcd +vydrz +odolnost +java" emerge telefon

    Založit nové vláknoNahoru

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