﻿<?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>七维森林七维森林 |  &#187; 笔记</title>
	<atom:link href="http://lizehong.freevar.com/?feed=rss2&#038;tag=%E7%AC%94%E8%AE%B0" rel="self" type="application/rss+xml" />
	<link>http://lizehong.freevar.com</link>
	<description>技术爆炸、文明生存与个体价值</description>
	<lastBuildDate>Sat, 08 Dec 2012 14:07:20 +0000</lastBuildDate>
	<language>zh-CN</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.4</generator>
		<item>
		<title>读《历史深处的忧虑》</title>
		<link>http://lizehong.freevar.com/?p=563</link>
		<comments>http://lizehong.freevar.com/?p=563#comments</comments>
		<pubDate>Sat, 28 Jul 2012 16:49:44 +0000</pubDate>
		<dc:creator>Lee</dc:creator>
				<category><![CDATA[读书笔记]]></category>
		<category><![CDATA[阅读]]></category>
		<category><![CDATA[国家]]></category>
		<category><![CDATA[笔记]]></category>

		<guid isPermaLink="false">http://lizehong.freevar.com/?p=563</guid>
		<description><![CDATA[《历史深处的忧虑》是林达著的《近距离看美国系列》丛书的第一本，“作者以信件的形式讲述了美国现实生活中的故事，生动地介绍了美国法律、政治制度的思想原则、建立与发展过程、操作方式、历史价值以及为实行这套制度已付出和将要付出的代价。”虽然书中故事的时代背景是二十年前，但是对于理解美国的 … <a href="http://lizehong.freevar.com/?p=563"> Continue reading <span class="meta-nav">&#8594; </span></a>]]></description>
			<content:encoded><![CDATA[<p>《历史深处的忧虑》是林达著的《近距离看美国系列》丛书的第一本，“作者以信件的形式讲述了美国现实生活中的故事，生动地介绍了美国法律、政治制度的思想原则、建立与发展过程、操作方式、历史价值以及为实行这套制度已付出和将要付出的代价。”虽然书中故事的时代背景是二十年前，但是对于理解美国的制度和自由并不会有什么影响。这些故事相比于枯燥的制度描述让人可以很容易就理解了美国的法律、政治制度与我们制度的思想、方式差别所在。</p>
<p>作者在故事中大量地引入美国的法律，并对其进行深入浅出的解释，把抽象的描述通过案例进行形象的讲解，这是我在阅读本书时最大的体会。其中提到最多的就是美国的宪法修正案，也就是“权利法案”，以前是没有听说过这方面的东西的，对美国只有一个抽象的自由民主的印象，通过作者的案例和对权利法案的讲解，才对美国的法律和政治制度有了一个更具体的了解，从中也更深刻地认识到了美国和我国在制度建立、制度实施及制度思想上的巨大差异，也不再简单地认为美国的制度一定优于我们当前的制度。</p>
<p>美国民众都具有强烈的法律意识和习惯，正如作者在书中描述的：</p>
<blockquote><p>在美国多如牛毛的法律之下，我们发现，中国人常常以“好”，“不好”，“坏”这样的字眼去做道德评判的事情，在这里往往是通过立法尽量把它归入法律的范畴，并且使之深入人心。&#8230;&#8230;就是我们在评论一件事情“好”和“不好”的时候，他们经常只是简单地说：“这是合法的”和“这是非法的”。</p></blockquote>
<p>之所以会这样，是因为他们都非常关心自己的权利，既关心法律赋予了自己那些权利，更关心当自己的权利受到侵犯和破坏时，可以用法律中的那些部分来保障自己的权利。这样的社会使得很多问题的解决会很简单，以为大家都认同法律的效力，一切问题依法解决。</p>
<p>书中提到的美国建国的那段历史也是很有趣的。美国在1776年7月4日发表了《独立宣言》，经过八年的独立战争，在1783年打赢了这场以“生命、自由和追求幸福”的名义而进行的战争。然而有趣的是，战争结束后，美国的建国者们竟然没有去建立一个统一的政府和正经的国家，而是在四年后才尝试去建立一个强有力的政府，即美国联邦政府，在1789年美国政府才开始工作，选出第一届总统华盛顿。作者对这段历史的解读让我对这些200多年前的建国者有了一种深深的敬意和佩服：</p>
<blockquote><p>他们认为，国家机器自有它自己的运转机制，只要建立起来，它就会成千上百年地运转下去。万一走上歧途，小小百姓根本很难与之匹敌。</p>
<p>&#8230;&#8230;如果没有一种制度上的保证，那个原本期望是为人民效力的联邦政府，轻而易举就可以做到金蝉脱壳，变成一个凌驾于人民之上的怪物。到那个时候，再想要“扭转乾坤”就太吃力了。&#8230;&#8230;</p>
<p>&#8230;&#8230;他们认为，所谓人民的自由不是什么抽象的东西，它就是具体的一个一个“个人”的自由，而对于这种自由最大的威胁，就是一个有组织的、有财力的、有执法权的巨大力量。&#8230;&#8230;</p></blockquote>
<p>基于上面的思路，美国的建国者们在建立宪法的同时，起草和建立了宪法修正案，即著名的《权利法案》，以限制联邦政府的权利、保证个人的自由。当然这一制度得以生效，也离不开美国的三权分立的政府框架结构，离不开美国设计的整个精妙的政府运转制度。</p>
<p>读这本书另一个被重复提到的词就是“自由”，这也是美国最大的特色和最常被议论的话题。阅读作者的故事，我的脑海中不再是抽象的民众整体的自由，而是一个一个具体的权利的保证：可以自由地思想、获取各种知识和信息、言论、创造、在自己土地上生活而不受入侵和破坏，在这一切受到威胁时，甚至有权拿起枪来保卫自己的自由。</p>
<blockquote><p>美国人认为，假如一个人最基本的权利能够得到保障，他就是自由的。</p></blockquote>
<p>这也让我对于美国允许公民持有武器有了一个更深层次的理解。<a title="关于自由" href="http://lizehong.freevar.com/?p=122" target="_blank">关于自由</a>作者还有一段经典的描述，让我对自由的概念有了更是深入的认识。</p>
]]></content:encoded>
			<wfw:commentRss>http://lizehong.freevar.com/?feed=rss2&#038;p=563</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>工作笔记（04/2012）</title>
		<link>http://lizehong.freevar.com/?p=304</link>
		<comments>http://lizehong.freevar.com/?p=304#comments</comments>
		<pubDate>Thu, 19 Jul 2012 14:05:13 +0000</pubDate>
		<dc:creator>Lee</dc:creator>
				<category><![CDATA[Qt应用]]></category>
		<category><![CDATA[技术]]></category>
		<category><![CDATA[QTE]]></category>
		<category><![CDATA[工作]]></category>
		<category><![CDATA[笔记]]></category>

		<guid isPermaLink="false">http://lizehong.freevar.com/?p=304</guid>
		<description><![CDATA[1、通过使用widget的setfont函数可以设置界面所有文字的字体。 2、使用widget的setFocusPolicy函数来控制其焦点的获取，或者是禁止其使用Qt默认的焦点转移行为。 void setFocusPolicy(Qt::NoFocus); //禁止焦点的获取,也 … <a href="http://lizehong.freevar.com/?p=304"> Continue reading <span class="meta-nav">&#8594; </span></a>]]></description>
			<content:encoded><![CDATA[<p>1、通过使用widget的setfont函数可以设置界面所有文字的字体。</p>
<p>2、使用widget的setFocusPolicy函数来控制其焦点的获取，或者是禁止其使用Qt默认的焦点转移行为。</p>
<pre class="brush: cpp; gutter: false">void setFocusPolicy(Qt::NoFocus); //禁止焦点的获取,也将禁止默认的焦点行为
void setFocus(); //获取焦点，接收键盘事件等</pre>
<ul>
<li>拥有焦点（Focus）的widget才能接受键盘事件</li>
</ul>
<p>3、Qt应用中new出来的控件，一般Qt会在应用的主窗体关闭时（准确说应该是应用退出时）自动负责delete掉；<br />
也可以自己手动delete掉，或者通过设置相应的属性如：setAttribute(Qt::WA_DeleteOnClose);来实现。<br />
但是有一些注意事项：</p>
<ul>
<li>注意是否会对控件进行多次的delete操作；</li>
<li>手动delete时，必须先delete掉子对象，再delete父对象，否则会出现对子对象delete两次的操作错误；</li>
<li>通过new []的方法创建的控件组，必须手动使用delete []的方式进行释放，否则Qt自动delete时会出错。</li>
</ul>
<p>4、使用C库中的fread、fwrite函数进行文件的读写时，如果要使用fseek函数进行文件指针的移动，最好使用SEEK_SET作为参考位置</p>
<ul>
<li>对文件进行修改写操作时，文件偏移以SEEK_SET作为参考位置，尤其是会对一个文件在多个位置进行写操作时。</li>
<li>把文件的内容全部读出进行需要的修改，然后再把修改好的内容重新写回到文件中，以避免位置移动的偏差。</li>
</ul>
<p>5、去除QTE应用程序在开发板上显示时的鼠标指针：编译QTE的库时，加上选项 -no-feature-CURSOR -no-feature-QWS_CURSOR<br />
或者修改qconfig-xxx.h配置文件，增加宏</p>
<pre class="brush: cpp; gutter: false">#define QT_NO_CURSOR;
#define QT_NO_QWS_CURSOR;</pre>
<p>6、QTE应用中文显示问题的定位：</p>
<ul>
<li>中文不显示，但英文正常显示&#8212;&#8211;没有中文字体，下载字体，并设置正确的字体环境变量</li>
<li>中文乱码&#8212;-有中文字体，但是中文的编码不对</li>
</ul>
<p>7、在linux中使用configure安装应用程序时，如果需要多次或重新安装同一应用程序，在每次安装完后，使用make confclean后再执行configure配置。否则会对前一次的安装目录进行覆盖安装，而不是在configure中新的-prefix选项指定目录中安装</p>
<p>8、QTE库编译安装的选项配置，参考其自身的qconfig-minimal.h等五个配置文件以及qfeatures.txt特性文件编写项目的配置文件【推荐】，也可以直接在configure中通过 -no-feature-&lt;feature&gt; -feature-&lt;feature&gt; 选项进行特性的定制</p>
<p>9、可以通过编译QTE目录tools/下的相关工程来使用对应的工具：如qvfb/makeqpf工具等。</p>
<p>10、QTE configure中使用-fast -optimized-qmake选项之一时会导致-embedded x86的make失败，原因不确定。</p>
<p>11、linux下使用free/top命令监控系统的内存使用、性能状态</p>
<ul>
<li>VIRT=SWAP+RES 应用占有的地址空间，要求的虚拟内存</li>
<li>RES=CODE+DATA 应用程序真正使用的内存，常驻内存</li>
<li>SHR 共享内存大小</li>
</ul>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://lizehong.freevar.com/?feed=rss2&#038;p=304</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>工作笔记（03/2012）</title>
		<link>http://lizehong.freevar.com/?p=301</link>
		<comments>http://lizehong.freevar.com/?p=301#comments</comments>
		<pubDate>Thu, 19 Jul 2012 13:53:20 +0000</pubDate>
		<dc:creator>Lee</dc:creator>
				<category><![CDATA[Qt应用]]></category>
		<category><![CDATA[技术]]></category>
		<category><![CDATA[QTE]]></category>
		<category><![CDATA[工作]]></category>
		<category><![CDATA[笔记]]></category>

		<guid isPermaLink="false">http://lizehong.freevar.com/?p=301</guid>
		<description><![CDATA[1、QTableView QTableWidget中翻页功能的实现 通过QTableView中的滑动条位置的获取与设置来实现： //通过其继承的函数获取当前滑动条 QScrollBar * QAbstractScrollArea::verticalScrollBar () con … <a href="http://lizehong.freevar.com/?p=301"> Continue reading <span class="meta-nav">&#8594; </span></a>]]></description>
			<content:encoded><![CDATA[<p>1、QTableView QTableWidget中翻页功能的实现<br />
通过QTableView中的滑动条位置的获取与设置来实现：</p>
<pre class="brush: cpp; gutter: false">//通过其继承的函数获取当前滑动条
QScrollBar * QAbstractScrollArea::verticalScrollBar () const；
//获取当前滑动条的位置
int QAbstractSlider::value () const；
//设置当前滑动条的位置
void QAbstractSlider::setSliderPosition ( int )；</pre>
<p>通过传入上一页或下一页的滑动条位置来实现翻页。<br />
上一页的位置 = 当前位置 &#8211; 一页显示的行数；<br />
下一页的位置 = 当前位置 + 一页显示的行数；<br />
注意确保位置的有效性：上一页的位置&gt;=0；下一页的位置&lt;=最大位置；<br />
滑动条能移动的最大位置获取：<br />
int QAbstractSlider::maximum () const；</p>
<p>2、QTableView QTableWidget中平均分布各列（行）或者使最后一列自适应宽度的实现</p>
<pre class="brush: cpp; gutter: false">//使行列头自适应界面宽度
QHeaderView * QTableView::horizontalHeader () const； //行标题
QHeaderView * QTableView::verticalHeader () const； //列标题
void QHeaderView::setStretchLastSection ( bool stretch );//最后一行（列）填充空白
void QHeaderView::setResizeMode ( ResizeMode mode = QHeaderView::Stretch )；//所有行（列）均分填充空白</pre>
<p>3、QListWidget中条目的删除实现</p>
<pre class="brush: cpp; gutter: false">//先移除该条目的父子关系
QListWidgetItem * QListWidget::takeItem ( int row )；//移除后不再由Qt管理该对象，必须进行手动delete
//然后手动delete该条目
delete pTmpListWidgetItem；//例子
使用下面的函数不能实现条目的删除效果：
void QListWidget::removeItemWidget ( QListWidgetItem * item )；//introduced in Qt 4.3.</pre>
<p>4、QWidget关闭时对用户进行关闭提示的实现<br />
通过重载closeEvent()事件处理函数来实现<br />
void QWidget::closeEvent ( QCloseEvent * event )； [virtual protected]<br />
示例：</p>
<pre class="brush: cpp; gutter: true">void CExecResultWidget::closeEvent(QCloseEvent *event)
{
	int ret = QMessageBox::question(this, tr(&quot;关闭窗口&quot;), 
		tr(&quot;是否确定关闭当前执行方案结果界面？&quot;), 
		QMessageBox::Yes |QMessageBox::No,QMessageBox::No);
	if(ret == QMessageBox::Yes)
	{
		event-&gt;accept();
	}
	else 
	{
		event-&gt;ignore();
	}
}</pre>
<p>5、登录对话框类GUI的实现机制<br />
使用QDialog的exec()函数与Accepted/Rejected属性实现</p>
<p>6、QWidget关闭内容，关闭程序时关闭所有打开窗口的实现</p>
<pre class="brush: cpp; gutter: false">//关闭相关的槽函数
//发送QCloseEvent，closeEvent()默认实现为隐藏QWidget，与setAttribute()的设置有关
bool QWidget::close (); [slot] 
//应用成功退出，等价于调用exit(0)
void QCoreApplication::quit (); [static slot]
//结束exec的事件循环，退出应用：0表示成功，否则失败
void QCoreApplication::exit ( int returnCode = 0 )； [static]</pre>
<p>关闭程序时关闭所有打开窗口的实现<br />
方法一：建立各窗口之间的父子关系，则关闭父窗口时，所有的子窗口将被关闭<br />
方法二：在main.cpp中连接信号void QApplication::lastWindowClosed ();[signal]到quit函数</p>
<pre class="brush: cpp; gutter: false">//1.首先设置主窗口的属性，也可以不设，因为默认所有的QWidget该属性为真
void QWidget::setAttribute(Qt::WA_QuitOnClose,true); 
//2.因为默认的关系，必须设置其它独立窗口的该属性为false，只能有一个窗口的该属性为真
void QWidget::setAttribute(Qt::WA_QuitOnClose,false); 
//3.在main.cpp中连接信号与槽
QApplication a(argc, argv);
a.connect(&amp;a, SIGNAL(lastWindowClosed()), &amp;a, SLOT(quit));</pre>
<p>就可实现当关闭主窗口时，所有的打开窗口都会因程序退出而被关闭。</p>
<p>7、父子QWidget的关系与独立窗口的父子QWidget实现</p>
<ul>
<li>存在父子关系的widgets，每个子widget都显示在父widget内.</li>
<li>当父widget析构时，所有的子widget自动析构</li>
<li>如果一个widget构造时没有父对象，那么被视为一个窗口，或者顶级widget.</li>
<li>当一个QDialog为一个widget的子widget时，可以显示为一个独立的窗口，但是一个QWidget为一个widget时则显示在父QWidget内.</li>
<li>一个QMainWindow窗口中不能再设置布局，只能设置中心QWidget，因此间接的布局方法是借用中心窗体</li>
</ul>
<pre class="brush: cpp; gutter: false">QWidget widget.setLayout(pMainLayout);
QMainWindow mainwindow.setCentralWidget(widget);</pre>
<p>&nbsp;</p>
<ul>
<li>一个QDialog中可以再设置布局</li>
</ul>
<p>8、Qt中使用信号与槽机制时的注意事项</p>
<ul>
<li>信号与槽的实现函数中，函数的参数要慎重的使用C++的引用，因为引用的数据可能已经被析构掉了.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://lizehong.freevar.com/?feed=rss2&#038;p=301</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>工作笔记（02/2012）</title>
		<link>http://lizehong.freevar.com/?p=297</link>
		<comments>http://lizehong.freevar.com/?p=297#comments</comments>
		<pubDate>Thu, 19 Jul 2012 13:28:04 +0000</pubDate>
		<dc:creator>Lee</dc:creator>
				<category><![CDATA[Qt应用]]></category>
		<category><![CDATA[技术]]></category>
		<category><![CDATA[QTE]]></category>
		<category><![CDATA[工作]]></category>
		<category><![CDATA[笔记]]></category>

		<guid isPermaLink="false">http://lizehong.freevar.com/?p=297</guid>
		<description><![CDATA[1.设置widget背景图片 使用QPalette属性，相关的方法: setAutoFillBackground(true); palette.setBrush(...); setPalette(palette); setMask(pixmap.mask()); 2.去掉widg … <a href="http://lizehong.freevar.com/?p=297"> Continue reading <span class="meta-nav">&#8594; </span></a>]]></description>
			<content:encoded><![CDATA[<p>1.设置widget背景图片<br />
使用QPalette属性，相关的方法:</p>
<pre class="brush: cpp; gutter: true">setAutoFillBackground(true);
palette.setBrush(...);
setPalette(palette);
setMask(pixmap.mask());</pre>
<p>2.去掉widget的标题栏方法</p>
<pre class="brush: cpp; gutter: true">setWindowFlags（Qt::FramelessWindowHint);</pre>
<p>3.Qt接口实现本地文件的列表显示与删除拷贝实现</p>
<pre class="brush: cpp; gutter: true">QFileInfoList filelist = dir.entryInfoList(string, QDir::Files, QDir::Name); //获取文件列表
QFileInfoList QDir::entryInfoList ( const QStringList &amp; nameFilters, Filters filters = NoFilter, SortFlags sort = NoSort ) const
bool QDir::remove(const QString &amp;filename); //删除文件
bool QFile::copy ( const QString &amp; fileName, const QString &amp; newName ) [static] //拷贝文件</pre>
<p>4.列表视图中实现单元格的合并与表格线的隐藏</p>
<pre class="brush: cpp; gutter: true">QTableView::setSpan(int row, int column, int rowspan, int columnspan);
QTableView::setShowGrid(bool);</pre>
<p>5.QTableWidget方法</p>
<pre class="brush: cpp; gutter: true">void setSelectionBehavior ( QAbstractItemView::SelectRows)；//整行选中
void setSelectionMode ( QAbstractItemView::SingleSelection)；//单选
void setEditTriggers ( QAbstractItemView::NoEditTriggers )；//禁止编辑
tablewidget-&gt;verticalHeader()-&gt;setHiddern(true); //自动行名隐藏
void QTableWidgetItem::setFlags(Qt::ItemIsSelectable); //单元格变灰</pre>
<p>6.Qt应用的开发</p>
<pre class="brush: cpp; gutter: true">void setupUI(); //绘制显示界面
int initUI(); //加载界面显示的数据
void connects(); //所有的信号与槽的连接</pre>
<p>7.QThread线程的使用</p>
<ul>
<li>QThread::run()函数对线程的作用相当于main函数对于应用程序的作用，它是线程的入口，run()的开始和结束意味着线程的开始与结束。</li>
<li>QThread::start()函数负责启动线程</li>
<li>QWidget及其子派生类不能在次线程中创建或使用</li>
<li>QThread对象本身所在的线程和它管理的线程不是同一个线程</li>
<li>在QThread派生类中定义的槽是在主线程而不是次线程中执行的，除非使用moveToThread()函数指定；只有run函数内的代码才是在次线程中执行的代码</li>
<li>QThread应该被看做是OS线程的接口或控制点，而不应该包含需要在新线程中运行的代码</li>
</ul>
<p>推荐的使用方法：把线程的代码放到一个QObject的子类中，然后将该子类的对象moveToThread到新线程中。</p>
<p>8.Qt/Embedded Linux</p>
<ul>
<li>不使用X窗口系统，实现自己的窗口系统：QWS</li>
<li>要运行Qt/Embedd Linux程序，必须首先创建一个进程作为GUI服务器，负责为客户端分配屏幕区域，生成鼠标和键盘事件；任何程序都可以成为服务器，通过在命令行指定-qws参数，或者将QApplication::GuiServer作为QApplicaiton构造函数的第三个参数</li>
<li>各种各样的环境变量会影响到Qt/Embedd Linux程序，最重要的是QWS_MOUSE_PROTO 指定鼠标设备 QWS_KEYBOARD 指定键盘类型</li>
</ul>
<p>9.单例模式<br />
[定义]一个类只有一个实例，而且自行实例化并向整个系统提供这个实例<br />
[要点]</p>
<ul>
<li>只能有一个实例</li>
<li>必须自行创建这个实例</li>
<li>必须自行向整个系统提供这个实例</li>
</ul>
<p>[模板]</p>
<pre class="brush: cpp; gutter: true">class CSingleton:
{
public:
	static CSingleton *GetInstance()
	{
		if(m_pInstance == NULL)
		{
			m_pInstance = new CSingleton();
			return m_pInstance;
		}
	}
private:
	CSingleton(){};
	static CSingleton *m_pInstance;
}</pre>
<p>10.m_pSubWiget-&gt;move(mapToGlobal(QPoint(0,0))); //使界面位置一直保持不变<br />
//把当前的逻辑坐标(0,0)映射到屏幕物理坐标上</p>
<p>11.随机数的生成 &lt;cstdlib&gt;</p>
<pre class="brush: cpp; gutter: true">int srand(seed); //指定种子，默认seed=1
srand(time(0)); //每次运行指定不一样的seed，从而生成不一样的随机数
int rand(); //生成[seed, RANDOM_MAX]之间的随机数
rand()%(b-a) + a ；//生成[a,b)之间的随机数
rand() /double(RANDOM_MAX)；//生成0-1之间的伪随机浮点数</pre>
<p>11.电路学习</p>
<ul>
<li>《模拟电路基础》清华大学，林红</li>
<li>《模拟电路基础实验教程》 清华大学，刘志军</li>
</ul>
<p>12.使用focusNextChild()/focusPreviousChild()函数控制widget中焦点的转移</p>
<p>13.图形widget的绘制,示例：</p>
<pre class="brush: cpp; gutter: true">void CWaveCurveWidget::paintEvent(QPaintEvent *)
{
    QPainter paint(this);
    paint.setBrush(Qt::black);//设置绘制背景的笔的颜色
    paint.setViewport(0,0,this-&gt;width(),this-&gt;height());//设置视口，物理坐标
    paint.setWindow(QRect(0,-this-&gt;height()/2,this-&gt;width(),this-&gt;height()));//设置窗口，逻辑坐标
    paint.drawRect(0,-this-&gt;height()/2,this-&gt;width(),this-&gt;height());//绘制背景
    drawGrid(paint);
    drawCurves(paint);
}</pre>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://lizehong.freevar.com/?feed=rss2&#038;p=297</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>工作笔记（2011）</title>
		<link>http://lizehong.freevar.com/?p=295</link>
		<comments>http://lizehong.freevar.com/?p=295#comments</comments>
		<pubDate>Wed, 18 Jul 2012 14:56:23 +0000</pubDate>
		<dc:creator>Lee</dc:creator>
				<category><![CDATA[Qt应用]]></category>
		<category><![CDATA[技术]]></category>
		<category><![CDATA[QTE]]></category>
		<category><![CDATA[工作]]></category>
		<category><![CDATA[笔记]]></category>

		<guid isPermaLink="false">http://lizehong.freevar.com/?p=295</guid>
		<description><![CDATA[1.触摸屏支持库tslib————开源项目，为触摸屏驱动和应用层之间提供适配层。 2.缺陷管理系统：BugFree (开源软件) BugZilla Mantis&#8230; 3.在Ubuntu系统上执行操作出现一些奇怪的问题时，检查该操作是否需要root权限的执行。 4.Qt的 … <a href="http://lizehong.freevar.com/?p=295"> Continue reading <span class="meta-nav">&#8594; </span></a>]]></description>
			<content:encoded><![CDATA[<p>1.触摸屏支持库tslib————开源项目，为触摸屏驱动和应用层之间提供适配层。</p>
<p>2.缺陷管理系统：BugFree (开源软件) BugZilla Mantis&#8230;</p>
<p>3.在Ubuntu系统上执行操作出现一些奇怪的问题时，检查该操作是否需要root权限的执行。</p>
<p>4.Qt的二维图形引擎是基于QPainter类的，通过重新实现paintEvent()函数可定制各种窗口部件。</p>
<p>5.渐变填充利用颜色插值使得两个颜色或更多颜色之间能够平滑过渡。常被用来创建三维效果。<br />
Qt支持三种渐变：线性渐变(QLinearGradient)、锥形渐变(QRadiaalGradient)、辐射渐变(QConicalGradient)</p>
<p>6.视口、窗口、世界矩阵决定了如何将QPainter的逻辑坐标映射到设备的物理绘图坐标<br />
视口：物理坐标系下指定的任意矩形 设置视口：QPainter::setViewPort();<br />
窗口：逻辑坐标系下的同一矩形 设置窗口：QPainter::setWindow();<br />
物理坐标系与逻辑坐标系是一致的，该机制对于编写独立于绘制设备大小和分辨率的绘制代码很有用。<br />
世界变换(QTransform)使用变换矩阵，允许移动、缩放、旋转或拉伸，或者使用QPainter的translate()/scale()/rotate()/shear()函数</p>
<p>7.QImage &#8211;Qt内置的绘图引擎，实现与平台无关的高质量绘图，强大特性：支持复合模式。</p>
<p>8.Qt基于项的图形视图体系：QGraphicsView/QGraphicsScene/QGraphicsItem体系</p>
<ul>
<li>体系的坐标系统：视口坐标、场景坐标、项坐标</li>
<li>场景坐标：逻辑坐标，用来布置场景中的项</li>
<li>项坐标：针对某一项，以(0,0)为中心，在场景中移动项时，项坐标保持不变</li>
</ul>
<p>9.Qt中窗口部件风格(QStyle)</p>
<ul>
<li>Plastique————KDE下Qt/X11应用程序的默认风格</li>
<li>cleanlooks————GNOME下应用程序的默认风格</li>
</ul>
<p>10.Qt信号与槽机制</p>
<ul>
<li>[1]一个信号可以连接多个槽，但各个槽的调用顺序是不确定的</li>
<li>[2]多个信号可以连接同一个槽</li>
<li>[3]一个信号可以连接到另一个信号</li>
<li>[4]信号与槽的参数必须有相同的类型与相同的顺序</li>
<li>[5]信号的参数如果多于槽，则被简单地忽略</li>
<li>[6]信号与槽不存在或者参数不匹配时，Qt只发出警告</li>
</ul>
<p>11.Qt的元对象系统机制提供两项技术：信号与槽机制、内省机制</p>
<ul>
<li>为了使moc能够正常运行，必须把类的定义与实现分开</li>
</ul>
<p>12.Qt的资源系统：在应用程序的可执行文件中嵌入二进制的数据或文本<br />
通过资源编译器rcc，可将资源转换为C++代码资源文件(xml文件) .qrc</p>
<p>13.Qt中的连接函数connect()绑定sender与receiver时，指针必须有明确的对象，否则程序异常终止。</p>
<p>14.Qt中的鼠标事件中想x()/y()函数返回的坐标是相对于接收事件的窗体的坐标。</p>
<p>15.Qt中获取设备显示屏的分辨率:QDesktopWidget类<br />
QApplication::desktop()-&gt;width(); QApplication::desktop()-&gt;height();</p>
<p>16.setWindowFlag(Qt::FramelessWindowHint); 设置窗体不含边框与标题栏<br />
setWindowOpacity()设置窗体的透明度<br />
实现程序启动画面：QSplashScreen类，在main()函数中实现</p>
<p>17.代码的可视化编辑与查看，可以通过Notepa++的插件“带颜色复制”，粘贴到word中一定程度的实现</p>
<p>18.应用程序进行编译的优化级别会影响程序的功能实现，小心地测试优化级别的正确性。</p>
<p>19.linux中列出当前目录下的子目录命令：</p>
<pre class="brush: bash; gutter: false">ls -F | grep /$
ls -l | grep &quot;^d&quot;</pre>
<p>20.离散傅里叶分析(DFT)是频谱分析的常用方法。</p>
<p>21.正则表达式：用来筛选文本的模式</p>
<ul>
<li>正则表达式引擎：解释正则表达式模式并使用这些模式匹配文本的基础软件</li>
<li>POSIX引擎: BRE ERE</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://lizehong.freevar.com/?feed=rss2&#038;p=295</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>考研手记</title>
		<link>http://lizehong.freevar.com/?p=381</link>
		<comments>http://lizehong.freevar.com/?p=381#comments</comments>
		<pubDate>Thu, 08 Apr 2010 14:22:38 +0000</pubDate>
		<dc:creator>Lee</dc:creator>
				<category><![CDATA[成长路迹]]></category>
		<category><![CDATA[生活]]></category>
		<category><![CDATA[人生]]></category>
		<category><![CDATA[笔记]]></category>

		<guid isPermaLink="false">http://lizehong.freevar.com/?p=381</guid>
		<description><![CDATA[考研是一个项目，交付期是1月10日。 22:00 2009-10-1（2009.9.7——2009.9.30) 1.决定开始就要全力以赴，就要有一个完整的计划，就要专注。 2.制定好了计划就要严格认真地执行，要保质保量，这样计划才有其存在的最大意义。 3.选择了就要相信自己的能力 … <a href="http://lizehong.freevar.com/?p=381"> Continue reading <span class="meta-nav">&#8594; </span></a>]]></description>
			<content:encoded><![CDATA[<p>考研是一个项目，交付期是1月10日。<br />
22:00 2009-10-1（2009.9.7——2009.9.30)<br />
1.决定开始就要全力以赴，就要有一个完整的计划，就要专注。<br />
2.制定好了计划就要严格认真地执行，要保质保量，这样计划才有其存在的最大意义。<br />
3.选择了就要相信自己的能力，相信目标的可实现性，要坚持下去。<br />
4.你可以有一个不愉快的早上，但请保证你有一个愉快和充实的上午、中午和晚上。对一天、一件事等也是如此。把你的所有不快、烦恼和伤心等不利于项目的情绪留在带来它们的那个时刻，下一时刻请保持积极的心态全心投入，相信我这很容易做到，只要你相信和投入。<br />
5.时间很重要，但是成功不是由时间堆出来的；你更需要效率和有效的思考。高效的思考能给你带来成功和快乐的感觉。</p>
<p>22:51 2009-10-5<br />
1.不要轻易挑战自己的控制能力，尤其是在关键时期，即不要随意地让自己处在一个充满诱惑的环境中，要在偏离之前控制自己远离诱惑。</p>
<p>21:04 2009-10-19<br />
1.身体的健康绝对是所有项目的基础，为了保证项目的按时推进，你必须保证自己有足够的体力和精力。</p>
<p>20:17 2009-10-31<br />
1.当你的状态和心态处于一个次佳和偏向消极的方向时，你就在不断地降低你的效率和消耗你的时间与精力。你要学会在效率和状态不妙时，学会停下，同时学会在最短的时间内调整状态到最佳。你要善于这项工作，要掌握这门技巧。永远不要吝惜调整的时间，也永远不要不重视调整的内容，流程和目标以及评价标准。如果能找到对你而言通用的方案，那将更有效。</p>
<p>23:08 2009-12-1<br />
最近状态越来越偏离计划了，自己究竟是怎么了？要求的专注和坚持那去了，明确的目标和自我的激励那去了？你需要结束调整了，你需要开启新的状态和新的最后的战役了。不要在用低的标准来要求自己了，不要在让自己有任何借口放松下来了，不要在浪费一点时间在游戏上了，不要让计划只是成为文字了，你需要实际的行动，你需要绝对的投入，你需要完全的专注，你需要坚定制定的目标。吃得苦中苦，方为人上人，这是你的经验，让它继续指引你的行动。有几个人可以坚持到底，这是你对别人提出的疑问，希望自己不是第一个证实这个疑问的人，你需要证明，证明给自己看，证明给同学看，证明给所有关心你的人看。只要你全心地投入了，你就可以问心无愧。<br />
今天是结束的一天，明天是重启的一天，从明天开始新的一天，开始新的状态。坚持到底就是胜利。把放松和娱乐的快乐放在项目结束之后，从明天开始，是一种学习和奋斗的快乐。你的快乐存在于价值和目标的实现。<span>come on ,baby;a day act,not a day off! </span></p>
<p>10:40 2009-12-29<br />
1.这几个月的考研经历让我形成了一种不同的时间观念：一种以半小时或一小时来衡量时间的流逝的习惯。我希望我可以保持这种好的习惯和时间思维。</p>
<p>后记：正确地认识自己的兴趣、长处、短处，进而制定目标，把目标往高处制定，只要你有决心和坚持到底，那就能实现你的目标。其实，考研很容易，只是一场考试而已。</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://lizehong.freevar.com/?feed=rss2&#038;p=381</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
