<?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; soubor</title>
	<atom:link href="http://szj.cz/tag/soubor/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 – čtení ze souboru</title>
		<link>http://szj.cz/qt-%e2%80%93-cteni-ze-souboru/</link>
		<comments>http://szj.cz/qt-%e2%80%93-cteni-ze-souboru/#comments</comments>
		<pubDate>Fri, 10 Feb 2012 10:09:10 +0000</pubDate>
		<dc:creator><![CDATA[fredomgc]]></dc:creator>
				<category><![CDATA[Qt]]></category>
		<category><![CDATA[načtení souboru]]></category>
		<category><![CDATA[soubor]]></category>

		<guid isPermaLink="false">http://szj.cz/?p=168</guid>
		<description><![CDATA[V jednom z dalších tutoriálů týkajících se zaměříme na získání dat uložených ve formě textu a následné zobrazení v okně. Nejprve uživatele vyzveme k výběru požadovaného souboru, díky čemuž získáme potřebou cestu. Následně informace lehce poupravíme a výsledek budeme prezentovat s pomocí prvku textEdit. Zpracování údajů po řádcích Záměrně jsem se rozhodl nenačíst celý soubor [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>V jednom z dalších tutoriálů týkajících se zaměříme na získání dat uložených ve formě textu a následné zobrazení v okně. Nejprve uživatele vyzveme k výběru požadovaného souboru, díky čemuž získáme potřebou cestu. Následně informace lehce poupravíme a výsledek budeme prezentovat s pomocí prvku <strong>textEdit</strong>.</p>
<p><a href="http://szj.cz/wp-content/uploads/2012/02/qt-nacteny-soubor.png"><img class="aligncenter size-full wp-image-170" title="qt-nacteny-soubor" src="http://szj.cz/wp-content/uploads/2012/02/qt-nacteny-soubor.png" alt="Qt - načtený soubor" width="406" height="331" /></a></p>
<h2>Zpracování údajů po řádcích</h2>
<p>Záměrně jsem se rozhodl nenačíst celý soubor najednou, ale postupovat po částech. Získáme tak jednotlivé řádky, se kterými můžeme dále pohodlně pracovat. Pakliže by například soubor obsahoval čísla, musíme vždy každý údaj nejprve převést, aby jej šlo uchovat v proměnné typu <strong>int</strong> či <strong>double</strong>. V našem případě však vyzkoušíme něco jiného. Jednotlivé záznamy obalíme tagem <strong>H3</strong> a výsledek <strong>textEdit</strong> dostane v HTML formě. Zcela jednoduše lze proto s textem provádět mnoho činností – změnu barvy, transformaci v tučný záznam a podobné úpravy.</p>
<p>#include &#8222;mainwindow.h&#8220;<br />
#include &#8222;ui_mainwindow.h&#8220;</p>
<p>#include <QFileDialog><br />
#include <QFile><br />
#include <QTextStream><br />
#include <QMessageBox></p>
<p>MainWindow::MainWindow(QWidget *parent) :<br />
    QMainWindow(parent),<br />
    ui(new Ui::MainWindow)<br />
{<br />
    ui->setupUi(this);</p>
<p>    setCentralWidget(ui->textEdit);</p>
<p>    setWindowTitle(&#8222;Načtení souboru&#8220;);</p>
<p>    connect(ui->action_Nacist_soubor,SIGNAL(triggered()),this,SLOT(nacti_soubor()));<br />
    connect(ui->action_Konec,SIGNAL(triggered()),this,SLOT(close()));<br />
}</p>
<p>MainWindow::~MainWindow()<br />
{<br />
    delete ui;<br />
}</p>
<p>void MainWindow::nacti_soubor()<br />
{<br />
    QString cesta = QFileDialog::getOpenFileName(this,&#8220;Zvolte soubor&#8220;,&#8220;/home&#8220;,&#8220;Textový soubor (*.txt);;Všechny soubory(*.*)&#8220;);</p>
<p>    if(cesta.isNull())<br />
    {<br />
        QMessageBox::warning(this,&#8220;Varování&#8220;,&#8220;Nebyl vybrán žádný soubor k načtení&#8220;);<br />
    }<br />
    else<br />
    {<br />
        QFile soubor(cesta);<br />
        soubor.open(QIODevice::ReadOnly | QIODevice::Text);</p>
<p>        QTextStream stream(&#038;soubor);<br />
        stream.setCodec(&#8222;utf-8&#8243;);<br />
        QString radek,vysledek;</p>
<p>        while(!stream.atEnd())<br />
        {<br />
            radek = soubor.readLine();<br />
            //V proměné radek máme načtená řádek ze souboru a můžeme s ním provádět další operace<br />
            vysledek += &#8222;<br />
<h3 style=\"color:#FF0000;\">&#8222;+radek+&#8220;</h3>
<p>\n&#8220;;</p>
<p>        }<br />
        ui->textEdit->insertHtml(vysledek);<br />
    }<br />
}</p>
<p>Rád bych upozornil na fakt, že okno sloužící k výběru souboru můžeme vyšperkovat k představám programátora. Dozajista využijete specifikování typů povolených koncovek. Činí se tak v jednom z parametrů a to díky stringovému řetězci. Jednotlivé akceptovatelné varianty odděluje dvojice středníků. Dále určujeme i výchozí složku. Protože požívám Linux, vidíte ve zdrojovém kódu /home. Lidé preferující operační systém Windows mohou směle uvést např. C:\data.</p>
<p>Pozor na jednu skutečnost. Uživatel má možnost dialog zjišťující cestu kdykoliv ukončit a my poté pochopitelně nemůžeme žádný soubor načíst. Ošetření vyřeší jednoduchá podmínka testující, zda proměnná <strong>cesta</strong> obsahuje daný řetězec. Pakliže ano, vše je v pořádku a můžeme programu dovolit vykonat činnost, ke které ho vytváříme. V opačném případě raději vypíšeme hlášku a uživateli pochopitelně umožníme se o zvolení cesty pokusit kdykoliv později.</p>
<p>Povšimněte si, že po otevření samotného souboru využijeme knihovnu QTextStream, které předáme parametr typu QFile. Jakmile tak provedeme, můžeme s daty velmi pohodlně zacházet. Začnou-li vás trápit problémy s diakritikou, zkontrolujte, zda máte správně nastaveno kódování.</p>
<p>Díky cyklu s podmínkou na začátku zajistíme obdržení samotných řádků. Ty poté ukládáme do koncové proměnné výsledek. Ještě než se tak stane, však přidáme slíbený párový tag <strong>H3</strong>. Ten navíc obohacuje vlastnost style udávající barvu písma. Metoda insertHtml pak již na závěr celé dílo sama dokoná.</p>
]]></content:encoded>
			<wfw:commentRss>http://szj.cz/qt-%e2%80%93-cteni-ze-souboru/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
