<?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; Label</title>
	<atom:link href="http://szj.cz/tag/label/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 – Combo box</title>
		<link>http://szj.cz/qt-%e2%80%93-combo-box/</link>
		<comments>http://szj.cz/qt-%e2%80%93-combo-box/#comments</comments>
		<pubDate>Fri, 23 Dec 2011 10:00:27 +0000</pubDate>
		<dc:creator><![CDATA[fredomgc]]></dc:creator>
				<category><![CDATA[Qt]]></category>
		<category><![CDATA[Combo box]]></category>
		<category><![CDATA[Label]]></category>

		<guid isPermaLink="false">http://szj.cz/?p=124</guid>
		<description><![CDATA[Na následujícím příkladě si společně ukážeme práci s combo boxem. Konkrétně budeme využívat rovnou dva ovládací prvky tohoto typu, které na sobě dokonce budou závislé. Změna volby uživatelem se proto okamžitě projeví v obsahu druhého combo boxu. Pokud nastavíme vlastnost editable na true, získáme možnost vkládat vlastní hodnoty. V našem programu však povolíme výběr pouze [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Na následujícím příkladě si společně ukážeme práci s <strong>combo boxem</strong>. Konkrétně budeme využívat rovnou dva ovládací prvky tohoto typu, které na sobě dokonce budou závislé. Změna volby uživatelem se proto okamžitě projeví v obsahu druhého <strong>combo boxu</strong>. Pokud nastavíme vlastnost <strong>editable</strong> na <strong>true</strong>, získáme možnost vkládat vlastní hodnoty. V našem programu však povolíme výběr pouze z předem definovaných údajů. Nejprve se aplikace zeptá, zda-li budeme cestovat <strong>po zemi</strong> nebo <strong>ve vzduchu</strong>. Na základě odpovědi poté upraví druhý <strong>combo box</strong> a nabídne odpovídající dopravní prostředky.</p>
<p><a href="http://szj.cz/wp-content/uploads/2011/12/combobox.png"><img class="aligncenter size-full wp-image-125" title="combobox" src="http://szj.cz/wp-content/uploads/2011/12/combobox.png" alt="Combo box" width="437" height="297" /></a></p>
<h2>Designérský režim</h2>
<p>Po vytvoření projektu se přepneme do módu <strong>design</strong>. Postupně přidáme oba <strong>combo boxy</strong> a několik <strong>Labelů</strong>. Nezapomeňte si jednotlivé objekty vhodně pojmenovat, díky čemuž si usnadníte následující programování.</p>
<h3>Tvorba zdrojového kódu</h3>
<p>Mezi pro nás nejdůležitější funkci <strong>combo boxu</strong> patří <strong>addItem</strong>. V konstruktoru třídy si s její pomocí naplníme ovládací prvek. Položky se přidávají vždy za poslední volbu a disponují rovněž vlastním interním <strong>id</strong>, které se počítá od nuly. To ostatně vysvětluje, proč jsem vytvořil i pomocnou funkci <strong>procistit</strong>. Původně přitom její tělo obsahovalo iterační cyklus, včas mě však zarazila hodnota vrácená s pomocí <strong>count</strong>. Ta totiž prozrazuje celkový počet záznamů a nikoliv nejvyšší <strong>id</strong>. Tuto hodnotu si musíme sami dopočítat, tedy odečíst jedničku. <strong>Procistit</strong> musíme zavolat po každé změně výběru, protože v opačném případě by se druhý <strong>combo box</strong> postupně rozrůstal o duplicitní informace. Spojení signálů a slotů pochopitelně naleznete opět v konstruktoru. Volají se v podstatě jen dvě funkce – <strong>zmena</strong> a <strong>souhrn</strong>. Ta první se postará o obměnu příslušného <strong>combo boxu</strong>. Druhá nám sestaví informační <strong>QString</strong>, který poté nastaví vlastnosti <strong>text</strong> u <strong>Labelu</strong> umístěného ve spodní části okna. Povšimněte si rovněž, že se plně obejdeme bez tlačítek. Veškeré úpravy probíhají ihned poté, co uživatel změní svůj názor.</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>    ui->cb_typCesty->addItem(&#8222;Po zemi&#8220;);<br />
    ui->cb_typCesty->addItem(&#8222;Ve vzduchu&#8220;);</p>
<p>    connect(ui->cb_typCesty,SIGNAL(activated(int)),this,SLOT(zmena(int)));<br />
    connect(ui->cb_typCesty,SIGNAL(activated(int)),this,SLOT(souhrn()));<br />
    connect(ui->cb_dopravniProstredek,SIGNAL(activated(int)),this,SLOT(souhrn()));<br />
    zmena(ZEME);<br />
    souhrn();</p>
<p>}</p>
<p>Widget::~Widget()<br />
{<br />
    delete ui;<br />
}</p>
<p>void Widget::zmena(int id){<br />
    procistit(ui->cb_dopravniProstredek);</p>
<p>  if (id == ZEME){<br />
      ui->cb_dopravniProstredek->addItem(&#8222;Automobil&#8220;);<br />
      ui->cb_dopravniProstredek->addItem(&#8222;Motocykl&#8220;);<br />
  }else if (id == VZDUCH){<br />
      ui->cb_dopravniProstredek->addItem(&#8222;Letadlo&#8220;);<br />
      ui->cb_dopravniProstredek->addItem(&#8222;Helikoptéra&#8220;);<br />
      }<br />
}</p>
<p>void Widget::procistit(QComboBox*&#038; obj){<br />
    while(obj->count() != 0){<br />
     obj->removeItem(obj->count()-1);<br />
    }</p>
<p>}</p>
<p>void Widget::souhrn(){<br />
QString typ = ui->cb_typCesty->itemText(ui->cb_typCesty->currentIndex());<br />
QString prostredek = ui->cb_dopravniProstredek->itemText(ui->cb_dopravniProstredek->currentIndex());<br />
QString vysledek = &#8222;Typ cesty: &#8222;+ typ +&#8220;. Dopravní prostředek: &#8220; + prostredek;<br />
ui->l_vysledek->setText(vysledek);<br />
}</p>
<p>&nbsp;</p>
<h3>Enum</h3>
<p>Závěrem ještě poukáži na <strong>výčtový</strong> <strong>typ</strong> pojmenovaný překvapivě jako <strong>TYP</strong>. Konstanta <strong>ZEME</strong> zastupuje číselnou hodnotu <strong>0</strong>, zatímco <strong>VZDUCH</strong> symbolizuje <strong>1.</strong> Zdrojový kód díky tomu získává na přehlednosti.</p>
<p>#ifndef WIDGET_H<br />
#define WIDGET_H</p>
<p>#include <QWidget><br />
#include <QButtonGroup></p>
<p>#include <QComboBox></p>
<p>enum TYP{ZEME,VZDUCH};</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>public slots:<br />
    void zmena(int);<br />
    void souhrn();</p>
<p>private:<br />
    Ui::Widget *ui;<br />
    void procistit(QComboBox*&#038; obj);<br />
};</p>
<p>#endif // WIDGET_H</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://szj.cz/qt-%e2%80%93-combo-box/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<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>
		<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>
		<item>
		<title>Qt – lineEdit a validace na zadání integerového čísla</title>
		<link>http://szj.cz/qt-%e2%80%93-lineedit-a-validace-na-zadani-integeroveho-cisla/</link>
		<comments>http://szj.cz/qt-%e2%80%93-lineedit-a-validace-na-zadani-integeroveho-cisla/#comments</comments>
		<pubDate>Wed, 28 Sep 2011 09:38:17 +0000</pubDate>
		<dc:creator><![CDATA[fredomgc]]></dc:creator>
				<category><![CDATA[Qt]]></category>
		<category><![CDATA[Label]]></category>
		<category><![CDATA[lineEdit]]></category>
		<category><![CDATA[validace]]></category>
		<category><![CDATA[validator]]></category>

		<guid isPermaLink="false">http://szj.cz/?p=40</guid>
		<description><![CDATA[Důvody, proč kontrolovat to, co uživatel zadá, jsou v celku jasné. I když totiž například vytvoříte vstupní prvek a označíte ho jako email, vždy se může najít někdo, kdo vaše instrukce zcela nepochopí a vloží zde úplně jiný údaj. Problém pak samozřejmě nastane, jakmile začnete s takovou hodnotou pracovat. Výsledkem pak mohou být docela kuriózní [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Důvody, proč kontrolovat to, co uživatel zadá, jsou v celku jasné. I když totiž například vytvoříte vstupní prvek a označíte ho jako email, vždy se může najít někdo, kdo vaše instrukce zcela nepochopí a vloží zde úplně jiný údaj. Problém pak samozřejmě nastane, jakmile začnete s takovou hodnotou pracovat. Výsledkem pak mohou být docela kuriózní situace.</p>
<h2>Třída QintValidator</h2>
<p>Způsobů, jak zkontrolovat zadaná data je pochopitelně několik. Ukážeme si však postup, který nezabere mnoho času a zvládne jej i začátečník. V rámci tohoto jednoduchého příkladu jsem se rozhodl vytvořit okno, ve kterém na nás bude po inicializaci čekat jeden lineEdit a Label, který vysvětlí, jaký vstup vyžadujeme.</p>
<p><a href="http://szj.cz/wp-content/uploads/2011/09/lineedit-validace.png"><img class="aligncenter size-full wp-image-41" title="lineedit-validace" src="http://szj.cz/wp-content/uploads/2011/09/lineedit-validace.png" alt="lineEdit - validace" width="406" height="326" /></a></p>
<p>Práci v designérském módu určitě zvládnete, stačí jen přidat oba prvky a vhodně je pojmenovat. Mnohem zajímavější činnost začíná ve třídě, která přísluší otevíranému oknu. Zde našemu lineEditu nastavíme validátor, který se postará o omezení rozsahu zadávaných hodnot. Nejprve ho však musíme vytvořit. K tomuto kroku přistoupíme v konstruktoru zvolené třídy, protože pochopitelně chceme, aby ke kontrole údajů docházelo vždy.</p>
<p>#include &#8222;widget.h&#8220;<br />
#include &#8222;ui_widget.h&#8220;<br />
#include <QIntValidator></p>
<p>Widget::Widget(QWidget *parent) :<br />
    QWidget(parent),<br />
    ui(new Ui::Widget)<br />
{<br />
    ui->setupUi(this);</p>
<p>    QIntValidator * validator;<br />
    validator = new QIntValidator(0,100,this);</p>
<p>    ui->lineEdit->setValidator(validator);<br />
}</p>
<p>Widget::~Widget()<br />
{<br />
    delete ui;<br />
}</p>
<p>Světe div se, máme hotovo. Pokud svůj program nyní zkompilujete, zjistíte, že nic jiného než integerové číslo v rozmezí 0 až 100 do lineEditu skutečně nelze zapsat. Konstruktor objektu QintValidator je pochopitelně přetížený, a proto pokud potřebujete, můžete stanovený limit velmi jednoduše odstranit. Stačí, když příslušný řádek zaměníte za tento:</p>
<p>validator = new QIntValidator(this);</p>
<p>Stále budete těžit z toho, že uživatel dokáže vložit jen platné integerové číslo. Ovšem nezapomeňte, že nyní již může jít i do záporných hodnot. Uvedené řešení se proto nehodí v případě, kdy očekáváte pouze kladný rozsah. Jako zajímavý způsob řešení uvedené situace se mi jeví stanovení horní hranice na konstantu INT_MAX, která symbolizuje maximální hodnotu integeru, což pro naše účely plně postačuje.</p>
<p>validator = new QIntValidator(0,INT_MAX,this);</p>
<h4>Příchozí dotazy:</h4><ul><li>Přidat komentář Jméno Zadejte validační kód</li></ul>]]></content:encoded>
			<wfw:commentRss>http://szj.cz/qt-%e2%80%93-lineedit-a-validace-na-zadani-integeroveho-cisla/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
