<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Bliko's P.S.I Deblog</title>
	<atom:link href="http://bliko.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://bliko.wordpress.com</link>
	<description>Just another WordPress.com weblog</description>
	<lastBuildDate>Mon, 10 Nov 2008 11:36:26 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='bliko.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Bliko's P.S.I Deblog</title>
		<link>http://bliko.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://bliko.wordpress.com/osd.xml" title="Bliko&#039;s P.S.I Deblog" />
	<atom:link rel='hub' href='http://bliko.wordpress.com/?pushpress=hub'/>
		<item>
		<title>C++ em QT 4</title>
		<link>http://bliko.wordpress.com/2008/11/10/c-em-qt-4/</link>
		<comments>http://bliko.wordpress.com/2008/11/10/c-em-qt-4/#comments</comments>
		<pubDate>Mon, 10 Nov 2008 11:30:49 +0000</pubDate>
		<dc:creator>bliko</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://bliko.wordpress.com/?p=21</guid>
		<description><![CDATA[QT 4 é a ferramenta que nos permite trabalhar na parte gráfica da programação, logo involve código mais complicado, mas que não é impossível de compreender. Por agora, o objectivo é ter algo como isto no fim da nossa jornada pela programação em QT 4: Vamos começar a pouco-a-pouco construir esta janela. O primeiro passo [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bliko.wordpress.com&amp;blog=4907033&amp;post=21&amp;subd=bliko&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>QT 4 é a ferramenta que nos permite trabalhar na parte gráfica da programação, logo involve código mais complicado, mas que não é impossível de compreender.</p>
<p>Por agora, o objectivo é ter algo como isto no fim da nossa jornada pela programação em QT 4:</p>
<p style="text-align:center;"><a href="http://bliko.files.wordpress.com/2008/11/qt.png"><img class="size-full wp-image-22 aligncenter" title="qt" src="http://bliko.files.wordpress.com/2008/11/qt.png?w=780" alt="qt"   /></a></p>
<p>Vamos começar a pouco-a-pouco construir esta janela. O primeiro passo é escrever os dias da semana como no lado esquerdo da nossa aplicação:</p>
<p><pre class="brush: cpp;">
#include &lt;QApplication&gt;
#include &lt;QPushButton&gt;
#include &lt;QLabel&gt;
#include &lt;QSlider&gt;
#include &lt;QSpinBox&gt;
#include &lt;QTimeEdit&gt;
#include &lt;QHBoxLayout&gt;

int main(int argc, char *argv[]){
	QApplication app(argc, argv);
	QWidget *janela = new QWidget;

	QLabel *segunda = new QLabel(&quot;segunda&quot;);
	QLabel *terca = new QLabel(&quot;terca&quot;);
	QLabel *quarta = new QLabel(&quot;quarta&quot;);
	QLabel *quinta = new QLabel(&quot;quinta&quot;);
	QLabel *sexta = new QLabel(&quot;sexta&quot;);
	QLabel *sabado = new QLabel(&quot;sabado&quot;);
	QLabel *domingo = new QLabel(&quot;domingo&quot;);

	QVBoxLayout *col1 = new QVBoxLayout;
	QHBoxLayout *principal = new QHBoxLayout;

	col1-&gt;addWidget(segunda);
	col1-&gt;addWidget(terca);
	col1-&gt;addWidget(quarta);
	col1-&gt;addWidget(quinta);
	col1-&gt;addWidget(sexta);
	col1-&gt;addWidget(sabado);
	col1-&gt;addWidget(domingo);

	principal-&gt;addLayout(col1);

	janela-&gt;setLayout(principal);
	janela-&gt;show();

	return app.exec();
}
</pre></p>
<p>Para compilar este código deve proceder da seguinte maneira:</p>
<ul>
<li>Guardar este código num ficheiro de texto dentro de um directório (uma pasta no Desktop faz o efeito), que neste caso vou chamar de qt;</li>
<li>Depois, pela linha de comandos, acedemos à pasta como habitual:</li>
</ul>
<p><pre class="brush: cpp;">
$ cd Desktop/qt/1.cpp
</pre></p>
<p>Vou chamar ao ficheiro que contém o código: &#8220;1.cpp&#8221;, e depois para compilar fazemos seguinte:</p>
<p><pre class="brush: cpp;">
$ qmake -project
</pre></p>
<p>Isto vai criar o ficheiro qt.pro, para de seguida corrermos o código:</p>
<p><pre class="brush: cpp;">
$ qmake qt.pro
</pre></p>
<p>Isto vai criar o ficheiro &#8220;MakeFile&#8221;, o próximo código será:</p>
<p><pre class="brush: cpp;">
$ make
</pre></p>
<p>Só isto vai criar o ficheiro &#8220;qt&#8221; e podemos compilar como fazemos num ficheiro C/C++:</p>
<p><pre class="brush: cpp;">
$ ./qt
</pre></p>
<p>De seguida aparecerá uma janela com os dias da semana, alinhados verticalmente.</p>
<ul>
<li>Spacer</li>
</ul>
<p>O próximo passo será alargar a nossa janela para os lados:</p>
<p><pre class="brush: cpp;">
#include &lt;QApplication&gt;
#include &lt;QPushButton&gt;
#include &lt;QLabel&gt;
#include &lt;QSlider&gt;
#include &lt;QSpinBox&gt;
#include &lt;QTimeEdit&gt;
#include &lt;QHBoxLayout&gt;
#include &lt;QSpacerItem&gt;

int main(int argc, char *argv[]){
	QApplication app(argc, argv);
	QWidget *janela = new QWidget;
	QSpacerItem *spacer1 = new QSpacerItem(400,0);

	QLabel *segunda = new QLabel(&quot;segunda&quot;);
	QLabel *terca = new QLabel(&quot;terca&quot;);
	QLabel *quarta = new QLabel(&quot;quarta&quot;);
	QLabel *quinta = new QLabel(&quot;quinta&quot;);
	QLabel *sexta = new QLabel(&quot;sexta&quot;);
	QLabel *sabado = new QLabel(&quot;sabado&quot;);
	QLabel *domingo = new QLabel(&quot;domingo&quot;);

	QVBoxLayout *col1 = new QVBoxLayout;
	QHBoxLayout *principal = new QHBoxLayout;

	col1-&gt;addWidget(segunda);
	col1-&gt;addWidget(terca);
	col1-&gt;addWidget(quarta);
	col1-&gt;addWidget(quinta);
	col1-&gt;addWidget(sexta);
	col1-&gt;addWidget(sabado);
	col1-&gt;addWidget(domingo);

	principal-&gt;addLayout(col1);
	principal-&gt;addItem(spacer1);

	janela-&gt;setLayout(principal);
	janela-&gt;show();

	return app.exec();
}
</pre></p>
<p>Isto vai nos dar a mesma janela que a anterior mas alargada para os lados.</p>
<ul>
<li>Spinboxes</li>
</ul>
<p><pre class="brush: cpp;">
#include &lt;QApplication&gt;
#include &lt;QPushButton&gt;
#include &lt;QLabel&gt;
#include &lt;QSlider&gt;
#include &lt;QSpinBox&gt;
#include &lt;QTimeEdit&gt;
#include &lt;QHBoxLayout&gt;
#include &lt;QSpacerItem&gt;

int main(int argc, char *argv[]){
	QApplication app(argc, argv);
	QWidget *janela = new QWidget;
	QSpacerItem *spacer1 = new QSpacerItem(400,0);

	//Criar os objectos
	QLabel *segunda = new QLabel(&quot;segunda&quot;);
	QLabel *terca = new QLabel(&quot;terca&quot;);
	QLabel *quarta = new QLabel(&quot;quarta&quot;);
	QLabel *quinta = new QLabel(&quot;quinta&quot;);
	QLabel *sexta = new QLabel(&quot;sexta&quot;);
	QLabel *sabado = new QLabel(&quot;sabado&quot;);
	QLabel *domingo = new QLabel(&quot;domingo&quot;);

	QSpinBox *spin1 = new QSpinBox;
	QSpinBox *spin2 = new QSpinBox;
	QSpinBox *spin3 = new QSpinBox;
	QSpinBox *spin4 = new QSpinBox;
	QSpinBox *spin5 = new QSpinBox;
	QSpinBox *spin6 = new QSpinBox;
	QSpinBox *spin7 = new QSpinBox;

	//Layouts
	QVBoxLayout *col1 = new QVBoxLayout;
	QVBoxLayout *col2 = new QVBoxLayout;
	QHBoxLayout *principal = new QHBoxLayout;

	col1-&gt;addWidget(segunda);
	col1-&gt;addWidget(terca);
	col1-&gt;addWidget(quarta);
	col1-&gt;addWidget(quinta);
	col1-&gt;addWidget(sexta);
	col1-&gt;addWidget(sabado);
	col1-&gt;addWidget(domingo);

	col2-&gt;addWidget(spin1);
	col2-&gt;addWidget(spin2);
	col2-&gt;addWidget(spin3);
	col2-&gt;addWidget(spin4);
	col2-&gt;addWidget(spin5);
	col2-&gt;addWidget(spin6);
	col2-&gt;addWidget(spin7);

	principal-&gt;addLayout(col1);
	principal-&gt;addLayout(col2);
	principal-&gt;addItem(spacer1);

	janela-&gt;setLayout(principal);
	janela-&gt;show();

	return app.exec();
}
</pre></p>
<p>Este passo vai-nos criar as spinboxes, que são as caixinhas com as setas para cima e para baixo, para podermos mudar os números.</p>
<ul>
<li>Sliders</li>
</ul>
<p><pre class="brush: cpp;">
#include &lt;QApplication&gt;
#include &lt;QPushButton&gt;
#include &lt;QLabel&gt;
#include &lt;QSlider&gt;
#include &lt;QSpinBox&gt;
#include &lt;QTimeEdit&gt;
#include &lt;QHBoxLayout&gt;
#include &lt;QSpacerItem&gt;

int main(int argc, char *argv[]){
	QApplication app(argc, argv);
	QWidget *janela = new QWidget;
	QSpacerItem *spacer1 = new QSpacerItem(400,0);

	//Criar os objectos
	QLabel *segunda = new QLabel(&quot;segunda&quot;);
	QLabel *terca = new QLabel(&quot;terca&quot;);
	QLabel *quarta = new QLabel(&quot;quarta&quot;);
	QLabel *quinta = new QLabel(&quot;quinta&quot;);
	QLabel *sexta = new QLabel(&quot;sexta&quot;);
	QLabel *sabado = new QLabel(&quot;sabado&quot;);
	QLabel *domingo = new QLabel(&quot;domingo&quot;);

	QSpinBox *spin1 = new QSpinBox;
	QSpinBox *spin2 = new QSpinBox;
	QSpinBox *spin3 = new QSpinBox;
	QSpinBox *spin4 = new QSpinBox;
	QSpinBox *spin5 = new QSpinBox;
	QSpinBox *spin6 = new QSpinBox;
	QSpinBox *spin7 = new QSpinBox;

	QSlider *sh1 = new QSlider(Qt::Horizontal);
	QSlider *sh2 = new QSlider(Qt::Horizontal);
	QSlider *sh3 = new QSlider(Qt::Horizontal);
	QSlider *sh4 = new QSlider(Qt::Horizontal);
	QSlider *sh5 = new QSlider(Qt::Horizontal);
	QSlider *sh6 = new QSlider(Qt::Horizontal);
	QSlider *sh7 = new QSlider(Qt::Horizontal);

	//Layouts
	QVBoxLayout *col1 = new QVBoxLayout;
	QVBoxLayout *col2 = new QVBoxLayout;
	QVBoxLayout *col3 = new QVBoxLayout;
	QHBoxLayout *principal = new QHBoxLayout;

	col1-&gt;addWidget(segunda);
	col1-&gt;addWidget(terca);
	col1-&gt;addWidget(quarta);
	col1-&gt;addWidget(quinta);
	col1-&gt;addWidget(sexta);
	col1-&gt;addWidget(sabado);
	col1-&gt;addWidget(domingo);

	col2-&gt;addWidget(spin1);
	col2-&gt;addWidget(spin2);
	col2-&gt;addWidget(spin3);
	col2-&gt;addWidget(spin4);
	col2-&gt;addWidget(spin5);
	col2-&gt;addWidget(spin6);
	col2-&gt;addWidget(spin7);

	col3-&gt;addWidget(sh1);
	col3-&gt;addWidget(sh2);
	col3-&gt;addWidget(sh3);
	col3-&gt;addWidget(sh4);
	col3-&gt;addWidget(sh5);
	col3-&gt;addWidget(sh6);
	col3-&gt;addWidget(sh7);

	principal-&gt;addLayout(col1);
	principal-&gt;addLayout(col2);
	principal-&gt;addLayout(col3);
	principal-&gt;addItem(spacer1);

	janela-&gt;setLayout(principal);
	janela-&gt;show();

	return app.exec();
}
</pre></p>
<p>Agora temos os sliders (objectos do lado direito das spinboxes).</p>
<ul>
<li>Botão</li>
</ul>
<p><pre class="brush: cpp;">
#include &lt;QApplication&gt;
#include &lt;QPushButton&gt;
#include &lt;QLabel&gt;
#include &lt;QSlider&gt;
#include &lt;QSpinBox&gt;
#include &lt;QTimeEdit&gt;
#include &lt;QHBoxLayout&gt;
#include &lt;QSpacerItem&gt;

int main(int argc, char *argv[]){
	QApplication app(argc, argv);
	QWidget *janela = new QWidget;
	QSpacerItem *spacer1 = new QSpacerItem(400,0);
	QPushButton *sair = new QPushButton(&quot;Sair&quot;);

	//Criar os objectos
	QLabel *segunda = new QLabel(&quot;segunda&quot;);
	QLabel *terca = new QLabel(&quot;terca&quot;);
	QLabel *quarta = new QLabel(&quot;quarta&quot;);
	QLabel *quinta = new QLabel(&quot;quinta&quot;);
	QLabel *sexta = new QLabel(&quot;sexta&quot;);
	QLabel *sabado = new QLabel(&quot;sabado&quot;);
	QLabel *domingo = new QLabel(&quot;domingo&quot;);

	QSpinBox *spin1 = new QSpinBox;
	QSpinBox *spin2 = new QSpinBox;
	QSpinBox *spin3 = new QSpinBox;
	QSpinBox *spin4 = new QSpinBox;
	QSpinBox *spin5 = new QSpinBox;
	QSpinBox *spin6 = new QSpinBox;
	QSpinBox *spin7 = new QSpinBox;

	QSlider *sh1 = new QSlider(Qt::Horizontal);
	QSlider *sh2 = new QSlider(Qt::Horizontal);
	QSlider *sh3 = new QSlider(Qt::Horizontal);
	QSlider *sh4 = new QSlider(Qt::Horizontal);
	QSlider *sh5 = new QSlider(Qt::Horizontal);
	QSlider *sh6 = new QSlider(Qt::Horizontal);
	QSlider *sh7 = new QSlider(Qt::Horizontal);

	//Layouts
	QVBoxLayout *col1 = new QVBoxLayout;
	QVBoxLayout *col2 = new QVBoxLayout;
	QVBoxLayout *col3 = new QVBoxLayout;
	QHBoxLayout *principal = new QHBoxLayout;
	QVBoxLayout *fim = new QVBoxLayout;
	QVBoxLayout *todo = new QVBoxLayout;

	col1-&gt;addWidget(segunda);
	col1-&gt;addWidget(terca);
	col1-&gt;addWidget(quarta);
	col1-&gt;addWidget(quinta);
	col1-&gt;addWidget(sexta);
	col1-&gt;addWidget(sabado);
	col1-&gt;addWidget(domingo);

	col2-&gt;addWidget(spin1);
	col2-&gt;addWidget(spin2);
	col2-&gt;addWidget(spin3);
	col2-&gt;addWidget(spin4);
	col2-&gt;addWidget(spin5);
	col2-&gt;addWidget(spin6);
	col2-&gt;addWidget(spin7);

	col3-&gt;addWidget(sh1);
	col3-&gt;addWidget(sh2);
	col3-&gt;addWidget(sh3);
	col3-&gt;addWidget(sh4);
	col3-&gt;addWidget(sh5);
	col3-&gt;addWidget(sh6);
	col3-&gt;addWidget(sh7);

	principal-&gt;addLayout(col1);
	principal-&gt;addLayout(col2);
	principal-&gt;addLayout(col3);

	fim-&gt;addItem(spacer1);
	fim-&gt;addWidget(sair);

	todo-&gt;addLayout(principal);
	todo-&gt;addLayout(fim);

	janela-&gt;setLayout(todo);
	janela-&gt;show();

	return app.exec();
}
</pre></p>
<p>Agora criamos o botão sair, mas ainda n faz nada.</p>
<ul>
<li>Connect: Spinbox ao Slider</li>
</ul>
<p><pre class="brush: cpp;">
#include &lt;QApplication&gt;
#include &lt;QPushButton&gt;
#include &lt;QLabel&gt;
#include &lt;QSlider&gt;
#include &lt;QSpinBox&gt;
#include &lt;QTimeEdit&gt;
#include &lt;QHBoxLayout&gt;
#include &lt;QSpacerItem&gt;

int main(int argc, char *argv[]){
	QApplication app(argc, argv);
	QWidget *janela = new QWidget;
	QSpacerItem *spacer1 = new QSpacerItem(400,0);
	QPushButton *sair = new QPushButton(&quot;Sair&quot;);

	//Criar os objectos
	QLabel *segunda = new QLabel(&quot;segunda&quot;);
	QLabel *terca = new QLabel(&quot;terca&quot;);
	QLabel *quarta = new QLabel(&quot;quarta&quot;);
	QLabel *quinta = new QLabel(&quot;quinta&quot;);
	QLabel *sexta = new QLabel(&quot;sexta&quot;);
	QLabel *sabado = new QLabel(&quot;sabado&quot;);
	QLabel *domingo = new QLabel(&quot;domingo&quot;);

	QSpinBox *spin1 = new QSpinBox;
	QSpinBox *spin2 = new QSpinBox;
	QSpinBox *spin3 = new QSpinBox;
	QSpinBox *spin4 = new QSpinBox;
	QSpinBox *spin5 = new QSpinBox;
	QSpinBox *spin6 = new QSpinBox;
	QSpinBox *spin7 = new QSpinBox;

	QSlider *sh1 = new QSlider(Qt::Horizontal);
	QSlider *sh2 = new QSlider(Qt::Horizontal);
	QSlider *sh3 = new QSlider(Qt::Horizontal);
	QSlider *sh4 = new QSlider(Qt::Horizontal);
	QSlider *sh5 = new QSlider(Qt::Horizontal);
	QSlider *sh6 = new QSlider(Qt::Horizontal);
	QSlider *sh7 = new QSlider(Qt::Horizontal);

	//Layouts
	QVBoxLayout *col1 = new QVBoxLayout;
	QVBoxLayout *col2 = new QVBoxLayout;
	QVBoxLayout *col3 = new QVBoxLayout;
	QHBoxLayout *principal = new QHBoxLayout;
	QVBoxLayout *fim = new QVBoxLayout;
	QVBoxLayout *todo = new QVBoxLayout;

	col1-&gt;addWidget(segunda);
	col1-&gt;addWidget(terca);
	col1-&gt;addWidget(quarta);
	col1-&gt;addWidget(quinta);
	col1-&gt;addWidget(sexta);
	col1-&gt;addWidget(sabado);
	col1-&gt;addWidget(domingo);

	col2-&gt;addWidget(spin1);
	col2-&gt;addWidget(spin2);
	col2-&gt;addWidget(spin3);
	col2-&gt;addWidget(spin4);
	col2-&gt;addWidget(spin5);
	col2-&gt;addWidget(spin6);
	col2-&gt;addWidget(spin7);

	col3-&gt;addWidget(sh1);
	col3-&gt;addWidget(sh2);
	col3-&gt;addWidget(sh3);
	col3-&gt;addWidget(sh4);
	col3-&gt;addWidget(sh5);
	col3-&gt;addWidget(sh6);
	col3-&gt;addWidget(sh7);

	QObject::connect(spin1, SIGNAL(valueChanged(int)), sh1, SLOT(setValue (int)));
	QObject::connect(spin2, SIGNAL(valueChanged(int)), sh2, SLOT(setValue (int)));
	QObject::connect(spin3, SIGNAL(valueChanged(int)), sh3, SLOT(setValue (int)));
	QObject::connect(spin4, SIGNAL(valueChanged(int)), sh4, SLOT(setValue (int)));
	QObject::connect(spin5, SIGNAL(valueChanged(int)), sh5, SLOT(setValue (int)));
	QObject::connect(spin6, SIGNAL(valueChanged(int)), sh6, SLOT(setValue (int)));
	QObject::connect(spin7, SIGNAL(valueChanged(int)), sh7, SLOT(setValue (int)));

	QObject::connect(sh1, SIGNAL(valueChanged(int)), spin1, SLOT(setValue (int)));
	QObject::connect(sh2, SIGNAL(valueChanged(int)), spin2, SLOT(setValue (int)));
	QObject::connect(sh3, SIGNAL(valueChanged(int)), spin3, SLOT(setValue (int)));
	QObject::connect(sh4, SIGNAL(valueChanged(int)), spin4, SLOT(setValue (int)));
	QObject::connect(sh5, SIGNAL(valueChanged(int)), spin5, SLOT(setValue (int)));
	QObject::connect(sh6, SIGNAL(valueChanged(int)), spin6, SLOT(setValue (int)));
	QObject::connect(sh7, SIGNAL(valueChanged(int)), spin7, SLOT(setValue (int)));

	principal-&gt;addLayout(col1);
	principal-&gt;addLayout(col2);
	principal-&gt;addLayout(col3);

	fim-&gt;addItem(spacer1);
	fim-&gt;addWidget(sair);

	todo-&gt;addLayout(principal);
	todo-&gt;addLayout(fim);

	janela-&gt;setLayout(todo);
	janela-&gt;show();

	return app.exec();
}
</pre></p>
<p>Agora temos as spinboxes, e os sliders ligados, fazendo com que se alterarmos um número de um lado, o outro mude automaticamente para o mesmo.</p>
<ul>
<li>Botão Terminar</li>
</ul>
<p><pre class="brush: cpp;">
#include &lt;QApplication&gt;
#include &lt;QPushButton&gt;
#include &lt;QLabel&gt;
#include &lt;QSlider&gt;
#include &lt;QSpinBox&gt;
#include &lt;QTimeEdit&gt;
#include &lt;QHBoxLayout&gt;
#include &lt;QSpacerItem&gt;

int main(int argc, char *argv[]){
	QApplication app(argc, argv);
	QWidget *janela = new QWidget;
	QSpacerItem *spacer1 = new QSpacerItem(400,0);
	QPushButton *sair = new QPushButton(&quot;&amp;Sair&quot;);

	//Criar os objectos
	QLabel *segunda = new QLabel(&quot;segunda&quot;);
	QLabel *terca = new QLabel(&quot;terca&quot;);
	QLabel *quarta = new QLabel(&quot;quarta&quot;);
	QLabel *quinta = new QLabel(&quot;quinta&quot;);
	QLabel *sexta = new QLabel(&quot;sexta&quot;);
	QLabel *sabado = new QLabel(&quot;sabado&quot;);
	QLabel *domingo = new QLabel(&quot;domingo&quot;);

	QSpinBox *spin1 = new QSpinBox;
	QSpinBox *spin2 = new QSpinBox;
	QSpinBox *spin3 = new QSpinBox;
	QSpinBox *spin4 = new QSpinBox;
	QSpinBox *spin5 = new QSpinBox;
	QSpinBox *spin6 = new QSpinBox;
	QSpinBox *spin7 = new QSpinBox;
	spin1-&gt;setRange (0, 5);
	spin2-&gt;setRange (0, 5);
	spin3-&gt;setRange (0, 5);
	spin4-&gt;setRange (0, 5);
	spin5-&gt;setRange (0, 5);
	spin6-&gt;setRange (0, 5);
	spin7-&gt;setRange (0, 5);

	QSlider *sh1 = new QSlider(Qt::Horizontal);
	QSlider *sh2 = new QSlider(Qt::Horizontal);
	QSlider *sh3 = new QSlider(Qt::Horizontal);
	QSlider *sh4 = new QSlider(Qt::Horizontal);
	QSlider *sh5 = new QSlider(Qt::Horizontal);
	QSlider *sh6 = new QSlider(Qt::Horizontal);
	QSlider *sh7 = new QSlider(Qt::Horizontal);
	sh1-&gt;setRange (0, 5);
	sh2-&gt;setRange (0, 5);
	sh3-&gt;setRange (0, 5);
	sh4-&gt;setRange (0, 5);
	sh5-&gt;setRange (0, 5);
	sh6-&gt;setRange (0, 5);
	sh7-&gt;setRange (0, 5);

	//Layouts
	QVBoxLayout *col1 = new QVBoxLayout;
	QVBoxLayout *col2 = new QVBoxLayout;
	QVBoxLayout *col3 = new QVBoxLayout;
	QHBoxLayout *principal = new QHBoxLayout;
	QVBoxLayout *fim = new QVBoxLayout;
	QVBoxLayout *todo = new QVBoxLayout;

	col1-&gt;addWidget(segunda);
	col1-&gt;addWidget(terca);
	col1-&gt;addWidget(quarta);
	col1-&gt;addWidget(quinta);
	col1-&gt;addWidget(sexta);
	col1-&gt;addWidget(sabado);
	col1-&gt;addWidget(domingo);

	col2-&gt;addWidget(spin1);
	col2-&gt;addWidget(spin2);
	col2-&gt;addWidget(spin3);
	col2-&gt;addWidget(spin4);
	col2-&gt;addWidget(spin5);
	col2-&gt;addWidget(spin6);
	col2-&gt;addWidget(spin7);

	col3-&gt;addWidget(sh1);
	col3-&gt;addWidget(sh2);
	col3-&gt;addWidget(sh3);
	col3-&gt;addWidget(sh4);
	col3-&gt;addWidget(sh5);
	col3-&gt;addWidget(sh6);
	col3-&gt;addWidget(sh7);

	QObject::connect(spin1, SIGNAL(valueChanged(int)), sh1, SLOT(setValue (int)));
	QObject::connect(spin2, SIGNAL(valueChanged(int)), sh2, SLOT(setValue (int)));
	QObject::connect(spin3, SIGNAL(valueChanged(int)), sh3, SLOT(setValue (int)));
	QObject::connect(spin4, SIGNAL(valueChanged(int)), sh4, SLOT(setValue (int)));
	QObject::connect(spin5, SIGNAL(valueChanged(int)), sh5, SLOT(setValue (int)));
	QObject::connect(spin6, SIGNAL(valueChanged(int)), sh6, SLOT(setValue (int)));
	QObject::connect(spin7, SIGNAL(valueChanged(int)), sh7, SLOT(setValue (int)));

	QObject::connect(sh1, SIGNAL(valueChanged(int)), spin1, SLOT(setValue (int)));
	QObject::connect(sh2, SIGNAL(valueChanged(int)), spin2, SLOT(setValue (int)));
	QObject::connect(sh3, SIGNAL(valueChanged(int)), spin3, SLOT(setValue (int)));
	QObject::connect(sh4, SIGNAL(valueChanged(int)), spin4, SLOT(setValue (int)));
	QObject::connect(sh5, SIGNAL(valueChanged(int)), spin5, SLOT(setValue (int)));
	QObject::connect(sh6, SIGNAL(valueChanged(int)), spin6, SLOT(setValue (int)));
	QObject::connect(sh7, SIGNAL(valueChanged(int)), spin7, SLOT(setValue (int)));

	QObject::connect(sair, SIGNAL(clicked()), &amp;app, SLOT(quit()));

	principal-&gt;addLayout(col1);
	principal-&gt;addLayout(col2);
	principal-&gt;addLayout(col3);

	fim-&gt;addItem(spacer1);
	fim-&gt;addWidget(sair);

	todo-&gt;addLayout(principal);
	todo-&gt;addLayout(fim);

	janela-&gt;setLayout(todo);
	janela-&gt;show();

	return app.exec();
}
</pre></p>
<p>O programa já fazia tudo, menos o botão sair que agora, quando clicado termina mesmo o programa.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/bliko.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/bliko.wordpress.com/21/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/bliko.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/bliko.wordpress.com/21/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/bliko.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/bliko.wordpress.com/21/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/bliko.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/bliko.wordpress.com/21/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/bliko.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/bliko.wordpress.com/21/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/bliko.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/bliko.wordpress.com/21/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/bliko.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/bliko.wordpress.com/21/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bliko.wordpress.com&amp;blog=4907033&amp;post=21&amp;subd=bliko&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://bliko.wordpress.com/2008/11/10/c-em-qt-4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/cbf5c4984c5cee1626a9bed5a96d5328?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">bliko</media:title>
		</media:content>

		<media:content url="http://bliko.files.wordpress.com/2008/11/qt.png" medium="image">
			<media:title type="html">qt</media:title>
		</media:content>
	</item>
		<item>
		<title>Programar em C- usando ficheiros de texto</title>
		<link>http://bliko.wordpress.com/2008/10/07/programar-em-c-usando-ficheiros-de-texto/</link>
		<comments>http://bliko.wordpress.com/2008/10/07/programar-em-c-usando-ficheiros-de-texto/#comments</comments>
		<pubDate>Tue, 07 Oct 2008 10:16:08 +0000</pubDate>
		<dc:creator>bliko</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://bliko.wordpress.com/?p=10</guid>
		<description><![CDATA[Este blog vai começar por um tópico, não ideal para quem ainda não deu os primeiros passos na área de programação, que é, manipulação de ficheiros. Pelo que este blog destina-se a programadores com algum conhecimento nesta área. Neste tópico vou tratar das seguintes funções: fgetc/ fputc; fprintf/ fscanf; fwrite/ fread; Comecemos pelo fputc, seguido [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bliko.wordpress.com&amp;blog=4907033&amp;post=10&amp;subd=bliko&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Este blog vai começar por um tópico, não ideal para quem ainda não deu os primeiros passos na área de programação, que é, manipulação de ficheiros. Pelo que este blog destina-se a programadores com algum conhecimento nesta área.</p>
<p>Neste tópico vou tratar das seguintes funções:</p>
<p>fgetc/ fputc;</p>
<p>fprintf/ fscanf;</p>
<p>fwrite/ fread;</p>
<p>Comecemos pelo fputc, seguido do fgetc;</p>
<p><pre class="brush: cpp;">
#include&lt;stdio.h&gt;
int main(){
	FILE *fp=fopen(&quot;dados.txt&quot;, &quot;w&quot;);
	char caracter;
	caracter=fgetc(fp);
	printf(&quot;caracter= &quot;);scanf(&quot;%c&quot;, &amp;caracter);
	fputc(caracter, fp);
	fclose(fp);

	return 0;
}
</pre></p>
<p>Este programa cria um ficheiro (mesmo que ele já exista) e coloca-lhe lá dentro uma letra dada pelo utilizador.</p>
<p><pre class="brush: cpp;">
#include&lt;stdio.h&gt;
int main(){
	FILE *fp=fopen(&quot;dados.txt&quot;, &quot;r&quot;);
	char caracter;
	caracter=fgetc(fp);
	printf(&quot;%c\n&quot;, caracter);
	fclose(fp);

	return 0;
}
</pre></p>
<p>Neste exemplo o programa lê do ficheiro o primeiro carácter, se esta função fosse feita dentro de um ciclo, esta iria ler letra a letra, uma depois da outra.</p>
<p>Agora o fprintf, e o fscanf:</p>
<p><pre class="brush: cpp;">
#include&lt;stdio.h&gt;
int main(){
	FILE *fp=fopen(&quot;dados.txt&quot;, &quot;w&quot;);
	int a=1, b=2, c=3;
	fprintf(fp, &quot;%d %d %d&quot;, a, b, c);
	fclose(fp);

	return 0;
}
</pre></p>
<p>Neste exemplo o programa cria o ficheiro e coloca la dentro os 3 dados, tal como na linha de printfestá descrito.</p>
<p><pre class="brush: cpp;">
#include&lt;stdio.h&gt;
int main(){
	FILE *fp=fopen(&quot;dados.txt&quot;, &quot;r&quot;);
	int a, b, c;
	fscanf(fp, &quot;%d %d %d&quot;, &amp;a, &amp;b, &amp;c);
	printf(&quot;%d %d %d\n&quot;, a, b, c);
	fclose(fp);

	return 0;
}
</pre></p>
<p>Neste exemplo, o programa vai ao ficheiro criado no exemplo anterior e lê os 3 dados lá guardados.</p>
<p>E para finalizar, o fwrite, fread, que escreve os dados em forma binária, pelo que se tentar ler os dados abrindo o ficheiro, não conseguirá ler os dados:</p>
<p><pre class="brush: cpp;">
#include&lt;stdio.h&gt;
int main(){
	FILE *fp=fopen(&quot;dados.txt&quot;, &quot;w&quot;);
	int a[3]={1, 2, 3};
	fwrite(a, sizeof(int), 3, fp);
	fclose(fp);

	return 0;
}
</pre></p>
<p>O programa cria o ficheiro e introduz os valores lá dentro.</p>
<p><pre class="brush: cpp;">
#include&lt;stdio.h&gt;
int main(){
	FILE *fp=fopen(&quot;dados.txt&quot;, &quot;rb&quot;);
	int a[3];
	fread(a, sizeof(int), 3, fp);
	printf(&quot;%d %d %d\n&quot;, a[0], a[1], a[2]);
	fclose(fp);

	return 0;
}
</pre></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/bliko.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/bliko.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/bliko.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/bliko.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/bliko.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/bliko.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/bliko.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/bliko.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/bliko.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/bliko.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/bliko.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/bliko.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/bliko.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/bliko.wordpress.com/10/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bliko.wordpress.com&amp;blog=4907033&amp;post=10&amp;subd=bliko&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://bliko.wordpress.com/2008/10/07/programar-em-c-usando-ficheiros-de-texto/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/cbf5c4984c5cee1626a9bed5a96d5328?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">bliko</media:title>
		</media:content>
	</item>
	</channel>
</rss>
