﻿<?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=%E5%B7%A5%E4%BD%9C" 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=610</link>
		<comments>http://lizehong.freevar.com/?p=610#comments</comments>
		<pubDate>Fri, 03 Aug 2012 14:32:29 +0000</pubDate>
		<dc:creator>Lee</dc:creator>
				<category><![CDATA[微博]]></category>
		<category><![CDATA[人生]]></category>
		<category><![CDATA[工作]]></category>

		<guid isPermaLink="false">http://lizehong.freevar.com/?p=610</guid>
		<description><![CDATA[乔布斯：只有爱你所做的，你才能成就伟大的事情。如果你没找到自己所爱的，继续找，别停下来，就像所有与你内心有关的事情，当你找到时你会知道的。]]></description>
			<content:encoded><![CDATA[<blockquote><p>乔布斯：只有爱你所做的，你才能成就伟大的事情。如果你没找到自己所爱的，继续找，别停下来，就像所有与你内心有关的事情，当你找到时你会知道的。</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://lizehong.freevar.com/?feed=rss2&#038;p=610</wfw:commentRss>
		<slash:comments>1</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>
	</channel>
</rss>
