<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>IT blog &#187; signály</title>
	<atom:link href="http://szj.cz/tag/signaly/feed/" rel="self" type="application/rss+xml" />
	<link>http://szj.cz</link>
	<description>internet, linux, novinky, programování</description>
	<lastBuildDate>Sat, 12 Sep 2015 11:14:32 +0000</lastBuildDate>
	<language>cs-CZ</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=4.2.2</generator>
	<item>
		<title>Qt – signály a sloty</title>
		<link>http://szj.cz/qt-%e2%80%93-signaly-a-sloty/</link>
		<comments>http://szj.cz/qt-%e2%80%93-signaly-a-sloty/#comments</comments>
		<pubDate>Wed, 05 Oct 2011 06:49:56 +0000</pubDate>
		<dc:creator><![CDATA[fredomgc]]></dc:creator>
				<category><![CDATA[Qt]]></category>
		<category><![CDATA[Label]]></category>
		<category><![CDATA[Push Button]]></category>
		<category><![CDATA[signály]]></category>
		<category><![CDATA[sloty]]></category>

		<guid isPermaLink="false">http://szj.cz/?p=48</guid>
		<description><![CDATA[V následujícím tutoriálu vám ukáži jeden ze způsobů, kterým lze vzájemně propojovat prvky přidané v návrhářském (designérském) režimu. Našim cílem bude v tomto případě vytvořit jednoduché okno s jediným tlačítkem (Push Button). Po kliknutí se následně zobrazí text, který byl původně skrytý. Přípravy Nejprve si přidáme do prostoru okna dva potřebné elementy. Jde o již [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>V následujícím tutoriálu vám ukáži jeden ze způsobů, kterým lze vzájemně propojovat prvky přidané v návrhářském (designérském) režimu. Našim cílem bude v tomto případě vytvořit jednoduché okno s jediným tlačítkem (<strong>Push</strong> <strong>Button</strong>). Po kliknutí se následně zobrazí text, který byl původně skrytý.</p>
<h2>Přípravy</h2>
<p>Nejprve si přidáme do prostoru okna dva potřebné elementy. Jde o již zmíněné tlačítko a popisek (<strong>Label</strong>). Nezapomeňte vždy zadat vhodné <strong>objectName</strong>, což nám usnadní život při samotném programování. V případě objektu třídy <strong>QLabel</strong> rovněž nastavte vlastnost <strong>text</strong> na nějakou pěknou větu, kterou po kliknutí uživatele překvapíme. Pokud si nyní celý projekt zkompilujete a spustíte, zaskočí vás, že tento řetězec se v okně vyskytuje. Abychom tomu zabránili a vytvořili tak dojem skrytého prvku, zavoláme v konstruktoru naší třídy odpovídající funkci <strong>hide</strong>().</p>
<div id="attachment_51" style="width: 405px" class="wp-caption aligncenter"><a href="http://szj.cz/wp-content/uploads/2011/10/pred-kliknutim.jpg"><img class="size-full wp-image-51" title="pred-kliknutim" src="http://szj.cz/wp-content/uploads/2011/10/pred-kliknutim.jpg" alt="Okno před kliknutím" width="395" height="183" /></a><p class="wp-caption-text">Okno před kliknutím</p></div>
<p>&nbsp;</p>
<div id="attachment_53" style="width: 405px" class="wp-caption aligncenter"><a href="http://szj.cz/wp-content/uploads/2011/10/po-kliknuti.jpg"><img class="size-full wp-image-53" title="po-kliknuti" src="http://szj.cz/wp-content/uploads/2011/10/po-kliknuti.jpg" alt="Okno po kliknutí" width="395" height="183" /></a><p class="wp-caption-text">Okno po kliknutí</p></div>
<h2>Propojení signálu se slotem</h2>
<p>Nyní již vše funguje tak jak má. Po inicializaci programu můžete pouze kliknout na tlačítko. To však pochopitelně momentálně neví, co má v případě signálu <strong>clicked</strong>() vykonat. K tomuto účelu musíme vytvořit v úvodu nastíněné propojení. Učiníme tak opět v konstruktoru s pomocí funkce <strong>connect</strong>. Povšimněte si vyžadovaných parametrů. Nejprve specifikujeme objekt, který odesílá signál. Následně již přijde na řadu jeho konkretizace. Poté pokračujeme zadáním příjemce. V našem případě se zde nachází slovíčko <strong>this</strong>, protože slot uvedený jako poslední patří do stejné třídy, ze které je volána funkce <strong>connect</strong>. Sloty si tak ve své podstatě můžete představit jako naprosto běžné funkce, které vykonávají vámi určené věci. K jejich zavolání přitom slouží právě signály, které mnoha způsoby produkují objekty přidané v návrhářském režimu.</p>
<p>#include &#8222;okno.h&#8220;<br />
#include &#8222;ui_okno.h&#8220;</p>
<p>okno::okno(QWidget *parent) :<br />
    QWidget(parent),<br />
    ui(new Ui::okno)<br />
{<br />
    ui->setupUi(this);</p>
<p>    ui->l_text->hide();</p>
<p>    connect(ui->pb_text,SIGNAL(clicked()),this,SLOT(zobraz()));<br />
}</p>
<p>okno::~okno()<br />
{<br />
    delete ui;<br />
}</p>
<p>void okno::zobraz(){<br />
ui->l_text->show();<br />
}</p>
<p>Rád bych vás dále upozornil na pár řádků kódu v hlavičkovém souboru třídy. Jde především o sekci <strong>public slots: </strong>(pozor na zrádné a zpočátku opomíjené &#8218;<strong>s</strong>&#8218; na konci!). Zde se uvádí deklarace slotů, které bude program využívat.</p>
<p>#ifndef OKNO_H<br />
#define OKNO_H</p>
<p>#include <QWidget></p>
<p>namespace Ui {<br />
    class okno;<br />
}</p>
<p>class okno : public QWidget<br />
{<br />
    Q_OBJECT</p>
<p>public:<br />
    explicit okno(QWidget *parent = 0);<br />
    ~okno();</p>
<p>private:<br />
    Ui::okno *ui;</p>
<p>public slots:<br />
    void zobraz();<br />
};</p>
<p>#endif // OKNO_H</p>
]]></content:encoded>
			<wfw:commentRss>http://szj.cz/qt-%e2%80%93-signaly-a-sloty/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
