<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl-pl">
<link rel="self" type="application/atom+xml" href="https://forum.atnel.pl/feed.php?f=61&amp;t=5758&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2014-02-01T00:56:20+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=61&amp;t=5758&amp;mode</id>
<entry>
<author><name><![CDATA[Zaba]]></name></author>
<updated>2014-01-31T18:32:04+01:00</updated>
<published>2014-01-31T18:32:04+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5758&amp;p=67666#p67666</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5758&amp;p=67666#p67666"/>
<title type="html"><![CDATA[Re: Aspekty programowania z użyciem biblioteki Qt.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5758&amp;p=67666#p67666"><![CDATA[
Witam<br />fajny poradnik ,ja dopiero uczę się QT ale kiedyś pewnie się przyda<br />Mam tylko taką małą sugestie ,czy kolega mógłby wstawiać kody w znaczniku <br />syntax = C++(QT) będzie trochę atrakcyjniej wyglądało i naprawdę dużo lepij<br />analizowało kod <br /><br />Pozdrawiam<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1044">Zaba</a> — 31 sty 2014, o 18:32</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[tanwel]]></name></author>
<updated>2014-02-01T00:56:20+01:00</updated>
<published>2014-01-31T00:40:03+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5758&amp;p=67570#p67570</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5758&amp;p=67570#p67570"/>
<title type="html"><![CDATA[Aspekty programowania z użyciem biblioteki Qt.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5758&amp;p=67570#p67570"><![CDATA[
Witam wszystkich kolegów i koleżanki. Jakiś czas temu zauważyłem, że na forum jest kolega który stworzył dwa poradniczki dotyczące podstaw programowania w QT. Pomyślałem sobie, że może dodam swoje trzy grosze i odrobinę „rozszerzę” ten temat o pewne sposoby z którymi dość rzadko można spotkać się programując aplikacje w tym frameworku a które są na tyle użyteczne, że warto o nich wspomnieć. <br />W tym wątku chciałbym umieszczać co jakiś czas pewne zagwostki z którymi się spotkałem ucząc się tej biblioteki i w miare jasne ich rozwiązanie. Ze względu na późną porę dziś przedstawię kilka takich aspektów. <br />W Kodach będe starał się przedstawiać pełne działające króciutkie aplikacje żeby każdy mógł wrzucić to do pliku, skompilować (tak jak pokazywał to kolega GwynBleidD).<br /><br />1. Używanie stylów CSS w aplikacji.<br /><br />Qt umożwliwia formatowanie Widgetów za pomocą stylów CSS w wersji CSS 2 i CSS 3, podobnie jak to ma miejsce w języku HTML jak również samego języka HTML co można zaobserwować na przykładzie:<br /><br />[syntax=cpp-qt]<br />#include &lt;QApplication&gt;<br />#include &lt;QLabel&gt;<br /><br />int main(int argc, char **argv){<br />    QApplication app(argc, argv);<br /><br />    QLabel *Etykieta = new QLabel(&quot;&lt;b&gt; To jest Etykietka tekstowa &lt;/b&gt;&quot;);<br />    Etykieta-&gt;show();<br /><br />    return app.exec();<br />}<br />[/syntax] <br /><br />Mamy tu zastosowanie prostego formatowania HTML w tekście etykiety, co jednak gdy chcielibyśmy żeby każda z etykiet posiadała takie domyślne formatowanie? Czy dla każdej etykiety będziemy musieli użyć znacznika &lt;b&gt; &lt;/b&gt; ? Otóż Qt pozwala na używanie stylu CSS który można domyślnie załadować z pliku bądź umieścić jako tekst:<br /><br />[syntax=cpp-qt]<br />#include &lt;QApplication&gt;<br />#include &lt;QLabel&gt;<br /><br />int main(int argc, char **argv){<br />    QApplication app(argc, argv);<br />    //Poniżej ustawiamy styl dla wszystkich objektów QLabel<br />    app.setStyleSheet(<br />                  &quot;QLabel{ font-weight:bold; }&quot;<br />                 );<br /><br />    QLabel *Etykieta = new QLabel(&quot;To jest etykietka tekstowa&quot;);<br />    Etykieta-&gt;show();<br /><br />    return app.exec();<br />}<br />[/syntax]<br /><br />Takie rozwiązanie powoduje, że wszystkie etykietki które będą znajdowały się w aplikacji będą miały takie właśnie domyślne formatowanie, co gdy chcemy zastosować to formatowanie jedynie dla pewnej grupy? Czytając o CSS dowiadujemy się, że pozwala ono na ustawienie elementów w danym typie posiadających odpowiednie nazwy. Nazwy te podaje się po znaku #(hash). Jak takie nazwy nadać? W Qt jest to proste ponieważ każda klasa wywodzi się od bazowej klasy QObject więc każda z nich posiada metodę klasy QObject o nazwie setObjectName która służy właśnie do nadania takiej nazwy. Nazwa ta nie musi być unikalna dla każdego objektu ale spokojnie można ją powielać, poniżej przykład:<br />[syntax=cpp-qt]<br />#include &lt;QApplication&gt;<br />#include &lt;QLabel&gt;<br /><br />int main(int argc, char **argv){<br />    QApplication app(argc, argv);<br />    app.setStyleSheet(<br />                &quot;QLabel#Imiona{font-weight:bold;}&quot;<br />                      );<br />    QLabel *Etykieta1 = new QLabel(&quot;Imie Pierwsze&quot;);<br />    Etykieta1-&gt;setObjectName(&quot;Imiona&quot;);<br />    Etykieta1-&gt;show();<br /><br />    QLabel *Etykieta2 = new QLabel(&quot;Imie drugie&quot;);<br />    Etykieta2-&gt;setObjectName(&quot;Imiona&quot;);<br />    Etykieta2-&gt;show();<br /><br />    QLabel *Etykieta3 = new QLabel(&quot;Etykietka inna nie związana z klasą Imiona&quot;);<br />    Etykieta3-&gt;show();<br /><br />    return app.exec();<br />}<br />[/syntax]<br /><br />2. ładowanie stylow z plików tekstowych *.css.<br />Drugą rzeczą którą chciałbym tu przedstawić jest ładowanie stylow z zewnętrznych plików. Jakiś czas temu temat był poruszany na forum qt-project ponieważ większość osób jest przyzwyczajona do używania stylów CSS właśnie w języku HTML gdzie taka operacja wykonywana była najczęściej w sekcji &lt;HEAD&gt;. Wczytanie pliku CSS nie różni się tak naprawdę od wczytania pliku tekstowego (ponieważ arkusz stylu takim przecież jest <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> ) czyli prosta metoda na załądowanie arkusza stylu do naszej aplikacji z pliku zewnetrznego może wyglądać np. tak:<br />[syntax=cpp-qt]<br />#include &lt;QApplication&gt;<br />#include &lt;QLabel&gt;<br />#include &lt;QString&gt; //nie jest wymagana ale pozostawiam dla lepszej czytelności<br />#include &lt;QFile&gt;<br />#include &lt;QTextStream&gt;<br /><br />int main(int argc, char **argv){<br />    QApplication app(argc, argv);<br />    QFile Plik(&quot;arkusz.css&quot;);<br /><br />    if(Plik.open(QIODevice::ReadOnly) ){<br />        QTextStream Uchwyt(&amp;Plik); //utworzenie uchwytu do pliku z którego będziemy korzystali<br />        QString Bufor=Uchwyt.readAll(); //Odczytanie zawartości całego pliku<br />        Plik.close();<br />        app.setStyleSheet(Bufor); //tu ustawiamy arkusz<br />    }<br /><br />    QLabel *Etykieta = new QLabel(&quot;Ta etykieta powinna mieć czerwone tło i&quot;\<br />                                            &quot; czarny kolor napisów, jeżeli nie ma to znak, że nie wczytano pliku css&quot;);<br />    Etykieta-&gt;show();<br /><br />    return app.exec();<br />}<br />[/syntax]<br /><br />Należy pamiętać również o pliku arkusz.css aby umieścić go w tym samym katalogu gdzie zostanie zbudowany nasz projekt. Zawartość pliku arkusz.css:<br />[syntax=css]QLabel {<br />    color:#000000;<br />    background-color:#ff0000;<br />    }[/syntax]<br /><br /><br />Ok. Godzina dość późna a jutro do pracy, jak będą jakieś pytanka to zapraszam do rozmów. Kolejne rzadko urzywane a dość ciekawe rzeczy związane z Qt przedstawie jak znajde odrobine czasu.<br />Dla zainteresowanych polecam:<br /><!-- m --><a class="postlink" href="http://www.w3.org/Style/CSS/" >http://www.w3.org/Style/CSS/</a><!-- m --> -strona dotycząca CSS według W3C <br />C++ GUI Programming with Qt4 (second edition) -dobra książka o frameworku Qt w wersji 4 w zwyż.<br />CSS Witryny internetowe szyte na miare (Charles Wyke Smith) Fajna książka w kolorze zawierająca elementarną wiedzę o CSS.<br />&lt;Dziękuje za podpowiedź aby używać syntax, rzadko przeglądałem do tej pory to forum nie mówiąc już o pisaniu więc poprostu nie zwróciłem uwagi na tą opcje. Ale przydatne ustrojstwo <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> &gt;<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2102">tanwel</a> — 31 sty 2014, o 00:40</p><hr />
]]></content>
</entry>
</feed>