<?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; barva</title>
	<atom:link href="http://szj.cz/tag/barva/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 – získání barvy a náhodného čísla</title>
		<link>http://szj.cz/qt-%e2%80%93-ziskani-barvy-a-nahodneho-cisla/</link>
		<comments>http://szj.cz/qt-%e2%80%93-ziskani-barvy-a-nahodneho-cisla/#comments</comments>
		<pubDate>Thu, 23 Feb 2012 15:21:06 +0000</pubDate>
		<dc:creator><![CDATA[fredomgc]]></dc:creator>
				<category><![CDATA[Qt]]></category>
		<category><![CDATA[barva]]></category>
		<category><![CDATA[barvy]]></category>
		<category><![CDATA[náhodné číslo]]></category>

		<guid isPermaLink="false">http://szj.cz/?p=199</guid>
		<description><![CDATA[Následující tutoriál se bude věnovat rovnou dvěma zajímavým oblastem, které v praxi rozhodně využijete. Dozvíte se, jakým způsobem lze uživatele vyzvat k pohodlnému výběru barvy a naučíte se postup umožňující získání náhodného čísla. Pakliže chcete vytvořit program, který se nebude chovat vždy stejně a zachová si určitý nádech &#34;tajemna&#34;, dozajista se vám využívání nahodilých číselných [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Následující tutoriál se bude věnovat rovnou dvěma zajímavým oblastem, které v praxi rozhodně využijete. Dozvíte se, jakým způsobem lze uživatele vyzvat k pohodlnému výběru barvy a naučíte se postup umožňující získání náhodného čísla. Pakliže chcete vytvořit program, který se nebude chovat vždy stejně a zachová si určitý nádech &quot;tajemna&quot;, dozajista se vám využívání nahodilých číselných proměnných zalíbí. Našim cílem tentokrát bude naprogramovat aplikaci, jenž po výběru barvy změní fádní bílé pozadí <strong>plainTextEditu</strong>. Lidem přitom s výběrem barvy poněkud pomůžeme, protože náhodně doporučíme jedno ze třech předem definovaných zabarvení.</p>
<p><a href="http://szj.cz/wp-content/uploads/2012/02/qt-barva-1.png"><img class="aligncenter size-full wp-image-200" title="qt-barva-1" src="http://szj.cz/wp-content/uploads/2012/02/qt-barva-1.png" alt="Qt - získání barvy - krok 1" width="462" height="233" /></a></p>
<p><a href="http://szj.cz/wp-content/uploads/2012/02/qt-barva-2.png"><img class="aligncenter size-full wp-image-202" title="qt-barva-2" src="http://szj.cz/wp-content/uploads/2012/02/qt-barva-2.png" alt="Qt - získání barvy - krok 2" width="575" height="427" /></a></p>
<p><a href="http://szj.cz/wp-content/uploads/2012/02/qt-barva-3.png"><img class="aligncenter size-full wp-image-204" title="qt-barva-3" src="http://szj.cz/wp-content/uploads/2012/02/qt-barva-3.png" alt="Qt - získání barvy - krok 3" width="462" height="233" /></a></p>
<h2>QColorDialog</h2>
<p>Dialog sloužící ke komfortnímu zvolení barvy není třeba od základu vytvářet. Plně postačí využít ten systémový. S tím nám pomůže knihovna <strong>QColorDialog</strong>. Jako parametr <strong>getColor</strong> přitom uvádíme náhodně zvolenou barvu, kterou přiřazuje do proměnné<strong>switch.</strong> Jako výsledek přitom obdržíte platný <strong>QColor</strong> jen v případě, že uživatel dialogové okno nezruší s pomocí <strong>Cancel</strong>. Toho lze krásně využít v podmínce, která tuto skutečnost testuje. O celou verifikaci se postará metoda <strong>isValid()</strong>. Samotná proměnná typu <strong>QColor</strong> však k nastavení pozadí nestačí. <strong>PlainTextEdit</strong> totiž nic podobného jako <strong>setColor(QColor)</strong> nezná. Musí proto dojít ke zrodu palety (<strong>QPalette</strong>), která v sobě obsahuje různé barvy jednoho objektu a identifikuje je díky <strong>ColorRole</strong> (v našem případě <strong>Qpalette::Base</strong>). Nově vzniklou paletu poté již stačí <strong>plainTextEditu</strong> nastavit s pomocí <strong>setPalette(QPalette)</strong>. V konstruktoru si přitom povšimněte nastavení vlastnosti <strong>autoFillBackgroung</strong> na <strong>true</strong>, což zajistí vyplnění pozadí.</p>
<h2>Náhodná čísla</h2>
<p>Před samotným generováním musíme provést inicializaci. Funkce <strong>qsrand</strong> potřebuje údaj, který se bude měnit s každým spuštěním programu. Tuto záležitost elegantně řeší počet vteřin do půlnoci. Modulo za <strong>qrand</strong> určuje rozsah. Interval v našem případě začíná nulou a končí dvojkou. V podstatě tak dochází k náhodnému opakování tří čísel – 0, 1 a 2.</p>
<p>#include &#8222;widget.h&#8220;<br />
#include &#8222;ui_widget.h&#8220;</p>
<p>#include <QColorDialog><br />
#include <QTime></p>
<p>Widget::Widget(QWidget *parent) :<br />
    QWidget(parent),<br />
    ui(new Ui::Widget)<br />
{<br />
    ui->setupUi(this);</p>
<p>    ui->plainTextEdit->setAutoFillBackground(true);<br />
    this->setWindowTitle(&#8222;Barva&#8220;);</p>
<p>    connect(ui->pb_konec,SIGNAL(clicked()),this,SLOT(close()));<br />
    connect(ui->pb_barva,SIGNAL(clicked()),this,SLOT(barva()));</p>
<p>}</p>
<p>Widget::~Widget()<br />
{<br />
    delete ui;<br />
}</p>
<p>void Widget::barva()<br />
{<br />
    QColor prednastavena;<br />
    QTime pulnoc(0,0,0,0);<br />
    qsrand(pulnoc.secsTo(QTime::currentTime()));<br />
    int nahodna = qrand() % 3;</p>
<p>    switch (nahodna){<br />
    case 0:<br />
        prednastavena = Qt::black;<br />
    break;</p>
<p>    case 1:<br />
        prednastavena = Qt::red;<br />
    break;</p>
<p>    case 2:<br />
        prednastavena = Qt::blue;<br />
    break;</p>
<p>    }</p>
<p>    QColor barva = QColorDialog::getColor(prednastavena);</p>
<p>    if(barva.isValid() == true)<br />
    {<br />
      QPalette paleta;<br />
      paleta.setColor(QPalette::Base,barva);<br />
      ui->plainTextEdit->setPalette(paleta);<br />
    }<br />
}</p>
]]></content:encoded>
			<wfw:commentRss>http://szj.cz/qt-%e2%80%93-ziskani-barvy-a-nahodneho-cisla/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
