<?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>Mousefire Walking On The Earth &#187; 学习笔记</title>
	<atom:link href="http://www.mousefire.net/category/study/note/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.mousefire.net</link>
	<description>点点滴滴</description>
	<lastBuildDate>Wed, 01 Sep 2010 11:45:29 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Qt学习笔记_Chapter1_4使用参考文档</title>
		<link>http://www.mousefire.net/2010/01/08/qt%e5%ad%a6%e4%b9%a0%e7%ac%94%e8%ae%b0_chapter1_4%e4%bd%bf%e7%94%a8%e5%8f%82%e8%80%83%e6%96%87%e6%a1%a3/</link>
		<comments>http://www.mousefire.net/2010/01/08/qt%e5%ad%a6%e4%b9%a0%e7%ac%94%e8%ae%b0_chapter1_4%e4%bd%bf%e7%94%a8%e5%8f%82%e8%80%83%e6%96%87%e6%a1%a3/#comments</comments>
		<pubDate>Fri, 08 Jan 2010 06:54:03 +0000</pubDate>
		<dc:creator>mousefire</dc:creator>
				<category><![CDATA[Qt学习笔记]]></category>
		<category><![CDATA[Qt assistant]]></category>

		<guid isPermaLink="false">http://www.mousefire.net/2010/01/08/qt%e5%ad%a6%e4%b9%a0%e7%ac%94%e8%ae%b0_chapter1_4%e4%bd%bf%e7%94%a8%e5%8f%82%e8%80%83%e6%96%87%e6%a1%a3/</guid>
		<description><![CDATA[　　Qt的文档确实做得非常不错，虽然是英文的，不过很有条理，还有不少例子，很容易上手。再像学MFC一下，看一下到目前为止接触到类的继承树。]]></description>
			<content:encoded><![CDATA[<p>　　Qt的文档确实做得非常不错，虽然是英文的，不过很有条理，还有不少例子，很容易上手。再像学MFC一下，看一下到目前为止接触到类的继承树。</p>
<p><a href="http://www.mousefire.net/wp-content/uploads/2010/01/image6.png"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="image" border="0" alt="image" src="http://www.mousefire.net/wp-content/uploads/2010/01/image_thumb6.png" width="473" height="194"></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.mousefire.net/2010/01/08/qt%e5%ad%a6%e4%b9%a0%e7%ac%94%e8%ae%b0_chapter1_4%e4%bd%bf%e7%94%a8%e5%8f%82%e8%80%83%e6%96%87%e6%a1%a3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Qt学习笔记_Chapter1_3窗口部件的布局</title>
		<link>http://www.mousefire.net/2010/01/08/qt%e5%ad%a6%e4%b9%a0%e7%ac%94%e8%ae%b0_chapter1_3%e7%aa%97%e5%8f%a3%e9%83%a8%e4%bb%b6%e7%9a%84%e5%b8%83%e5%b1%80/</link>
		<comments>http://www.mousefire.net/2010/01/08/qt%e5%ad%a6%e4%b9%a0%e7%ac%94%e8%ae%b0_chapter1_3%e7%aa%97%e5%8f%a3%e9%83%a8%e4%bb%b6%e7%9a%84%e5%b8%83%e5%b1%80/#comments</comments>
		<pubDate>Fri, 08 Jan 2010 06:41:03 +0000</pubDate>
		<dc:creator>mousefire</dc:creator>
				<category><![CDATA[Qt学习笔记]]></category>
		<category><![CDATA[Qt]]></category>
		<category><![CDATA[布局]]></category>

		<guid isPermaLink="false">http://www.mousefire.net/2010/01/08/qt%e5%ad%a6%e4%b9%a0%e7%ac%94%e8%ae%b0_chapter1_3%e7%aa%97%e5%8f%a3%e9%83%a8%e4%bb%b6%e7%9a%84%e5%b8%83%e5%b1%80/</guid>
		<description><![CDATA[　　Windows7下的程序运行效果图： 　　这一节主要讲了两点：（１）如何用布局（Layout）来管理窗口中窗口部件的几何形状；（２）如何利用信号和槽来同步窗口部件。 　　这个应用程序用了三个窗口部件：一个QSpinBox（微调框）、一个QSlider（滑块）和一个QWidget。其中QWidget是这个应用程序的主窗口，也是QSpinBox和QSlider的父对象，QWidget自己没有父对象。QWidget的构造函数以及它的所有子类都会带一个参数QWidget*，以用来说明谁是它们的父窗口部件。 #include &#60;QApplication&#62; #include &#60;QHBoxLayout&#62; #include &#60;QSlider&#62; #include &#60;QSpinBox&#62; int main(int argc,char *argv[]) {     QApplication app(argc,argv);     QWidget *windows=new QWidget;     windows-&#62;setWindowTitle(&#34;Enter Your Age&#34;);     QSpinBox *spinBox=new QSpinBox;     QSlider *slider=new QSlider(Qt::Horizontal);     spinBox-&#62;setRange(0,130);     slider-&#62;setRange(0,130);     QObject::connect(spinBox,SIGNAL(valueChanged(int)),         slider,SLOT(setValue(int)));     QObject::connect(slider,SIGNAL(valueChanged(int)),         spinBox,SLOT(setValue(int)));     spinBox-&#62;setValue(35);     QHBoxLayout *layout=new QHBoxLayout;     layout-&#62;addWidget(spinBox);     layout-&#62;addWidget(slider);     windows-&#62;setLayout(layout);     windows-&#62;show();     return app.exec(); } Line8,9：创建了Widget对象，使用setWindowTitle()函数来设置显示在窗口标题栏上的文字。 Line10,11：创建了一个QSpinBox和一个QSlider，并分别在第12行和第13行设置了它们的有效范围。本应将这个窗口传递给QSpinBox和QSlider的构造函数，以说明这两个窗口部件的父对象都是这个窗口，但在这里没有这个必要，因为布局系统将会自行得出这一结果并自动把该窗口设置为微调框和滑块的父对象。 Line14-17：调用了两次QObject::connect()，来确保能够让微调框和滑块同步，一旦有一个窗口部件的值发生了改变那么就会发射它的valueChanged(int)信号，而另一个窗口部件就会用这个新值调用它的setValue(int)值。 Line18：将微调框的值设置为35，此时QSpinBox会发射valueChanged(int)信号，其中，int参数的值为35，触发QSlider的setValue(int)槽，避免无限循环的发生，流程如下图所示： Line19-22：使用了一个布局管理器对微调框和滑块进行布局处理。布局管理器(layout manager)是一个能够对其所负责窗口部件的尺寸大小的位置进行设置的对象。Qt有三个主要的布局管理器类：(1)QHBoxLayout：在水平方向上排列窗口部件，从左到右；(2)QVBoxLayout：在竖起方向上排列窗口部件，由上到下；(3)QGridLayout，把各个窗口部件排列在一个网格中。第22行的QWidget::setLayout()函数调用会在窗口上安装该布局管理器。QSpinBox和QSlider会自动“重定义父对象”，成为这个安装了布局的窗口部件的子对象。因此当创建一个需要放进某个布局中的窗口部件时，就没有必要为其显式的指定父对象了。]]></description>
			<content:encoded><![CDATA[<p>　　Windows7下的程序运行效果图：</p>
<p><a href="http://www.mousefire.net/wp-content/uploads/2010/01/image2.png"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="image" border="0" alt="image" src="http://www.mousefire.net/wp-content/uploads/2010/01/image_thumb2.png" width="231" height="80"></a> 　　这一节主要讲了两点：（１）如何用布局（Layout）来管理窗口中窗口部件的几何形状；（２）如何利用信号和槽来同步窗口部件。</p>
<p>　　这个应用程序用了三个窗口部件：一个QSpinBox（微调框）、一个QSlider（滑块）和一个QWidget。其中QWidget是这个应用程序的主窗口，也是QSpinBox和QSlider的父对象，QWidget自己没有父对象。QWidget的构造函数以及它的所有子类都会带一个参数QWidget*，以用来说明谁是它们的父窗口部件。</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:177020f3-0a9a-4daf-a005-3875b5e7e9ec" class="wlWriterEditableSmartContent">
<div class="le-pavsc-container">
<div style="background: #fff; overflow: auto">
<ol style="background: #c2db8a; margin: 0; padding: 0 0 0 5px; white-space: nowrap">
<li><span style="color:#0000ff">#include</span><span style="color:#004000"> </span><span style="color:#a31515">&lt;QApplication&gt;</span></li>
<li class="even"><span style="color:#0000ff">#include</span><span style="color:#004000"> </span><span style="color:#a31515">&lt;QHBoxLayout&gt;</span></li>
<li><span style="color:#0000ff">#include</span><span style="color:#004000"> </span><span style="color:#a31515">&lt;QSlider&gt;</span></li>
<li class="even"><span style="color:#0000ff">#include</span><span style="color:#004000"> </span><span style="color:#a31515">&lt;QSpinBox&gt;</span></li>
<li><span style="color:#0000ff">int</span><span style="color:#004000"> </span><span style="color:#010001">main</span><span style="color:#004000">(</span><span style="color:#0000ff">int</span><span style="color:#004000"> </span><span style="color:#010001">argc</span><span style="color:#004000">,</span><span style="color:#0000ff">char</span><span style="color:#004000"> *</span><span style="color:#010001">argv</span><span style="color:#004000">[])</span></li>
<li class="even"><span style="color:#004000">{</span></li>
<li>    <span style="color:#004000"></span><span style="color:#010001">QApplication</span><span style="color:#004000"> </span><span style="color:#010001">app</span><span style="color:#004000">(</span><span style="color:#010001">argc</span><span style="color:#004000">,</span><span style="color:#010001">argv</span><span style="color:#004000">);</span></li>
<li class="even">    <span style="color:#004000"></span><span style="color:#010001">QWidget</span><span style="color:#004000"> *</span><span style="color:#010001">windows</span><span style="color:#004000">=</span><span style="color:#0000ff">new</span><span style="color:#004000"> </span><span style="color:#010001">QWidget</span><span style="color:#004000">;</span></li>
<li>    <span style="color:#004000"></span><span style="color:#010001">windows</span><span style="color:#004000">-&gt;</span><span style="color:#010001">setWindowTitle</span><span style="color:#004000">(</span><span style="color:#a31515">&quot;Enter Your Age&quot;</span><span style="color:#004000">);</span></li>
<li class="even">    <span style="color:#004000"></span><span style="color:#010001">QSpinBox</span><span style="color:#004000"> *</span><span style="color:#010001">spinBox</span><span style="color:#004000">=</span><span style="color:#0000ff">new</span><span style="color:#004000"> </span><span style="color:#010001">QSpinBox</span><span style="color:#004000">;</span></li>
<li>    <span style="color:#004000"></span><span style="color:#010001">QSlider</span><span style="color:#004000"> *</span><span style="color:#010001">slider</span><span style="color:#004000">=</span><span style="color:#0000ff">new</span><span style="color:#004000"> </span><span style="color:#010001">QSlider</span><span style="color:#004000">(</span><span style="color:#010001">Qt</span><span style="color:#004000">::</span><span style="color:#010001">Horizontal</span><span style="color:#004000">);</span></li>
<li class="even">    <span style="color:#004000"></span><span style="color:#010001">spinBox</span><span style="color:#004000">-&gt;</span><span style="color:#010001">setRange</span><span style="color:#004000">(0,130);</span></li>
<li>    <span style="color:#004000"></span><span style="color:#010001">slider</span><span style="color:#004000">-&gt;</span><span style="color:#010001">setRange</span><span style="color:#004000">(0,130);</span></li>
<li class="even">    <span style="color:#004000"></span><span style="color:#010001">QObject</span><span style="color:#004000">::</span><span style="color:#010001">connect</span><span style="color:#004000">(</span><span style="color:#010001">spinBox</span><span style="color:#004000">,</span><span style="color:#0000ff">SIGNAL</span><span style="color:#004000">(</span><span style="color:#010001">valueChanged</span><span style="color:#004000">(</span><span style="color:#0000ff">int</span><span style="color:#004000">)),</span></li>
<li>        <span style="color:#004000"></span><span style="color:#010001">slider</span><span style="color:#004000">,</span><span style="color:#0000ff">SLOT</span><span style="color:#004000">(</span><span style="color:#010001">setValue</span><span style="color:#004000">(</span><span style="color:#0000ff">int</span><span style="color:#004000">)));</span></li>
<li class="even">    <span style="color:#004000"></span><span style="color:#010001">QObject</span><span style="color:#004000">::</span><span style="color:#010001">connect</span><span style="color:#004000">(</span><span style="color:#010001">slider</span><span style="color:#004000">,</span><span style="color:#0000ff">SIGNAL</span><span style="color:#004000">(</span><span style="color:#010001">valueChanged</span><span style="color:#004000">(</span><span style="color:#0000ff">int</span><span style="color:#004000">)),</span></li>
<li>        <span style="color:#004000"></span><span style="color:#010001">spinBox</span><span style="color:#004000">,</span><span style="color:#0000ff">SLOT</span><span style="color:#004000">(</span><span style="color:#010001">setValue</span><span style="color:#004000">(</span><span style="color:#0000ff">int</span><span style="color:#004000">)));</span></li>
<li class="even">    <span style="color:#004000"></span><span style="color:#010001">spinBox</span><span style="color:#004000">-&gt;</span><span style="color:#010001">setValue</span><span style="color:#004000">(35);</span></li>
<li>    <span style="color:#004000"></span><span style="color:#010001">QHBoxLayout</span><span style="color:#004000"> *</span><span style="color:#010001">layout</span><span style="color:#004000">=</span><span style="color:#0000ff">new</span><span style="color:#004000"> </span><span style="color:#010001">QHBoxLayout</span><span style="color:#004000">;</span></li>
<li class="even">    <span style="color:#004000"></span><span style="color:#010001">layout</span><span style="color:#004000">-&gt;</span><span style="color:#010001">addWidget</span><span style="color:#004000">(</span><span style="color:#010001">spinBox</span><span style="color:#004000">);</span></li>
<li>    <span style="color:#004000"></span><span style="color:#010001">layout</span><span style="color:#004000">-&gt;</span><span style="color:#010001">addWidget</span><span style="color:#004000">(</span><span style="color:#010001">slider</span><span style="color:#004000">);</span></li>
<li class="even">    <span style="color:#004000"></span><span style="color:#010001">windows</span><span style="color:#004000">-&gt;</span><span style="color:#010001">setLayout</span><span style="color:#004000">(</span><span style="color:#010001">layout</span><span style="color:#004000">);</span></li>
<li>    <span style="color:#004000"></span><span style="color:#010001">windows</span><span style="color:#004000">-&gt;</span><span style="color:#010001">show</span><span style="color:#004000">();</span></li>
<li class="even">    <span style="color:#004000"></span><span style="color:#0000ff">return</span><span style="color:#004000"> </span><span style="color:#010001">app</span><span style="color:#004000">.</span><span style="color:#010001">exec</span><span style="color:#004000">();</span></li>
<li><span style="color:#004000">}</span></li>
</ol></div>
</p></div>
</p></div>
</p>
<p><strong>Line8,9：</strong>创建了Widget对象，使用setWindowTitle()函数来设置显示在窗口标题栏上的文字。</p>
<p><strong>Line10,11：</strong>创建了一个QSpinBox和一个QSlider，并分别在第12行和第13行设置了它们的有效范围。本应将这个窗口传递给QSpinBox和QSlider的构造函数，以说明这两个窗口部件的父对象都是这个窗口，但在这里没有这个必要，因为布局系统将会自行得出这一结果并自动把该窗口设置为微调框和滑块的父对象。</p>
<p><strong>Line14-17：</strong>调用了两次QObject::connect()，来确保能够让微调框和滑块同步，一旦有一个窗口部件的值发生了改变那么就会发射它的valueChanged(int)信号，而另一个窗口部件就会用这个新值调用它的setValue(int)值。</p>
<p><strong>Line18：</strong>将微调框的值设置为35，此时QSpinBox会发射valueChanged(int)信号，其中，int参数的值为35，触发QSlider的setValue(int)槽，避免无限循环的发生，流程如下图所示：</p>
<p><a href="http://www.mousefire.net/wp-content/uploads/2010/01/image3.png"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="image" border="0" alt="image" src="http://www.mousefire.net/wp-content/uploads/2010/01/image_thumb3.png" width="301" height="320"></a> </p>
<p><strong>Line19-22：</strong>使用了一个<u>布局管理器</u>对微调框和滑块进行布局处理。布局管理器(layout manager)是一个能够对其所负责窗口部件的尺寸大小的位置进行设置的对象。Qt有三个主要的布局管理器类：(1)QHBoxLayout：在水平方向上排列窗口部件，从左到右；(2)QVBoxLayout：在竖起方向上排列窗口部件，由上到下；(3)QGridLayout，把各个窗口部件排列在一个网格中。第22行的QWidget::setLayout()函数调用会在窗口上安装该布局管理器。QSpinBox和QSlider会自动“重定义父对象”，成为这个安装了布局的窗口部件的子对象。因此当创建一个需要放进某个布局中的窗口部件时，就没有必要为其显式的指定父对象了。</p>
<p><a href="http://www.mousefire.net/wp-content/uploads/2010/01/image4.png"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="image" border="0" alt="image" src="http://www.mousefire.net/wp-content/uploads/2010/01/image_thumb4.png" width="448" height="108"></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.mousefire.net/2010/01/08/qt%e5%ad%a6%e4%b9%a0%e7%ac%94%e8%ae%b0_chapter1_3%e7%aa%97%e5%8f%a3%e9%83%a8%e4%bb%b6%e7%9a%84%e5%b8%83%e5%b1%80/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Qt学习笔记_Chapter1_2建立连接</title>
		<link>http://www.mousefire.net/2010/01/08/qt%e5%ad%a6%e4%b9%a0%e7%ac%94%e8%ae%b0_chapter1_2%e5%bb%ba%e7%ab%8b%e8%bf%9e%e6%8e%a5/</link>
		<comments>http://www.mousefire.net/2010/01/08/qt%e5%ad%a6%e4%b9%a0%e7%ac%94%e8%ae%b0_chapter1_2%e5%bb%ba%e7%ab%8b%e8%bf%9e%e6%8e%a5/#comments</comments>
		<pubDate>Fri, 08 Jan 2010 06:01:47 +0000</pubDate>
		<dc:creator>mousefire</dc:creator>
				<category><![CDATA[Qt学习笔记]]></category>
		<category><![CDATA[Qt]]></category>
		<category><![CDATA[信号和槽]]></category>

		<guid isPermaLink="false">http://www.mousefire.net/2010/01/08/qt%e5%ad%a6%e4%b9%a0%e7%ac%94%e8%ae%b0_chapter1_2%e5%bb%ba%e7%ab%8b%e8%bf%9e%e6%8e%a5/</guid>
		<description><![CDATA[　　Windows7下程序运行效果图： 　　 　　还记得MFC中，消息循环系统是每一个初学者都要费不少心思学习的东西，Qt中采用了一种完全不同的方式：信号和槽。还是从代码开始： #include &#60;QApplication&#62; #include &#60;QPushButton&#62; int main(int argc,char *argv[]) {     QApplication app(argc,argv);     QPushButton *button=new QPushButton(&#34;Quit&#34;);     QObject::connect(button,SIGNAL(clicked()),         &#38;app,SLOT(quit()));     button-&#62;show();     return app.exec(); } 　　这里使用了QPushButton作为应用程序的主窗口部件。 Line7,8：Qt的窗口部件通过发射信号(signal)来表明一个用户动作已经发生了或者是一个状态已经改变了。例如，当用户单击QPushButton时，该按钮就会发射一个clicked()信号。信号可以与函数（在这里称为槽，slot）相连接，以便在发射信号时，槽可以得到自动执行。这里把按钮的clicked信号和QApplication对象的quit()槽连接起来。宏SIGNAL()和SLOT()是Qt语法中的一部分。 BTW:QObject这个类是QT对象模型的核心，绝大部分的QT类都是从这个类继承而来，这个模型的中心特征就是一个叫做信号和槽的机制来实现对象间的通讯。所有的widget都是QT object，因为它们继承自QWidget，而Qwidget正是继承自QObject]]></description>
			<content:encoded><![CDATA[<p>　　Windows7下程序运行效果图：</p>
<p><a href="http://www.mousefire.net/wp-content/uploads/2010/01/image1.png"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="image" border="0" alt="image" src="http://www.mousefire.net/wp-content/uploads/2010/01/image_thumb1.png" width="136" height="65"></a> 　　</p>
<p>　　还记得MFC中，消息循环系统是每一个初学者都要费不少心思学习的东西，Qt中采用了一种完全不同的方式：信号和槽。还是从代码开始：</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:73c4a229-4f04-467b-a0c4-7a85ba1fb029" class="wlWriterEditableSmartContent">
<div class="le-pavsc-container">
<div style="background: #fff; overflow: auto">
<ol style="background: #c2db8a; margin: 0; padding: 0 0 0 5px; white-space: nowrap">
<li><span style="color:#0000ff">#include</span><span style="color:#004000"> </span><span style="color:#a31515">&lt;QApplication&gt;</span></li>
<li class="even"><span style="color:#0000ff">#include</span><span style="color:#004000"> </span><span style="color:#a31515">&lt;QPushButton&gt;</span></li>
<li><span style="color:#0000ff">int</span><span style="color:#004000"> </span><span style="color:#010001">main</span><span style="color:#004000">(</span><span style="color:#0000ff">int</span><span style="color:#004000"> </span><span style="color:#010001">argc</span><span style="color:#004000">,</span><span style="color:#0000ff">char</span><span style="color:#004000"> *</span><span style="color:#010001">argv</span><span style="color:#004000">[])</span></li>
<li class="even"><span style="color:#004000">{</span></li>
<li>    <span style="color:#004000"></span><span style="color:#010001">QApplication</span><span style="color:#004000"> </span><span style="color:#010001">app</span><span style="color:#004000">(</span><span style="color:#010001">argc</span><span style="color:#004000">,</span><span style="color:#010001">argv</span><span style="color:#004000">);</span></li>
<li class="even">    <span style="color:#004000"></span><span style="color:#010001">QPushButton</span><span style="color:#004000"> *</span><span style="color:#010001">button</span><span style="color:#004000">=</span><span style="color:#0000ff">new</span><span style="color:#004000"> </span><span style="color:#010001">QPushButton</span><span style="color:#004000">(</span><span style="color:#a31515">&quot;Quit&quot;</span><span style="color:#004000">);</span></li>
<li>    <span style="color:#004000"></span><span style="color:#010001">QObject</span><span style="color:#004000">::</span><span style="color:#010001">connect</span><span style="color:#004000">(</span><span style="color:#010001">button</span><span style="color:#004000">,</span><span style="color:#0000ff">SIGNAL</span><span style="color:#004000">(</span><span style="color:#010001">clicked</span><span style="color:#004000">()),</span></li>
<li class="even">        <span style="color:#004000">&amp;</span><span style="color:#010001">app</span><span style="color:#004000">,</span><span style="color:#0000ff">SLOT</span><span style="color:#004000">(</span><span style="color:#010001">quit</span><span style="color:#004000">()));</span></li>
<li>    <span style="color:#004000"></span><span style="color:#010001">button</span><span style="color:#004000">-&gt;</span><span style="color:#010001">show</span><span style="color:#004000">();</span></li>
<li class="even">    <span style="color:#004000"></span><span style="color:#0000ff">return</span><span style="color:#004000"> </span><span style="color:#010001">app</span><span style="color:#004000">.</span><span style="color:#010001">exec</span><span style="color:#004000">();</span></li>
<li><span style="color:#004000">}</span></li>
</ol></div>
</p></div>
</p></div>
</p>
<p>　　这里使用了QPushButton作为应用程序的主窗口部件。</p>
<p><strong>Line7,8：</strong>Qt的窗口部件通过发射信号(signal)来表明<u>一个用户动作已经发生了</u>或者是<u>一个状态已经改变了</u>。例如，当用户单击QPushButton时，该按钮就会发射一个clicked()信号。信号可以与函数（在这里称为槽，slot）相连接，以便在发射信号时，槽可以得到自动执行。这里把按钮的clicked信号和QApplication对象的quit()槽连接起来。宏SIGNAL()和SLOT()是Qt语法中的一部分。</p>
<p>BTW:QObject这个类是QT对象模型的核心，绝大部分的QT类都是从这个类继承而来，这个模型的中心特征就是一个叫做信号和槽的机制来实现对象间的通讯。所有的widget都是QT object，因为它们继承自QWidget，而Qwidget正是继承自QObject</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mousefire.net/2010/01/08/qt%e5%ad%a6%e4%b9%a0%e7%ac%94%e8%ae%b0_chapter1_2%e5%bb%ba%e7%ab%8b%e8%bf%9e%e6%8e%a5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Qt学习笔记_Chapter1_1HelloQt</title>
		<link>http://www.mousefire.net/2010/01/06/qt%e5%ad%a6%e4%b9%a0%e7%ac%94%e8%ae%b0_chapter1_helloqt/</link>
		<comments>http://www.mousefire.net/2010/01/06/qt%e5%ad%a6%e4%b9%a0%e7%ac%94%e8%ae%b0_chapter1_helloqt/#comments</comments>
		<pubDate>Wed, 06 Jan 2010 14:02:27 +0000</pubDate>
		<dc:creator>mousefire</dc:creator>
				<category><![CDATA[Qt学习笔记]]></category>
		<category><![CDATA[helloworld]]></category>
		<category><![CDATA[Qt]]></category>

		<guid isPermaLink="false">http://www.mousefire.net/2010/01/06/qt%e5%ad%a6%e4%b9%a0%e7%ac%94%e8%ae%b0_chapter1_helloqt/</guid>
		<description><![CDATA[　　Windows7下程序运行效果图： &#160; 　　学习的每一步总是HelloWorld，Qt4.6直接推出了VS2008的Binary包，大大方便了我的学习，现在可以像写一般的MFC程序一样在VS集成环境中编写Qt程序了，Qt中的HelloWorld程序如下： #include &#60;QApplication&#62; #include &#60;QLabel&#62; int main(int argc,char *argv[]) {     QApplication app(argc,argv);     QLabel *label=new QLabel(&#34;&#60;h2&#62;&#60;i&#62;Hello&#60;/i&#62; &#34;         &#34;&#60;font color=red&#62;Qt!&#60;/font&#62;&#60;/h2&#62;&#34;);     label-&#62;show();     return app.exec(); } Line1,2：对于每个Qt类，都有一个与该类同名（且大写）的头文件，在这个头文件中包括了对该类的定义。 Line5：创建了一个Qapplication对象，用来管理整个应用程序所用到的资源。Qt支持它自己的一些命令行参数，所以这里同样有argc,argv作为参数。 Line6：创建了一个QLabel Widget，这里的Widget相当于VC中的控件，Qt十分灵活，任意窗口部件(Widget)都可以作为窗口，这里就使用了一个Qlabel作为窗口。另外可以看到，通过使用一些简单的HTML样式格式，可以轻松地把Qt应用程序的用户接口变得更为丰富多彩。 Line8：使QLabel可见，默认隐藏是为了便于我们先进行设置然后再显示它们，从而避免了窗口部件的闪烁现象。 Line9：将应用程序的控制权传递给Qt。此时，程序会进入事件循环状态，这是一种等待模式，程序会等候用户的动作，例如鼠标单击和按键等操作。 BTW：在这个程序中没有过多关注在main()函数末尾处对QLabel对象的delete操作调用。在如此短小的程序内，这样一点内存泄漏(memory leak)问题无关大局，因为在程序结束时，这部分内存是可以由操作系统重新回收的。]]></description>
			<content:encoded><![CDATA[<p>　　Windows7下程序运行效果图：</p>
<p><a href="http://www.mousefire.net/wp-content/uploads/2010/01/image5.png"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="image" border="0" alt="image" src="http://www.mousefire.net/wp-content/uploads/2010/01/image_thumb5.png" width="132" height="59"></a>&nbsp;</p>
<p>　　学习的每一步总是HelloWorld，Qt4.6直接推出了VS2008的Binary包，大大方便了我的学习，现在可以像写一般的MFC程序一样在VS集成环境中编写Qt程序了，Qt中的HelloWorld程序如下：</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:96baf6ce-172d-42a6-a322-89f577155c63" class="wlWriterEditableSmartContent">
<div class="le-pavsc-container">
<div style="background: #fff; overflow: auto">
<ol style="background: #c2db8a; margin: 0; padding: 0 0 0 5px; white-space: nowrap">
<li><span style="color:#0000ff">#include</span><span style="color:#004000"> </span><span style="color:#a31515">&lt;QApplication&gt;</span></li>
<li class="even"><span style="color:#0000ff">#include</span><span style="color:#004000"> </span><span style="color:#a31515">&lt;QLabel&gt;</span></li>
<li><span style="color:#0000ff">int</span><span style="color:#004000"> </span><span style="color:#010001">main</span><span style="color:#004000">(</span><span style="color:#0000ff">int</span><span style="color:#004000"> </span><span style="color:#010001">argc</span><span style="color:#004000">,</span><span style="color:#0000ff">char</span><span style="color:#004000"> *</span><span style="color:#010001">argv</span><span style="color:#004000">[])</span></li>
<li class="even"><span style="color:#004000">{</span></li>
<li>    <span style="color:#004000"></span><span style="color:#010001">QApplication</span><span style="color:#004000"> </span><span style="color:#010001">app</span><span style="color:#004000">(</span><span style="color:#010001">argc</span><span style="color:#004000">,</span><span style="color:#010001">argv</span><span style="color:#004000">);</span></li>
<li class="even">    <span style="color:#004000"></span><span style="color:#010001">QLabel</span><span style="color:#004000"> *</span><span style="color:#010001">label</span><span style="color:#004000">=</span><span style="color:#0000ff">new</span><span style="color:#004000"> </span><span style="color:#010001">QLabel</span><span style="color:#004000">(</span><span style="color:#a31515">&quot;&lt;h2&gt;&lt;i&gt;Hello&lt;/i&gt; &quot;</span></li>
<li>        <span style="color:#a31515"></span><span style="color:#a31515">&quot;&lt;font color=red&gt;Qt!&lt;/font&gt;&lt;/h2&gt;&quot;</span><span style="color:#004000">);</span></li>
<li class="even">    <span style="color:#004000"></span><span style="color:#010001">label</span><span style="color:#004000">-&gt;</span><span style="color:#010001">show</span><span style="color:#004000">();</span></li>
<li>    <span style="color:#004000"></span><span style="color:#0000ff">return</span><span style="color:#004000"> </span><span style="color:#010001">app</span><span style="color:#004000">.</span><span style="color:#010001">exec</span><span style="color:#004000">();</span></li>
<li class="even"><span style="color:#004000">}</span></li>
</ol></div>
</p></div>
</p></div>
<p><strong>Line1,2：</strong>对于每个Qt类，都有一个与该类同名（且大写）的头文件，在这个头文件中包括了对该类的定义。</p>
<p><strong>Line5：</strong>创建了一个Qapplication对象，用来管理整个应用程序所用到的资源。Qt支持它自己的一些命令行参数，所以这里同样有argc,argv作为参数。</p>
<p><strong>Line6：</strong>创建了一个QLabel Widget，这里的Widget相当于VC中的控件，Qt十分灵活，任意窗口部件(Widget)都可以作为窗口，这里就使用了一个Qlabel作为窗口。另外可以看到，通过使用一些简单的HTML样式格式，可以轻松地把Qt应用程序的用户接口变得更为丰富多彩。</p>
<p><strong>Line8：</strong>使QLabel可见，默认隐藏是为了便于我们先进行设置然后再显示它们，从而避免了窗口部件的闪烁现象。</p>
<p><strong>Line9：</strong>将应用程序的控制权传递给Qt。此时，程序会进入事件循环状态，这是一种等待模式，程序会等候用户的动作，例如鼠标单击和按键等操作。</p>
<p>BTW：在这个程序中没有过多关注在main()函数末尾处对QLabel对象的delete操作调用。在如此短小的程序内，这样一点内存泄漏(memory leak)问题无关大局，因为在程序结束时，这部分内存是可以由操作系统重新回收的。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mousefire.net/2010/01/06/qt%e5%ad%a6%e4%b9%a0%e7%ac%94%e8%ae%b0_chapter1_helloqt/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>C++Primer学习笔记2_构造函数初始化式</title>
		<link>http://www.mousefire.net/2009/12/25/cprimer%e5%ad%a6%e4%b9%a0%e7%ac%94%e8%ae%b02_%e6%9e%84%e9%80%a0%e5%87%bd%e6%95%b0%e5%88%9d%e5%a7%8b%e5%8c%96%e5%bc%8f/</link>
		<comments>http://www.mousefire.net/2009/12/25/cprimer%e5%ad%a6%e4%b9%a0%e7%ac%94%e8%ae%b02_%e6%9e%84%e9%80%a0%e5%87%bd%e6%95%b0%e5%88%9d%e5%a7%8b%e5%8c%96%e5%bc%8f/#comments</comments>
		<pubDate>Fri, 25 Dec 2009 11:30:13 +0000</pubDate>
		<dc:creator>mousefire</dc:creator>
				<category><![CDATA[C++Primer学习笔记]]></category>
		<category><![CDATA[构造函数]]></category>

		<guid isPermaLink="false">http://www.mousefire.net/2009/12/25/cprimer%e5%ad%a6%e4%b9%a0%e7%ac%94%e8%ae%b02_%e6%9e%84%e9%80%a0%e5%87%bd%e6%95%b0%e5%88%9d%e5%a7%8b%e5%8c%96%e5%bc%8f/</guid>
		<description><![CDATA[　　正如Lippman所说，构造函数初始化列表是许多相当有经验的C++程序员都没有掌握的一个特性。虽然在学习MFC的时候，经常看到这种形式的初始化，但是总觉得格式不漂亮，也没有深究为什么Microsoft的程序员们喜欢这样做，直到今天。且看下面这两段代码： Sales_item(const std::string &#38;book=&#34;&#34;):isbn(book),units_sold(0),revenue(0.0){} Sales_item(const std::string &#38;book=&#34;&#34;) {     isbn=book;     units_sold=0;     revenue=0.0; } 　　第一段代码使用了初始化式，执行构造函数时，直接执行初始化，而第二段代码中，虽然没有显式的初始化式，但是在执行构造函数之前，要初始化isbn成员，由默认的string构造函数执行，在执行构造函数的函数体时，isbn成员已经有值了。这两个构造函数虽然执行结果相同，但是不使用初始化式等于在程序执行时多了一步。这种效率上的损失还不是最糟糕的，在以下情况下，甚至必须要使用初始化列表进行初始化： １．成员是没有默认构造函数的类 ２．成员是const对象 ３．成员是引用类型的对象 　　要注意的另外一点是：成员初始化的次序并不是它们出现在初始化列表中的次序，而是定义成员的次序．]]></description>
			<content:encoded><![CDATA[<p>　　正如Lippman所说，构造函数初始化列表是许多相当有经验的C++程序员都没有掌握的一个特性。虽然在学习MFC的时候，经常看到这种形式的初始化，但是总觉得格式不漂亮，也没有深究为什么Microsoft的程序员们喜欢这样做，直到今天。且看下面这两段代码：</p>
<div style="padding-bottom: 0px;margin: 0px;padding-left: 0px;padding-right: 0px;float: none;padding-top: 0px" class="wlWriterEditableSmartContent">
<div class="le-pavsc-container">
<div style="background: #fff;overflow: auto">
<ol style="background: #c2db8a;margin: 0;padding: 0 0 0 5px">
<li><span style="color:#010001">Sales_item</span><span style="color:#9b4e00">(</span><span style="color:#0000ff">const</span><span style="color:#9b4e00"> </span><span style="color:#010001">std</span><span style="color:#9b4e00">::</span><span style="color:#010001">string</span><span style="color:#9b4e00"> &amp;</span><span style="color:#010001">book</span><span style="color:#9b4e00">=</span><span style="color:#a31515">&quot;&quot;</span><span style="color:#9b4e00">):</span><span style="color:#010001">isbn</span><span style="color:#9b4e00">(</span><span style="color:#010001">book</span><span style="color:#9b4e00">),</span><span style="color:#010001">units_sold</span><span style="color:#9b4e00">(0),</span><span style="color:#010001">revenue</span><span style="color:#9b4e00">(0.0){}</span></li>
<li class="even"><span style="color:#9b4e00"></span></li>
<li><span style="color:#9b4e00"></span><span style="color:#010001">Sales_item</span><span style="color:#9b4e00">(</span><span style="color:#0000ff">const</span><span style="color:#9b4e00"> </span><span style="color:#010001">std</span><span style="color:#9b4e00">::</span><span style="color:#010001">string</span><span style="color:#9b4e00"> &amp;</span><span style="color:#010001">book</span><span style="color:#9b4e00">=</span><span style="color:#a31515">&quot;&quot;</span><span style="color:#9b4e00">)</span></li>
<li class="even"><span style="color:#9b4e00">{</span></li>
<li>    <span style="color:#9b4e00"></span><span style="color:#010001">isbn</span><span style="color:#9b4e00">=</span><span style="color:#010001">book</span><span style="color:#9b4e00">;</span></li>
<li class="even">    <span style="color:#9b4e00"></span><span style="color:#010001">units_sold</span><span style="color:#9b4e00">=0;</span></li>
<li>    <span style="color:#9b4e00"></span><span style="color:#010001">revenue</span><span style="color:#9b4e00">=0.0;</span></li>
<li class="even"><span style="color:#9b4e00">}</span></li>
</ol></div>
</p></div>
</p></div>
</p>
<p>　　第一段代码使用了初始化式，执行构造函数时，直接执行初始化，而第二段代码中，虽然没有显式的初始化式，但是在执行构造函数之前，要初始化isbn成员，由默认的string构造函数执行，在执行构造函数的函数体时，isbn成员已经有值了。这两个构造函数虽然执行结果相同，但是不使用初始化式等于在程序执行时多了一步。这种效率上的损失还不是最糟糕的，在以下情况下，甚至必须要使用初始化列表进行初始化：</p>
<p><font color="#804000"><strong>１．成员是没有默认构造函数的类</strong></font></p>
<p><font color="#804000"><strong>２．成员是const对象</strong></font></p>
<p><font color="#804000"><strong>３．成员是引用类型的对象</strong></font></p>
<p>　　要注意的另外一点是：成员初始化的次序并不是它们出现在初始化列表中的次序，而是定义成员的次序．</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mousefire.net/2009/12/25/cprimer%e5%ad%a6%e4%b9%a0%e7%ac%94%e8%ae%b02_%e6%9e%84%e9%80%a0%e5%87%bd%e6%95%b0%e5%88%9d%e5%a7%8b%e5%8c%96%e5%bc%8f/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>C++Primer学习笔记1_类作用域</title>
		<link>http://www.mousefire.net/2009/12/24/1-%e7%b1%bb%e4%bd%9c%e7%94%a8%e5%9f%9f/</link>
		<comments>http://www.mousefire.net/2009/12/24/1-%e7%b1%bb%e4%bd%9c%e7%94%a8%e5%9f%9f/#comments</comments>
		<pubDate>Thu, 24 Dec 2009 06:36:43 +0000</pubDate>
		<dc:creator>mousefire</dc:creator>
				<category><![CDATA[C++Primer学习笔记]]></category>

		<guid isPermaLink="false">http://www.mousefire.net/2009/12/24/1-%e7%b1%bb%e4%bd%9c%e7%94%a8%e5%9f%9f/</guid>
		<description><![CDATA[　　这一章东西很杂，也很容易混淆。 一、类作用域包括以下内容 １、类定义体 ２、在类外定义的成员函数的定义（不包括返回类型） 二、类作用域中的名字查找 1.类成员的声明中用到的名字 (1)检查出现在名字使用之前的类成员的声明。 (2)如果第１步查找不成功，则检查包含类定义的作用域中出现在类定义前的声明。 2.类定义体中的成员函数的函数体中用到的名字 (1)检查成员函数局部作用域中的声明。 (2)检查对所有类成员的声明。 (3)检查在此成员函数定义之前的作用域中出现的声明。 3.定义在外部的成员函数的函数体中用到的名字 　　在2的基础上，还会寻找在成员函数定义之前出现的全局作用域声明]]></description>
			<content:encoded><![CDATA[<p><font size="2" face="微软雅黑">　　这一章东西很杂，也很容易混淆。</font></p>
<h5>一、类作用域包括以下内容</h5>
<p><font size="2" face="微软雅黑">１、类定义体</font></p>
<p><font size="2" face="微软雅黑">２、在类外定义的成员函数的定义（不包括返回类型）</font></p>
<h5>二、类作用域中的名字查找</h5>
<p><font size="2" face="微软雅黑">1.类成员的声明中用到的名字</font></p>
<p><font size="2" face="微软雅黑">(1)检查出现在名字使用之前的类成员的声明。</font></p>
<p><font size="2" face="微软雅黑">(2)如果第１步查找不成功，则检查包含类定义的作用域中出现在类定义前的声明。</font></p>
<p><font size="2" face="微软雅黑">2.类定义体中的成员函数的函数体中用到的名字</font></p>
<p><font size="2" face="微软雅黑">(1)检查成员函数局部作用域中的声明。</font></p>
<p><font size="2" face="微软雅黑">(2)检查对所有类成员的声明。</font></p>
<p><font size="2" face="微软雅黑">(3)检查在此成员函数定义之前的作用域中出现的声明。</font></p>
<p><font size="2" face="微软雅黑">3.定义在外部的成员函数的函数体中用到的名字</font></p>
<p><font size="2" face="微软雅黑">　　在2的基础上，还会寻找在成员函数定义之前出现的全局作用域声明</font></p>
<p><font size="2" face="微软雅黑"></font></p>
]]></content:encoded>
			<wfw:commentRss>http://www.mousefire.net/2009/12/24/1-%e7%b1%bb%e4%bd%9c%e7%94%a8%e5%9f%9f/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
