<?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; radio button</title>
	<atom:link href="http://szj.cz/tag/radio-button/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 – checkbox</title>
		<link>http://szj.cz/qt-%e2%80%93-checkbox/</link>
		<comments>http://szj.cz/qt-%e2%80%93-checkbox/#comments</comments>
		<pubDate>Wed, 02 Nov 2011 10:00:44 +0000</pubDate>
		<dc:creator><![CDATA[fredomgc]]></dc:creator>
				<category><![CDATA[Qt]]></category>
		<category><![CDATA[checkbox]]></category>
		<category><![CDATA[Label]]></category>
		<category><![CDATA[radio button]]></category>

		<guid isPermaLink="false">http://szj.cz/?p=70</guid>
		<description><![CDATA[Před praktickou ukázkou práce s checkboxy si nejprve dovolím malé shrnutí rozdílů mezi tímto ovládacím prvkem a radio buttonem. Zatímco u první zmíněné varianty může uživatel zaškrtnout více voleb, v případě té druhé je jeho svoboda značně omezena. Zvolí totiž pouze jen jednu položku. Z tohoto důvodu se práce s oběma prvky poněkud liší. Checkbox [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Před praktickou ukázkou práce s <strong>checkboxy</strong> si nejprve dovolím malé shrnutí rozdílů mezi tímto ovládacím prvkem a <strong>radio buttonem</strong>. Zatímco u první zmíněné varianty může uživatel zaškrtnout více voleb, v případě té druhé je jeho svoboda značně omezena. Zvolí totiž pouze jen jednu položku. Z tohoto důvodu se práce s oběma prvky poněkud liší. <strong>Checkbox</strong> nám totiž pochopitelně vrátí předem nespecifikovaný počet výsledků. Proto se dnes zaměříme právě na tuto oblast zajímavou z programátorského hlediska.</p>
<p>Poměrně dlouho jsem přemýšlel, jaký příklad pro tuto problematiku zvolit. Nakonec došlo ke stvoření jednoduché aplikace, která nás vybízí k výběru několika druhů sýra. Po stisknutí na tlačítko nám následně všechny zvolené potraviny vypíše. Po dalším rozšíření by tento program mohl například využívat kuchař v pizzerii, který si přesně nepamatuje, co si zákazníci vlastně objednali. <img src="http://szj.cz/wp-includes/images/smilies/simple-smile.png" alt=":-)" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p><a href="http://szj.cz/wp-content/uploads/2011/10/qt-checkbox-pred-zadanim.png"><img class="aligncenter size-full wp-image-72" title="qt-checkbox-pred-zadanim" src="http://szj.cz/wp-content/uploads/2011/10/qt-checkbox-pred-zadanim.png" alt="Qt checkbox - před zadáním" width="435" height="202" /></a></p>
<p><a href="http://szj.cz/wp-content/uploads/2011/10/qt-checkbox-po-zadani.png"><img class="aligncenter size-full wp-image-73" title="qt-checkbox-po-zadani" src="http://szj.cz/wp-content/uploads/2011/10/qt-checkbox-po-zadani.png" alt="Qt checkbox - po zadání" width="435" height="202" /></a></p>
<p>#ifndef WIDGET_H<br />
#define WIDGET_H</p>
<p>#include <QWidget><br />
#include <QButtonGroup></p>
<p>namespace Ui {<br />
    class Widget;<br />
}</p>
<p>class Widget : public QWidget<br />
{<br />
    Q_OBJECT</p>
<p>public:<br />
    explicit Widget(QWidget *parent = 0);<br />
    ~Widget();</p>
<p>private:<br />
    Ui::Widget *ui;<br />
    QButtonGroup *syr_skupina;</p>
<p>public slots:<br />
    void syr();<br />
};</p>
<p>#endif // WIDGET_H</p>
<p>&nbsp;</p>
<p>#include &#8222;widget.h&#8220;<br />
#include &#8222;ui_widget.h&#8220;</p>
<p>Widget::Widget(QWidget *parent) :<br />
    QWidget(parent),<br />
    ui(new Ui::Widget)<br />
{<br />
    ui->setupUi(this);</p>
<p>    syr_skupina = new QButtonGroup(this);<br />
    syr_skupina->addButton(ui->ch_hermelin,1);<br />
    syr_skupina->addButton(ui->ch_eidam,2);<br />
    syr_skupina->addButton(ui->ch_mozzarella,3);<br />
    syr_skupina->setExclusive(false);</p>
<p>}</p>
<p>Widget::~Widget()<br />
{<br />
    delete ui;<br />
}</p>
<p>void Widget::syr(){<br />
    QAbstractButton *vracene;<br />
    QString vysledek = &#8222;Objedávka: \n&#8220;;<br />
    int pocet = 0;</p>
<p>    for(int i = 1; i < 4;i++){<br />
        vracene = syr_skupina->button(i);<br />
        if (vracene->isChecked()){<br />
            vysledek += vracene->text() + &#8222;\n&#8220;;<br />
            pocet++;<br />
            }<br />
        }</p>
<p>    if(pocet == 0){<br />
    vysledek += &#8222;Není vybrán žádný sýr!&#8220;;<br />
    }else{<br />
    vysledek += &#8222;Přejeme dobrou chuť!&#8220;;<br />
    }</p>
<p>    ui->l_vysledek->setText(vysledek);<br />
}</p>
<p>&nbsp;</p>
<h2>Skupina prvků v podání QbuttonGroup</h2>
<p>V návrhářském režimu stačí přidat několik popisných <strong>labelů</strong> a samotné <strong>checkboxy</strong>. Nezapomeňte rovněž na ovládací prvek, ve kterém se zobrazí získaný výsledek. V našem případě se opět jedná o klasický <strong>label. </strong>Zajímavější kroky na nás čekají v <strong>konstruktoru</strong>. Vytvoříme si totiž skupinu prvků tzv. QbuttonGroup a přidáme do ní jednotlivé <strong>checkboxy</strong>. Musíme u nich specifikovat i vlastní <strong>id</strong>, které později budeme potřebovat při procházení v <strong>iteračním cyklu</strong>. S pomocí <strong>setExclusive</strong> dosáhneme toho, že se celá skupina začne chovat dle našich požadavků. Pokud bychom jako <strong>parametr</strong> předali <strong>true</strong>, získáme <strong>checkboxy</strong> fungující jako <strong>radio buttony</strong>.</p>
<h2>Zpracování</h2>
<p>Ve <strong>slotu</strong>, který se spouští po <strong>signálu</strong> <strong>clicked</strong> z tlačítka se provádí samotný výpis. V cyklu si projdeme jednotlivé <strong>checkboxy</strong> a ověříme si, zda je uživatel zaškrtnul. Pokud ano, přidáme jejich popisek (text) do stringové proměnné, kterou nakonec nastavíme s pomocí <strong>setText </strong>výslednému <strong>labelu</strong> v hlavním okně.</p>
]]></content:encoded>
			<wfw:commentRss>http://szj.cz/qt-%e2%80%93-checkbox/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
