<?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; validace</title>
	<atom:link href="http://szj.cz/tag/validace/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 – 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>
