﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-天下-随笔分类-QT</title><link>http://www.cppblog.com/aaxron/category/17807.html</link><description>记录修行的印记
</description><language>zh-cn</language><lastBuildDate>Tue, 31 May 2016 17:35:29 GMT</lastBuildDate><pubDate>Tue, 31 May 2016 17:35:29 GMT</pubDate><ttl>60</ttl><item><title>QT生成在Windows下有图标的exe文件(IDE=QT Creator)</title><link>http://www.cppblog.com/aaxron/archive/2016/05/30/213607.html</link><dc:creator>天下</dc:creator><author>天下</author><pubDate>Mon, 30 May 2016 05:51:00 GMT</pubDate><guid>http://www.cppblog.com/aaxron/archive/2016/05/30/213607.html</guid><wfw:comment>http://www.cppblog.com/aaxron/comments/213607.html</wfw:comment><comments>http://www.cppblog.com/aaxron/archive/2016/05/30/213607.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/aaxron/comments/commentRss/213607.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/aaxron/services/trackbacks/213607.html</trackback:ping><description><![CDATA[<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000">QT生成在Windows下有图标的exe文件(IDE</span><span style="color: #000000">=</span><span style="color: #000000">QT&nbsp;Creator)<br />我个人十分喜爱QT&nbsp;Creator的IDE界面与操作，但是也许是尚未完全成熟或者是为了代码跨平台，有些功能并没有直接提供。<br /><br />比如Windows下做软件，至少作为主程序或启动程序的exe文件一般都应该有自己的图标，QT&nbsp;Creator虽然可以轻松地设置窗口的小图标，但并没有提供设置exe文件图标的功能。<br /><br />其实做起来并不难。<br />&#183;首先当然要准备一个.ico图标文件（假定为myIcon.ico），将其复制到工程目录当中（.pro文件所在的目录）。<br />&#183;然后在QT&nbsp;Creator中Ctrl</span><span style="color: #000000">+</span><span style="color: #000000">N或&nbsp;File&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">&nbsp;New&nbsp;File&nbsp;or&nbsp;Project<br />选择General中的Text&nbsp;File<br />名称填写为.rc文件（如myRc.rc）<br />在里面只用写一行:<br />IDI_ICON1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ICON&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DISCARDABLE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">myIcon.ico</span><span style="color: #000000">"</span><span style="color: #000000"><br />&#183;编辑.pro文件，里面应该有：<br />OTHER_FILES</span><span style="color: #000000">+=</span><span style="color: #000000">&nbsp;\<br />&nbsp;apprc.rc<br />在其下再添加一行（如果没有上面的内容也没事）:<br />RC_FILE&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;\<br />&nbsp;&nbsp;&nbsp;&nbsp;myRc.rc<br />&#183;最后编译一下就好了，新生成的exe文件的图标就会变成myIcon.ico的样子</span></div><img src ="http://www.cppblog.com/aaxron/aggbug/213607.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/aaxron/" target="_blank">天下</a> 2016-05-30 13:51 <a href="http://www.cppblog.com/aaxron/archive/2016/05/30/213607.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>QWidget与HWND的互相转换</title><link>http://www.cppblog.com/aaxron/archive/2016/05/30/213606.html</link><dc:creator>天下</dc:creator><author>天下</author><pubDate>Mon, 30 May 2016 05:51:00 GMT</pubDate><guid>http://www.cppblog.com/aaxron/archive/2016/05/30/213606.html</guid><wfw:comment>http://www.cppblog.com/aaxron/comments/213606.html</wfw:comment><comments>http://www.cppblog.com/aaxron/archive/2016/05/30/213606.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/aaxron/comments/commentRss/213606.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/aaxron/services/trackbacks/213606.html</trackback:ping><description><![CDATA[<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000">QWidget与HWND的互相转换<br /><br />在编写Windows的应用程序时，我们有时不可避免地要与Windows平台固有的Win32&nbsp;API打交道，但是Win32&nbsp;API里面常常用到的HWND等诸多句柄QT并没有。QT作为一款优秀的跨平台GUI库，不可能未作考虑，那么需要互相转换的时候该如何做呢？<br /><br />HWND转QWidget<br />QWidget&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">myWidget;<br />HWND&nbsp;hwnd;<br />myWidget</span><span style="color: #000000">=</span><span style="color: #000000">QWidget::find(hwnd);<br /><br /><br />QWidget转HWND<br />QWidget&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">myWidget;<br />HWND&nbsp;hwnd;<br />hwnd</span><span style="color: #000000">=</span><span style="color: #000000">(HWND)myWidget</span><span style="color: #000000">-&gt;</span><span style="color: #000000">winId();<br />QPixmap与HBITMAP、HICON互转<br /><br />使用QPixmap::toWinHICON();QPixmap::toWinHBITMAP();<br />QPixmap::fromWinHICON();QPixmap::fromWinHBITMAP();函数用法一目了然<br />QPixmap与QIcon、QImage可以轻松互转，这里不多说了</span></div><img src ="http://www.cppblog.com/aaxron/aggbug/213606.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/aaxron/" target="_blank">天下</a> 2016-05-30 13:51 <a href="http://www.cppblog.com/aaxron/archive/2016/05/30/213606.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SetAutoFont</title><link>http://www.cppblog.com/aaxron/archive/2013/11/28/204501.html</link><dc:creator>天下</dc:creator><author>天下</author><pubDate>Thu, 28 Nov 2013 07:56:00 GMT</pubDate><guid>http://www.cppblog.com/aaxron/archive/2013/11/28/204501.html</guid><wfw:comment>http://www.cppblog.com/aaxron/comments/204501.html</wfw:comment><comments>http://www.cppblog.com/aaxron/archive/2013/11/28/204501.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/aaxron/comments/commentRss/204501.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/aaxron/services/trackbacks/204501.html</trackback:ping><description><![CDATA[<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;SetAutoFont(QLabel</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;pLabel)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;w&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;pLabel</span><span style="color: #000000">-&gt;</span><span style="color: #000000">width();<br />&nbsp;&nbsp;&nbsp;&nbsp;QFont&nbsp;font&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;pLabel</span><span style="color: #000000">-&gt;</span><span style="color: #000000">font();<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;nFontMax&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">60</span><span style="color: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;nFontMin&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">12</span><span style="color: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;nNewWidth;<br />&nbsp;&nbsp;&nbsp;&nbsp;QString&nbsp;strText&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;pLabel</span><span style="color: #000000">-&gt;</span><span style="color: #000000">text();<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;nFontSize</span><span style="color: #000000">=</span><span style="color: #000000">nFontMax;nFontSize</span><span style="color: #000000">&gt;=</span><span style="color: #000000">nFontMin;nFontSize</span><span style="color: #000000">-=</span><span style="color: #000000">2</span><span style="color: #000000">)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;font.setPointSize(nFontSize);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;QFontMetrics&nbsp;fm(font);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nNewWidth&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;fm.width(strText);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(nNewWidth&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">&nbsp;w)&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pLabel</span><span style="color: #000000">-&gt;</span><span style="color: #000000">setFont(font);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">break</span><span style="color: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}</span></div><img src ="http://www.cppblog.com/aaxron/aggbug/204501.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/aaxron/" target="_blank">天下</a> 2013-11-28 15:56 <a href="http://www.cppblog.com/aaxron/archive/2013/11/28/204501.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Qt将资源放在外部调用</title><link>http://www.cppblog.com/aaxron/archive/2013/11/26/204463.html</link><dc:creator>天下</dc:creator><author>天下</author><pubDate>Tue, 26 Nov 2013 09:42:00 GMT</pubDate><guid>http://www.cppblog.com/aaxron/archive/2013/11/26/204463.html</guid><wfw:comment>http://www.cppblog.com/aaxron/comments/204463.html</wfw:comment><comments>http://www.cppblog.com/aaxron/archive/2013/11/26/204463.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/aaxron/comments/commentRss/204463.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/aaxron/services/trackbacks/204463.html</trackback:ping><description><![CDATA[<p><font color="#000000" face="Verdana">编译资源文件：<br />rcc -binary resource/0/app.qrc -o resource/0.rcc<br />rcc -binary resource/1/app.qrc -o resource/1.rcc<br /><br />调用：<br />bool bRet =&nbsp; QResource::registerResource(strResourceFileName);<br /><br />释放：<br />bool bRet =&nbsp; QResource::unregisterResource(strResourceFileName);<br /><br /></font></p>
<p><font color="#000000" face="Verdana"><br /></font>&nbsp;</p><img src ="http://www.cppblog.com/aaxron/aggbug/204463.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/aaxron/" target="_blank">天下</a> 2013-11-26 17:42 <a href="http://www.cppblog.com/aaxron/archive/2013/11/26/204463.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>键盘事件的传递</title><link>http://www.cppblog.com/aaxron/archive/2013/07/04/201511.html</link><dc:creator>天下</dc:creator><author>天下</author><pubDate>Thu, 04 Jul 2013 04:02:00 GMT</pubDate><guid>http://www.cppblog.com/aaxron/archive/2013/07/04/201511.html</guid><wfw:comment>http://www.cppblog.com/aaxron/comments/201511.html</wfw:comment><comments>http://www.cppblog.com/aaxron/archive/2013/07/04/201511.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/aaxron/comments/commentRss/201511.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/aaxron/services/trackbacks/201511.html</trackback:ping><description><![CDATA[<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;Q_GUI_EXPORT&nbsp;QWidget&nbsp;:&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;QObject,&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;QPaintDevice<br />{<br /></span><span style="color: #0000ff">protected</span><span style="color: #000000">:<br />&nbsp;&nbsp;&nbsp;&nbsp;QWidget(QWidgetPrivate&nbsp;</span><span style="color: #000000">&amp;</span><span style="color: #000000">d,&nbsp;QWidget</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;parent,&nbsp;Qt::WindowFlags&nbsp;f);<br />}<br /><br /></span><span style="color: #008000">/*</span><span style="color: #008000">!&nbsp;<br />\internal<br /></span><span style="color: #008000">*/</span><span style="color: #000000"><br />QWidget::QWidget(QWidgetPrivate&nbsp;</span><span style="color: #000000">&amp;</span><span style="color: #000000">dd,&nbsp;QWidget</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;parent,&nbsp;Qt::WindowFlags&nbsp;f)<br />&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;QObject(dd,&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">),&nbsp;QPaintDevice()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;Q_D(QWidget);<br />&nbsp;&nbsp;&nbsp;&nbsp;QT_TRY&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;d</span><span style="color: #000000">-&gt;</span><span style="color: #000000">init(parent,&nbsp;f);<br />&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;QT_CATCH(<img src="http://www.cppblog.com/Images/dot.gif"  alt="" />)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;QWidgetExceptionCleaner::cleanup(</span><span style="color: #0000ff">this</span><span style="color: #000000">,&nbsp;d_func());<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;QT_RETHROW;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /><br /><br /><br /></span><span style="color: #008000">//</span><span style="color: #008000">键盘事件的传递</span><span style="color: #008000"><br /></span><span style="color: #0000ff">extern</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">C</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;LRESULT&nbsp;QT_WIN_CALLBACK&nbsp;QtWndProc(HWND&nbsp;hwnd,&nbsp;UINT&nbsp;message,&nbsp;WPARAM&nbsp;wParam,&nbsp;LPARAM&nbsp;lParam)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">case</span><span style="color: #000000">&nbsp;WM_CHAR:&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MSG&nbsp;msg1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">bool</span><span style="color: #000000">&nbsp;anyMsg&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;PeekMessage(</span><span style="color: #000000">&amp;</span><span style="color: #000000">msg1,&nbsp;msg.hwnd,&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">,&nbsp;PM_NOREMOVE);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(anyMsg&nbsp;</span><span style="color: #000000">&amp;&amp;</span><span style="color: #000000">&nbsp;msg1.message&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;WM_DEADCHAR)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">true</span><span style="color: #000000">;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;consume&nbsp;event&nbsp;since&nbsp;there&nbsp;is&nbsp;a&nbsp;dead&nbsp;char&nbsp;next</span><span style="color: #008000"><br /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">break</span><span style="color: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;QWidget&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">g&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;QWidget::keyboardGrabber();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(g&nbsp;</span><span style="color: #000000">&amp;&amp;</span><span style="color: #000000">&nbsp;qt_get_tablet_widget()&nbsp;</span><span style="color: #000000">&amp;&amp;</span><span style="color: #000000">&nbsp;hwnd&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;qt_get_tablet_widget()</span><span style="color: #000000">-&gt;</span><span style="color: #000000">winId())&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;if&nbsp;we&nbsp;get&nbsp;an&nbsp;event&nbsp;for&nbsp;the&nbsp;internal&nbsp;tablet&nbsp;widget,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;then&nbsp;don't&nbsp;send&nbsp;it&nbsp;to&nbsp;the&nbsp;keyboard&nbsp;grabber,&nbsp;but<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;send&nbsp;it&nbsp;to&nbsp;the&nbsp;widget&nbsp;itself&nbsp;(we&nbsp;don't&nbsp;use&nbsp;it&nbsp;right<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;now,&nbsp;just&nbsp;in&nbsp;case).</span><span style="color: #008000"><br /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(g)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;widget&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;(QETWidget</span><span style="color: #000000">*</span><span style="color: #000000">)g;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(QApplication::activePopupWidget())&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;widget&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;(QETWidget</span><span style="color: #000000">*</span><span style="color: #000000">)QApplication::activePopupWidget()</span><span style="color: #000000">-&gt;</span><span style="color: #000000">focusWidget()<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">?</span><span style="color: #000000">&nbsp;(QETWidget</span><span style="color: #000000">*</span><span style="color: #000000">)QApplication::activePopupWidget()</span><span style="color: #000000">-&gt;</span><span style="color: #000000">focusWidget()<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;(QETWidget</span><span style="color: #000000">*</span><span style="color: #000000">)QApplication::activePopupWidget();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(QApplication::focusWidget())&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">这里条件为真</span><span style="color: #008000"><br /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;widget&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;(QETWidget</span><span style="color: #000000">*</span><span style="color: #000000">)QApplication::focusWidget();&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">得到具有输入焦点的widget</span><span style="color: #008000"><br /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(</span><span style="color: #000000">!</span><span style="color: #000000">widget&nbsp;</span><span style="color: #000000">||</span><span style="color: #000000">&nbsp;widget</span><span style="color: #000000">-&gt;</span><span style="color: #000000">internalWinId()&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;GetFocus())&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;We&nbsp;faked&nbsp;the&nbsp;message&nbsp;to&nbsp;go&nbsp;to&nbsp;exactly&nbsp;that&nbsp;widget.</span><span style="color: #008000"><br /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;widget&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;(QETWidget</span><span style="color: #000000">*</span><span style="color: #000000">)widget</span><span style="color: #000000">-&gt;</span><span style="color: #000000">window();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(widget</span><span style="color: #000000">-&gt;</span><span style="color: #000000">isEnabled())<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;sm_blockUserInput<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">?</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">true</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;qt_keymapper_private()</span><span style="color: #000000">-&gt;</span><span style="color: #000000">translateKeyEvent(widget,&nbsp;msg,&nbsp;g&nbsp;</span><span style="color: #000000">!=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">break</span><span style="color: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">..</span><span style="color: #008000"><br /></span><span style="color: #000000">}<br /><br /><br /></span><span style="color: #0000ff">extern</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">C</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;LRESULT&nbsp;QT_WIN_CALLBACK&nbsp;QtWndProc(HWND&nbsp;hwnd,&nbsp;UINT&nbsp;message,&nbsp;WPARAM&nbsp;wParam,&nbsp;LPARAM&nbsp;lParam)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(qt_is_translatable_mouse_event(message))&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(QApplication::activePopupWidget()&nbsp;</span><span style="color: #000000">!=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">)&nbsp;{&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;in&nbsp;popup&nbsp;mode</span><span style="color: #008000"><br /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;POINT&nbsp;curPos&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;msg.pt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;QWidget</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;w&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;QApplication::widgetAt(curPos.x,&nbsp;curPos.y);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(w)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;widget&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;(QETWidget</span><span style="color: #000000">*</span><span style="color: #000000">)w;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(</span><span style="color: #000000">!</span><span style="color: #000000">qt_tabletChokeMouse)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;widget</span><span style="color: #000000">-&gt;</span><span style="color: #000000">translateMouseEvent(msg);&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /><br /></span></div><img src ="http://www.cppblog.com/aaxron/aggbug/201511.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/aaxron/" target="_blank">天下</a> 2013-07-04 12:02 <a href="http://www.cppblog.com/aaxron/archive/2013/07/04/201511.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转]浅议Qt的事件处理机制二</title><link>http://www.cppblog.com/aaxron/archive/2013/07/04/201510.html</link><dc:creator>天下</dc:creator><author>天下</author><pubDate>Thu, 04 Jul 2013 04:00:00 GMT</pubDate><guid>http://www.cppblog.com/aaxron/archive/2013/07/04/201510.html</guid><wfw:comment>http://www.cppblog.com/aaxron/comments/201510.html</wfw:comment><comments>http://www.cppblog.com/aaxron/archive/2013/07/04/201510.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/aaxron/comments/commentRss/201510.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/aaxron/services/trackbacks/201510.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->浅议Qt的事件处理机制二我们在上文中，介绍了Qt框架的事件处理机制：事件的产生、分发、接受和处理，并以视窗系统鼠标点击QWidget为例，对代码进行了剖析，向大家分析了Qt框架如何通过Event&nbsp...&nbsp;&nbsp;<a href='http://www.cppblog.com/aaxron/archive/2013/07/04/201510.html'>阅读全文</a><img src ="http://www.cppblog.com/aaxron/aggbug/201510.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/aaxron/" target="_blank">天下</a> 2013-07-04 12:00 <a href="http://www.cppblog.com/aaxron/archive/2013/07/04/201510.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转]浅议Qt的事件处理机制一</title><link>http://www.cppblog.com/aaxron/archive/2013/07/04/201509.html</link><dc:creator>天下</dc:creator><author>天下</author><pubDate>Thu, 04 Jul 2013 03:59:00 GMT</pubDate><guid>http://www.cppblog.com/aaxron/archive/2013/07/04/201509.html</guid><wfw:comment>http://www.cppblog.com/aaxron/comments/201509.html</wfw:comment><comments>http://www.cppblog.com/aaxron/archive/2013/07/04/201509.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/aaxron/comments/commentRss/201509.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/aaxron/services/trackbacks/201509.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->浅议Qt的事件处理机制&nbsp;一&nbsp;.&nbsp;&nbsp;&nbsp;&nbsp;深入了解事件处理系统对于每个学习Qt人来说非常重要，可以说，Qt是以事件驱动的UI工具集。&nbsp;大家...&nbsp;&nbsp;<a href='http://www.cppblog.com/aaxron/archive/2013/07/04/201509.html'>阅读全文</a><img src ="http://www.cppblog.com/aaxron/aggbug/201509.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/aaxron/" target="_blank">天下</a> 2013-07-04 11:59 <a href="http://www.cppblog.com/aaxron/archive/2013/07/04/201509.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[原]Qt事件处理机制浅析</title><link>http://www.cppblog.com/aaxron/archive/2013/06/27/201340.html</link><dc:creator>天下</dc:creator><author>天下</author><pubDate>Thu, 27 Jun 2013 03:10:00 GMT</pubDate><guid>http://www.cppblog.com/aaxron/archive/2013/06/27/201340.html</guid><wfw:comment>http://www.cppblog.com/aaxron/comments/201340.html</wfw:comment><comments>http://www.cppblog.com/aaxron/archive/2013/06/27/201340.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/aaxron/comments/commentRss/201340.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/aaxron/services/trackbacks/201340.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->[原]Qt事件处理机制浅析&nbsp;&nbsp;&nbsp;&nbsp;事件处理机制浅析是通过WM_ACTIVATE消息来分析的//调用堆栈WinMainCRTStartup()&nbs...&nbsp;&nbsp;<a href='http://www.cppblog.com/aaxron/archive/2013/06/27/201340.html'>阅读全文</a><img src ="http://www.cppblog.com/aaxron/aggbug/201340.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/aaxron/" target="_blank">天下</a> 2013-06-27 11:10 <a href="http://www.cppblog.com/aaxron/archive/2013/06/27/201340.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Qt模态对话框  </title><link>http://www.cppblog.com/aaxron/archive/2013/04/24/199670.html</link><dc:creator>天下</dc:creator><author>天下</author><pubDate>Wed, 24 Apr 2013 01:38:00 GMT</pubDate><guid>http://www.cppblog.com/aaxron/archive/2013/04/24/199670.html</guid><wfw:comment>http://www.cppblog.com/aaxron/comments/199670.html</wfw:comment><comments>http://www.cppblog.com/aaxron/archive/2013/04/24/199670.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/aaxron/comments/commentRss/199670.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/aaxron/services/trackbacks/199670.html</trackback:ping><description><![CDATA[<p><font color="#000000" face="Verdana">&nbsp;</p>
<p><font color="#000000" face="Verdana">Qt模态对话框&nbsp; </font></p>
<p><font color="#000000" face="Verdana">1、模态对话框定</font></p>
<p><font color="#000000" face="Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 模态对话框（Modal Dialog）与非模态对话框（Modeless Dialog）的概念不是Qt所独有的，在各种不同的平台下都存在。又有叫法是称为模式对话框，无模式对话框等。</font></p>
<p><font color="#000000" face="Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 所谓模态对话框就是在其没有被关闭之前，用户不能与同一个应用程序的其他窗口进行交互，直到该对话框关闭。对于非模态对话框，当被打开时，用户既可选择和该对话框进行交互，也可以选择同应用程序的其他窗口交互。</font></p>
<p><font color="#000000" face="Verdana">2、显示模态对话框的方式</font></p>
<p><font color="#000000" face="Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在Qt中，显示一个对话框一般有两种方式，一种是使用exec()方法，它总是以模态来显示对话框；另一种是使用show()方法，它使得对话框既可以模态显示，也可以非模态显示，决定它是模态还是非模态的是对话框的modal属性。</font></p>
<p><font color="#000000" face="Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在Qt中，Qt的模态与非模态对话框选择是通过其属性modal来确定的。我们来看看modal属性，其定义如下：modal : bool默认情况下，对话框的该属性值是false。</font></p>
<p><font color="#000000" face="Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这时通过show()方法显示的对话框就是非模态的。而如果将该属性值设置为true，就设置成了模态对话框，其作用于把QWidget::windowModality属性设置为Qt::ApplicationModal。</font></p>
<p><font color="#000000" face="Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 而使用exec()方法显示对话框的话，将忽略modal属性值的设置并把对话框设置为模态对话框。</font></p>
<p><font color="#000000" face="Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 一般使用setModal()方法来设置对话框的modal属性。</font></p>
<p><font color="#000000" face="Verdana">3、具体函数</font></p>
<p><font color="#000000" face="Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 我们总结一下设置对话框为模态的方法。</font></p>
<p><font color="#000000" face="Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 如果要设置为模态对话框，最简单的就是使用exec()方法，示例代码如下：</font></p>
<p><font color="#000000" face="Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MyDialog myDlg; myDlg.exec();</font></p>
<p><font color="#000000" face="Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 也可以使用show()方法，示例代码如下：</font></p>
<p><font color="#000000" face="Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MyDialog myDlg; myDlg.setModal(true); myDlg.show();</font></p>
<p><font color="#000000" face="Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 如果要设置为非模态对话框，必须使用show()方法，示例代码如下：</font></p>
<p><font color="#000000" face="Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MyDialog myDlg; myDlg.setModal(false);</font></p>
<p><font color="#000000" face="Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //或者</font></p>
<p><font color="#000000" face="Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; myDlg.setModal();</font></p>
<p><font color="#000000" face="Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; myDlg.show();</font></p>
<p><font color="#000000" face="Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 再次强调，目前有的朋友对于模态对话框和非模态对话框的认识有误解，认为使用show()方法显示的就是非模态对话框，这是不正确的。</font></p>
<p><font color="#000000" face="Verdana">4、窗口置前</font></p>
<p><font color="#000000" face="Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 小贴士：有时候，我们需要一个对话框以非模态的形式显示，但又需要它总在所有窗口的最前面，这时可以通过如下代码设置：</font></p>
<p><font color="#000000" face="Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MyDialog myDlg; myDlg.setModal(false);</font></p>
<p><font color="#000000" face="Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //或者</font></p>
<p><font color="#000000" face="Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mDlg.setModal(); myDlg.show();</font></p>
<p><font color="#000000" face="Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //关键是下面这行</font></p>
<p><font color="#000000" face="Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; myDlg.setWindowFlags(Qt::WindowStaysOnTopHint);</font></p>
<p><font color="#000000" face="Verdana">转自：http://blog.163.com/qimo601@126/blog/static/1582209320130119254624/</font></p>
<p></font>&nbsp;</p><img src ="http://www.cppblog.com/aaxron/aggbug/199670.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/aaxron/" target="_blank">天下</a> 2013-04-24 09:38 <a href="http://www.cppblog.com/aaxron/archive/2013/04/24/199670.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>win32下使用getopt,从qt中弄了个getop.c</title><link>http://www.cppblog.com/aaxron/archive/2013/04/16/199482.html</link><dc:creator>天下</dc:creator><author>天下</author><pubDate>Tue, 16 Apr 2013 07:24:00 GMT</pubDate><guid>http://www.cppblog.com/aaxron/archive/2013/04/16/199482.html</guid><wfw:comment>http://www.cppblog.com/aaxron/comments/199482.html</wfw:comment><comments>http://www.cppblog.com/aaxron/archive/2013/04/16/199482.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/aaxron/comments/commentRss/199482.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/aaxron/services/trackbacks/199482.html</trackback:ping><description><![CDATA[<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008000; ">//</span><span style="color: #008000; ">getopt.h</span><span style="color: #008000; "><br /></span>#pragma&nbsp;once<br />#ifdef&nbsp;__cplusplus<br /><span style="color: #0000FF; ">extern</span>&nbsp;"C"&nbsp;{<br /><span style="color: #0000FF; ">#endif</span><br /><br /><span style="color: #0000FF; ">extern</span>&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;opterr;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">/*</span><span style="color: #008000; ">&nbsp;if&nbsp;error&nbsp;message&nbsp;should&nbsp;be&nbsp;printed&nbsp;</span><span style="color: #008000; ">*/</span><br /><span style="color: #0000FF; ">extern</span>&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;optind;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">/*</span><span style="color: #008000; ">&nbsp;index&nbsp;into&nbsp;parent&nbsp;argv&nbsp;vector&nbsp;</span><span style="color: #008000; ">*/</span><br /><span style="color: #0000FF; ">extern</span>&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;optopt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">/*</span><span style="color: #008000; ">&nbsp;character&nbsp;checked&nbsp;for&nbsp;validity&nbsp;</span><span style="color: #008000; ">*/</span><br /><span style="color: #0000FF; ">extern</span>&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;optreset;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">/*</span><span style="color: #008000; ">&nbsp;reset&nbsp;getopt&nbsp;</span><span style="color: #008000; ">*/</span><br /><span style="color: #0000FF; ">extern</span>&nbsp;<span style="color: #0000FF; ">char</span>&nbsp;&nbsp;&nbsp;&nbsp;*optarg;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">/*</span><span style="color: #008000; ">&nbsp;argument&nbsp;associated&nbsp;with&nbsp;option&nbsp;</span><span style="color: #008000; ">*/</span><br /><span style="color: #0000FF; ">int</span>&nbsp;getopt(<span style="color: #0000FF; ">int</span>&nbsp;argc,&nbsp;<span style="color: #0000FF; ">char</span>&nbsp;*&nbsp;<span style="color: #0000FF; ">const</span>&nbsp;argv[],&nbsp;<span style="color: #0000FF; ">const</span>&nbsp;<span style="color: #0000FF; ">char</span>&nbsp;*optstring);<br /><br />#ifdef&nbsp;__cplusplus<br />}&nbsp;&nbsp;&nbsp;&nbsp;<br /><span style="color: #0000FF; ">#endif</span></div><br />
getopt.c 从qt中弄的,一行都没改<br />
<br />
<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008000; ">//</span><span style="color: #008000; ">getopt.c&nbsp;从qt中弄的,一行都没改</span><span style="color: #008000; "><br />
</span><br />
<span style="color: #008000; ">/*</span><span style="color: #008000; ">&nbsp;$Id:&nbsp;getopt.c,v&nbsp;1.2&nbsp;2005/07/07&nbsp;16:34:06&nbsp;dron&nbsp;Exp&nbsp;$&nbsp;</span><span style="color: #008000; ">*/</span><br />
<br />
<span style="color: #008000; ">/*</span><span style="color: #008000; "><br />
&nbsp;*&nbsp;Copyright&nbsp;(c)&nbsp;1987,&nbsp;1993,&nbsp;1994<br />
&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;The&nbsp;Regents&nbsp;of&nbsp;the&nbsp;University&nbsp;of&nbsp;California.&nbsp;&nbsp;All&nbsp;rights&nbsp;reserved.<br />
&nbsp;*<br />
&nbsp;*&nbsp;Redistribution&nbsp;and&nbsp;use&nbsp;in&nbsp;source&nbsp;and&nbsp;binary&nbsp;forms,&nbsp;with&nbsp;or&nbsp;without<br />
&nbsp;*&nbsp;modification,&nbsp;are&nbsp;permitted&nbsp;provided&nbsp;that&nbsp;the&nbsp;following&nbsp;conditions<br />
&nbsp;*&nbsp;are&nbsp;met:<br />
&nbsp;*&nbsp;1.&nbsp;Redistributions&nbsp;of&nbsp;source&nbsp;code&nbsp;must&nbsp;retain&nbsp;the&nbsp;above&nbsp;copyright<br />
&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;notice,&nbsp;this&nbsp;list&nbsp;of&nbsp;conditions&nbsp;and&nbsp;the&nbsp;following&nbsp;disclaimer.<br />
&nbsp;*&nbsp;2.&nbsp;Redistributions&nbsp;in&nbsp;binary&nbsp;form&nbsp;must&nbsp;reproduce&nbsp;the&nbsp;above&nbsp;copyright<br />
&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;notice,&nbsp;this&nbsp;list&nbsp;of&nbsp;conditions&nbsp;and&nbsp;the&nbsp;following&nbsp;disclaimer&nbsp;in&nbsp;the<br />
&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;documentation&nbsp;and/or&nbsp;other&nbsp;materials&nbsp;provided&nbsp;with&nbsp;the&nbsp;distribution.<br />
&nbsp;*&nbsp;3.&nbsp;Neither&nbsp;the&nbsp;name&nbsp;of&nbsp;the&nbsp;University&nbsp;nor&nbsp;the&nbsp;names&nbsp;of&nbsp;its&nbsp;contributors<br />
&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;may&nbsp;be&nbsp;used&nbsp;to&nbsp;endorse&nbsp;or&nbsp;promote&nbsp;products&nbsp;derived&nbsp;from&nbsp;this&nbsp;software<br />
&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;without&nbsp;specific&nbsp;prior&nbsp;written&nbsp;permission.<br />
&nbsp;*<br />
&nbsp;*&nbsp;THIS&nbsp;SOFTWARE&nbsp;IS&nbsp;PROVIDED&nbsp;BY&nbsp;THE&nbsp;REGENTS&nbsp;AND&nbsp;CONTRIBUTORS&nbsp;``AS&nbsp;IS''&nbsp;AND<br />
&nbsp;*&nbsp;ANY&nbsp;EXPRESS&nbsp;OR&nbsp;IMPLIED&nbsp;WARRANTIES,&nbsp;INCLUDING,&nbsp;BUT&nbsp;NOT&nbsp;LIMITED&nbsp;TO,&nbsp;THE<br />
&nbsp;*&nbsp;IMPLIED&nbsp;WARRANTIES&nbsp;OF&nbsp;MERCHANTABILITY&nbsp;AND&nbsp;FITNESS&nbsp;FOR&nbsp;A&nbsp;PARTICULAR&nbsp;PURPOSE<br />
&nbsp;*&nbsp;ARE&nbsp;DISCLAIMED.&nbsp;&nbsp;IN&nbsp;NO&nbsp;EVENT&nbsp;SHALL&nbsp;THE&nbsp;REGENTS&nbsp;OR&nbsp;CONTRIBUTORS&nbsp;BE&nbsp;LIABLE<br />
&nbsp;*&nbsp;FOR&nbsp;ANY&nbsp;DIRECT,&nbsp;INDIRECT,&nbsp;INCIDENTAL,&nbsp;SPECIAL,&nbsp;EXEMPLARY,&nbsp;OR&nbsp;CONSEQUENTIAL<br />
&nbsp;*&nbsp;DAMAGES&nbsp;(INCLUDING,&nbsp;BUT&nbsp;NOT&nbsp;LIMITED&nbsp;TO,&nbsp;PROCUREMENT&nbsp;OF&nbsp;SUBSTITUTE&nbsp;GOODS<br />
&nbsp;*&nbsp;OR&nbsp;SERVICES;&nbsp;LOSS&nbsp;OF&nbsp;USE,&nbsp;DATA,&nbsp;OR&nbsp;PROFITS;&nbsp;OR&nbsp;BUSINESS&nbsp;INTERRUPTION)<br />
&nbsp;*&nbsp;HOWEVER&nbsp;CAUSED&nbsp;AND&nbsp;ON&nbsp;ANY&nbsp;THEORY&nbsp;OF&nbsp;LIABILITY,&nbsp;WHETHER&nbsp;IN&nbsp;CONTRACT,&nbsp;STRICT<br />
&nbsp;*&nbsp;LIABILITY,&nbsp;OR&nbsp;TORT&nbsp;(INCLUDING&nbsp;NEGLIGENCE&nbsp;OR&nbsp;OTHERWISE)&nbsp;ARISING&nbsp;IN&nbsp;ANY&nbsp;WAY<br />
&nbsp;*&nbsp;OUT&nbsp;OF&nbsp;THE&nbsp;USE&nbsp;OF&nbsp;THIS&nbsp;SOFTWARE,&nbsp;EVEN&nbsp;IF&nbsp;ADVISED&nbsp;OF&nbsp;THE&nbsp;POSSIBILITY&nbsp;OF<br />
&nbsp;*&nbsp;SUCH&nbsp;DAMAGE.<br />
&nbsp;</span><span style="color: #008000; ">*/</span><br />
<br />
<span style="color: #0000FF; ">#if</span>&nbsp;0<br />
<span style="color: #0000FF; ">static</span>&nbsp;<span style="color: #0000FF; ">char</span>&nbsp;sccsid[]&nbsp;=&nbsp;"@(#)getopt.c&nbsp;&nbsp;&nbsp;&nbsp;8.3&nbsp;(Berkeley)&nbsp;4/27/95";<br />
__RCSID("$NetBSD:&nbsp;getopt.c,v&nbsp;1.26&nbsp;2003/08/07&nbsp;16:43:40&nbsp;agc&nbsp;Exp&nbsp;$");<br />
<span style="color: #0000FF; ">#endif</span><br />
<br />
#include&nbsp;&lt;stdio.h&gt;<br />
#include&nbsp;&lt;<span style="color: #0000FF; ">string</span>.h&gt;<br />
<br />
<span style="color: #0000FF; ">int</span>&nbsp;&nbsp;&nbsp;&nbsp;opterr&nbsp;=&nbsp;1,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">/*</span><span style="color: #008000; ">&nbsp;if&nbsp;error&nbsp;message&nbsp;should&nbsp;be&nbsp;printed&nbsp;</span><span style="color: #008000; ">*/</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;optind&nbsp;=&nbsp;1,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">/*</span><span style="color: #008000; ">&nbsp;index&nbsp;into&nbsp;parent&nbsp;argv&nbsp;vector&nbsp;</span><span style="color: #008000; ">*/</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;optopt,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">/*</span><span style="color: #008000; ">&nbsp;character&nbsp;checked&nbsp;for&nbsp;validity&nbsp;</span><span style="color: #008000; ">*/</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;optreset;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">/*</span><span style="color: #008000; ">&nbsp;reset&nbsp;getopt&nbsp;</span><span style="color: #008000; ">*/</span><br />
<span style="color: #0000FF; ">char</span>&nbsp;&nbsp;&nbsp;&nbsp;*optarg;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">/*</span><span style="color: #008000; ">&nbsp;argument&nbsp;associated&nbsp;with&nbsp;option&nbsp;</span><span style="color: #008000; ">*/</span><br />
<br />
<span style="color: #0000FF; ">#define</span>&nbsp;&nbsp;&nbsp;&nbsp;BADCH&nbsp;&nbsp;&nbsp;&nbsp;(int)'?'<br />
<span style="color: #0000FF; ">#define</span>&nbsp;&nbsp;&nbsp;&nbsp;BADARG&nbsp;&nbsp;&nbsp;&nbsp;(int)':'<br />
<span style="color: #0000FF; ">#define</span>&nbsp;&nbsp;&nbsp;&nbsp;EMSG&nbsp;&nbsp;&nbsp;&nbsp;""<br />
<br />
<span style="color: #008000; ">/*</span><span style="color: #008000; "><br />
&nbsp;*&nbsp;getopt&nbsp;--<br />
&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;Parse&nbsp;argc/argv&nbsp;argument&nbsp;vector.<br />
&nbsp;</span><span style="color: #008000; ">*/</span><br />
<span style="color: #0000FF; ">int</span>&nbsp;getopt(<span style="color: #0000FF; ">int</span>&nbsp;argc,&nbsp;<span style="color: #0000FF; ">char</span>&nbsp;*&nbsp;<span style="color: #0000FF; ">const</span>&nbsp;argv[],&nbsp;<span style="color: #0000FF; ">const</span>&nbsp;<span style="color: #0000FF; ">char</span>&nbsp;*optstring)<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;<span style="color: #0000FF; ">char</span>&nbsp;*place&nbsp;=&nbsp;EMSG;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">/*</span><span style="color: #008000; ">&nbsp;option&nbsp;letter&nbsp;processing&nbsp;</span><span style="color: #008000; ">*/</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">char</span>&nbsp;*oli;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">/*</span><span style="color: #008000; ">&nbsp;option&nbsp;letter&nbsp;list&nbsp;index&nbsp;</span><span style="color: #008000; ">*/</span><br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(optreset&nbsp;||&nbsp;*place&nbsp;==&nbsp;0)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">/*</span><span style="color: #008000; ">&nbsp;update&nbsp;scanning&nbsp;pointer&nbsp;</span><span style="color: #008000; ">*/</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;optreset&nbsp;=&nbsp;0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;place&nbsp;=&nbsp;argv[optind];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(optind&nbsp;&gt;=&nbsp;argc&nbsp;||&nbsp;*place++&nbsp;!=&nbsp;'-')&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">/*</span><span style="color: #008000; ">&nbsp;Argument&nbsp;is&nbsp;absent&nbsp;or&nbsp;is&nbsp;not&nbsp;an&nbsp;option&nbsp;</span><span style="color: #008000; ">*/</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;place&nbsp;=&nbsp;EMSG;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;(-1);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;optopt&nbsp;=&nbsp;*place++;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(optopt&nbsp;==&nbsp;'-'&nbsp;&amp;&amp;&nbsp;*place&nbsp;==&nbsp;0)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">/*</span><span style="color: #008000; ">&nbsp;"--"&nbsp;=&gt;&nbsp;end&nbsp;of&nbsp;options&nbsp;</span><span style="color: #008000; ">*/</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;++optind;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;place&nbsp;=&nbsp;EMSG;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;(-1);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(optopt&nbsp;==&nbsp;0)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">/*</span><span style="color: #008000; ">&nbsp;Solitary&nbsp;'-',&nbsp;treat&nbsp;as&nbsp;a&nbsp;'-'&nbsp;option<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;the&nbsp;program&nbsp;(eg&nbsp;su)&nbsp;is&nbsp;looking&nbsp;for&nbsp;it.&nbsp;</span><span style="color: #008000; ">*/</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;place&nbsp;=&nbsp;EMSG;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(strchr(optstring,&nbsp;'-')&nbsp;==&nbsp;NULL)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;-1;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;optopt&nbsp;=&nbsp;'-';<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<span style="color: #0000FF; ">else</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;optopt&nbsp;=&nbsp;*place++;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">/*</span><span style="color: #008000; ">&nbsp;See&nbsp;if&nbsp;option&nbsp;letter&nbsp;is&nbsp;one&nbsp;the&nbsp;caller&nbsp;wanted<img src="http://www.cppblog.com/Images/dot.gif" alt="" />&nbsp;</span><span style="color: #008000; ">*/</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(optopt&nbsp;==&nbsp;':'&nbsp;||&nbsp;(oli&nbsp;=&nbsp;strchr(optstring,&nbsp;optopt))&nbsp;==&nbsp;NULL)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(*place&nbsp;==&nbsp;0)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;++optind;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(opterr&nbsp;&amp;&amp;&nbsp;*optstring&nbsp;!=&nbsp;':')<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(<span style="color: #0000FF; ">void</span>)fprintf(stderr,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"unknown&nbsp;option&nbsp;--&nbsp;%c\n",&nbsp;optopt);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;(BADCH);<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">/*</span><span style="color: #008000; ">&nbsp;Does&nbsp;this&nbsp;option&nbsp;need&nbsp;an&nbsp;argument?&nbsp;</span><span style="color: #008000; ">*/</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(oli[1]&nbsp;!=&nbsp;':')&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">/*</span><span style="color: #008000; ">&nbsp;don't&nbsp;need&nbsp;argument&nbsp;</span><span style="color: #008000; ">*/</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;optarg&nbsp;=&nbsp;NULL;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(*place&nbsp;==&nbsp;0)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;++optind;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<span style="color: #0000FF; ">else</span>&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">/*</span><span style="color: #008000; ">&nbsp;Option-argument&nbsp;is&nbsp;either&nbsp;the&nbsp;rest&nbsp;of&nbsp;this&nbsp;argument&nbsp;or&nbsp;the<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;entire&nbsp;next&nbsp;argument.&nbsp;</span><span style="color: #008000; ">*/</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(*place)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;optarg&nbsp;=&nbsp;place;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">else</span>&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(argc&nbsp;&gt;&nbsp;++optind)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;optarg&nbsp;=&nbsp;argv[optind];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">else</span>&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">/*</span><span style="color: #008000; ">&nbsp;option-argument&nbsp;absent&nbsp;</span><span style="color: #008000; ">*/</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;place&nbsp;=&nbsp;EMSG;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(*optstring&nbsp;==&nbsp;':')<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;(BADARG);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(opterr)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(<span style="color: #0000FF; ">void</span>)fprintf(stderr,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"option&nbsp;requires&nbsp;an&nbsp;argument&nbsp;--&nbsp;%c\n",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;optopt);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;(BADCH);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;place&nbsp;=&nbsp;EMSG;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;++optind;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;(optopt);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">/*</span><span style="color: #008000; ">&nbsp;return&nbsp;option&nbsp;letter&nbsp;</span><span style="color: #008000; ">*/</span><br />
}</div>
<br />
gnu getopt的使用:<br />
<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008000; ">//</span><span style="color: #008000; ">main.c</span><span style="color: #008000; "><br />
</span>#include&lt;stdio.h&gt;<br />
#ifdef&nbsp;WIN32<br />
&nbsp;&nbsp;&nbsp;&nbsp;#include&nbsp;"getopt.h"<br />
<span style="color: #0000FF; ">#else</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;#include&lt;unistd.h&gt;<br />
<span style="color: #0000FF; ">#endif</span><br />
<br />
<span style="color: #0000FF; ">int</span>&nbsp;main(<span style="color: #0000FF; ">int</span>&nbsp;argc,<span style="color: #0000FF; ">char</span>&nbsp;**argv)<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;ch;<br />
&nbsp;&nbsp;&nbsp;&nbsp;opterr&nbsp;=&nbsp;1;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">while</span>((ch&nbsp;=&nbsp;getopt(argc,argv,"a:bcde"))!=&nbsp;-1)<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">switch</span>(ch)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">case</span>&nbsp;'a':&nbsp;printf("option&nbsp;a:'%s'\n",optarg);&nbsp;<span style="color: #0000FF; ">break</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">case</span>&nbsp;'b':&nbsp;printf("option&nbsp;b&nbsp;:b\n");&nbsp;<span style="color: #0000FF; ">break</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">default</span>:&nbsp;&nbsp;printf("other&nbsp;option&nbsp;:%c\n",ch);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;printf("optopt&nbsp;+%c\n",optopt);<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">system("pause");</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;0;<br />
<br />
}</div><img src ="http://www.cppblog.com/aaxron/aggbug/199482.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/aaxron/" target="_blank">天下</a> 2013-04-16 15:24 <a href="http://www.cppblog.com/aaxron/archive/2013/04/16/199482.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>QLCDNumber</title><link>http://www.cppblog.com/aaxron/archive/2012/10/19/193514.html</link><dc:creator>天下</dc:creator><author>天下</author><pubDate>Fri, 19 Oct 2012 03:18:00 GMT</pubDate><guid>http://www.cppblog.com/aaxron/archive/2012/10/19/193514.html</guid><wfw:comment>http://www.cppblog.com/aaxron/comments/193514.html</wfw:comment><comments>http://www.cppblog.com/aaxron/archive/2012/10/19/193514.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/aaxron/comments/commentRss/193514.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/aaxron/services/trackbacks/193514.html</trackback:ping><description><![CDATA[<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008000">//</span><span style="color: #008000">DigitalClock.h</span><span style="color: #008000"><br /></span><span style="color: #000000">#pragma&nbsp;once<br />#include&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">QtGui</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />#include&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">QLCDNumber</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /><br /></span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;DigitalClock&nbsp;:&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;QLCDNumber&nbsp;<br />{<br /></span><span style="color: #0000ff">public</span><span style="color: #000000">:<br />&nbsp;&nbsp;&nbsp;&nbsp;DigitalClock(QWidget&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">parent</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">);<br /><br /></span><span style="color: #0000ff">protected</span><span style="color: #000000">:<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;timerEvent(QTimerEvent&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">);<br /></span><span style="color: #0000ff">private</span><span style="color: #000000">:<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">bool</span><span style="color: #000000">&nbsp;isColon;<br />};<br /><br /><br /></span><span style="color: #008000">//</span><span style="color: #008000">DigitalClock.cpp</span><span style="color: #008000"><br /></span><span style="color: #000000">#include&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">DigitalClock.h</span><span style="color: #000000">"</span><span style="color: #000000"><br />#include&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">QDateTime</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /><br />DigitalClock::DigitalClock(QWidget&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">parent)&nbsp;:&nbsp;QLCDNumber(parent)&nbsp;<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">-&gt;</span><span style="color: #000000">isColon&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">false</span><span style="color: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">-&gt;</span><span style="color: #000000">setFrameStyle(QFrame::Panel&nbsp;</span><span style="color: #000000">|</span><span style="color: #000000">&nbsp;QFrame::Raised);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">-&gt;</span><span style="color: #000000">setNumDigits(</span><span style="color: #000000">11</span><span style="color: #000000">);<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">QPalette&nbsp;pe;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">pe.setColor(QPalette::WindowText,Qt::blue);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">setPalette(pe);</span><span style="color: #008000"><br /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;startTimer(</span><span style="color: #000000">500</span><span style="color: #000000">);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;setStyleSheet(</span><span style="color: #000000">"</span><span style="color: #000000">color:#0000ff;</span><span style="color: #000000">"</span><span style="color: #000000">);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">setStyleSheet("color:blue;");</span><span style="color: #008000"><br /></span><span style="color: #000000">}<br /><br /><br /></span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;DigitalClock::timerEvent(QTimerEvent&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">e)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;isColon&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">!</span><span style="color: #000000">isColon;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;QString&nbsp;timeString&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;QTime::currentTime().toString().left(</span><span style="color: #000000">5</span><span style="color: #000000">);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;QDate&nbsp;date&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;QDate::currentDate();<br />&nbsp;&nbsp;&nbsp;&nbsp;QString&nbsp;dateString;<br />&nbsp;&nbsp;&nbsp;&nbsp;dateString.sprintf(&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;%2d-%2d</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;date.month(),&nbsp;date.day());<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;QString&nbsp;displayString&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;timeString;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(</span><span style="color: #000000">!</span><span style="color: #000000">isColon)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;displayString[</span><span style="color: #000000">2</span><span style="color: #000000">]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">'</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">'</span><span style="color: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;display(displayString);<br />}<br /><br /><br /></span><span style="color: #008000">//</span><span style="color: #008000">main.cpp</span><span style="color: #008000"><br /></span><span style="color: #000000">#include&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">DigitalClock.h</span><span style="color: #000000">"</span><span style="color: #000000"><br />#include&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">QApplication</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /><br /></span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;main(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;argc,&nbsp;</span><span style="color: #0000ff">char</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">argv[])&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;QApplication&nbsp;app(argc,&nbsp;argv);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;DigitalClock&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">digitalClock&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;DigitalClock;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;digitalClock</span><span style="color: #000000">-&gt;</span><span style="color: #000000">resize(</span><span style="color: #000000">300</span><span style="color: #000000">,</span><span style="color: #000000">80</span><span style="color: #000000">);<br />&nbsp;&nbsp;&nbsp;&nbsp;digitalClock</span><span style="color: #000000">-&gt;</span><span style="color: #000000">setWindowTitle(</span><span style="color: #000000">"</span><span style="color: #000000">QTimer</span><span style="color: #000000">"</span><span style="color: #000000">);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;digitalClock</span><span style="color: #000000">-&gt;</span><span style="color: #000000">show();<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;app.exec();<br />}</span></div><img src ="http://www.cppblog.com/aaxron/aggbug/193514.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/aaxron/" target="_blank">天下</a> 2012-10-19 11:18 <a href="http://www.cppblog.com/aaxron/archive/2012/10/19/193514.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>QT设置QLabel中字体的颜色</title><link>http://www.cppblog.com/aaxron/archive/2012/10/19/193512.html</link><dc:creator>天下</dc:creator><author>天下</author><pubDate>Fri, 19 Oct 2012 03:14:00 GMT</pubDate><guid>http://www.cppblog.com/aaxron/archive/2012/10/19/193512.html</guid><wfw:comment>http://www.cppblog.com/aaxron/comments/193512.html</wfw:comment><comments>http://www.cppblog.com/aaxron/archive/2012/10/19/193512.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/aaxron/comments/commentRss/193512.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/aaxron/services/trackbacks/193512.html</trackback:ping><description><![CDATA[<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000">QT设置QLabel中字体的颜色<br /><br />其实，这是一个比较常见的问题。大致有几种做法：一是使用setPalette()方法；二是使用样式表；三是可以使用QStyle；四是可以在其中使用一些简单的HTML样式。<br />下面就具体说一下，也算是个总结吧。<br /><br />第一种，使用setPalette()方法如下：<br />QLabel&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">label&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;QLabel(tr(</span><span style="color: #000000">"</span><span style="color: #000000">Hello&nbsp;Qt!</span><span style="color: #000000">"</span><span style="color: #000000">));<br />QPalette&nbsp;pe;<br />pe.setColor(QPalette::WindowText,Qt::white);<br />label</span><span style="color: #000000">-&gt;</span><span style="color: #000000">setPalette(pe);<br /><br />第二种，使用样式表如下：<br />setStyleSheet(</span><span style="color: #000000">"</span><span style="color: #000000">color:red;</span><span style="color: #000000">"</span><span style="color: #000000">);&nbsp;<br /></span><span style="color: #008000">//</span><span style="color: #008000">setStyleSheet("color:#ff6600;");</span><span style="color: #008000"><br /></span><span style="color: #000000"><br />第三种，使用QStyle，在Qt&nbsp;Demo中有一个很好的讲解QStyle的例子，可以参考学习。<br /><br />第四种，使用一些简单的HTML格式：<br />QLabel&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">label&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;QLabel(</span><span style="color: #000000">"</span><span style="color: #000000">&lt;h2&gt;&lt;i&gt;Hello&lt;/i&gt;&lt;font&nbsp;color=red&gt;Qt!&lt;/font&gt;&lt;/h2&gt;</span><span style="color: #000000">"</span><span style="color: #000000">);<br /></span></div><img src ="http://www.cppblog.com/aaxron/aggbug/193512.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/aaxron/" target="_blank">天下</a> 2012-10-19 11:14 <a href="http://www.cppblog.com/aaxron/archive/2012/10/19/193512.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>用标准C++实现信号与槽机制</title><link>http://www.cppblog.com/aaxron/archive/2012/10/17/193420.html</link><dc:creator>天下</dc:creator><author>天下</author><pubDate>Wed, 17 Oct 2012 08:11:00 GMT</pubDate><guid>http://www.cppblog.com/aaxron/archive/2012/10/17/193420.html</guid><wfw:comment>http://www.cppblog.com/aaxron/comments/193420.html</wfw:comment><comments>http://www.cppblog.com/aaxron/archive/2012/10/17/193420.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/aaxron/comments/commentRss/193420.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/aaxron/services/trackbacks/193420.html</trackback:ping><description><![CDATA[<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000">#include&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">algorithm</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />#include&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">iostream</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />#include&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">vector</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /></span><span style="color: #0000ff">using</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">namespace</span><span style="color: #000000">&nbsp;std;<br /><br />template</span><span style="color: #000000">&lt;</span><span style="color: #000000">typename&nbsp;tParam</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /></span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;SlotBase<br />{<br /></span><span style="color: #0000ff">public</span><span style="color: #000000">:<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">virtual</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;Exec(tParam&nbsp;param)&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;<br />};<br /><br /><br /><br />template</span><span style="color: #000000">&lt;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;T,&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;tParam</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /></span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;SlotImpl&nbsp;:&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;SlotBase</span><span style="color: #000000">&lt;</span><span style="color: #000000">tParam</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />{<br /></span><span style="color: #0000ff">public</span><span style="color: #000000">:<br />&nbsp;&nbsp;&nbsp;&nbsp;SlotImpl(T</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;pObj,&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;(T::</span><span style="color: #000000">*</span><span style="color: #000000">func)(tParam)&nbsp;)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_pObj&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;pObj;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_Func&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;func;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;Exec(&nbsp;tParam&nbsp;param)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(m_pObj</span><span style="color: #000000">-&gt;*</span><span style="color: #000000">m_Func)(param);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br /></span><span style="color: #0000ff">private</span><span style="color: #000000">:<br />&nbsp;&nbsp;&nbsp;&nbsp;T</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;m_pObj;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;(T::</span><span style="color: #000000">*</span><span style="color: #000000">m_Func)(tParam);<br />};<br /><br /><br /><br /><br /><br />template</span><span style="color: #000000">&lt;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;tParam</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /></span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;Slot<br />{<br /></span><span style="color: #0000ff">public</span><span style="color: #000000">:<br />&nbsp;&nbsp;&nbsp;&nbsp;template</span><span style="color: #000000">&lt;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;T</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;Slot(T</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;pObj,&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;(T::</span><span style="color: #000000">*</span><span style="color: #000000">func)(tParam))<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_pSlotBase&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;SlotImpl</span><span style="color: #000000">&lt;</span><span style="color: #000000">T,tParam</span><span style="color: #000000">&gt;</span><span style="color: #000000">(pObj,&nbsp;func);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">~</span><span style="color: #000000">Slot()<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;delete&nbsp;m_pSlotBase;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;Exec(tParam&nbsp;param1)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_pSlotBase</span><span style="color: #000000">-&gt;</span><span style="color: #000000">Exec(param1);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br /></span><span style="color: #0000ff">private</span><span style="color: #000000">:<br />&nbsp;&nbsp;&nbsp;&nbsp;SlotBase</span><span style="color: #000000">&lt;</span><span style="color: #000000">tParam</span><span style="color: #000000">&gt;*</span><span style="color: #000000">&nbsp;m_pSlotBase;<br />};<br /><br /><br /><br />template</span><span style="color: #000000">&lt;</span><span style="color: #000000">typename&nbsp;tParam</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /></span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;Signal<br />{<br /></span><span style="color: #0000ff">public</span><span style="color: #000000">:<br />&nbsp;&nbsp;&nbsp;&nbsp;template</span><span style="color: #000000">&lt;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;T</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;Bind(T</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;pObj,&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;(T::</span><span style="color: #000000">*</span><span style="color: #000000">func)(tParam))<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_pSlotSet.push_back(&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Slot</span><span style="color: #000000">&lt;</span><span style="color: #000000">tParam</span><span style="color: #000000">&gt;</span><span style="color: #000000">(pObj,func)&nbsp;);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">~</span><span style="color: #000000">Signal()<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;i</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">;i</span><span style="color: #000000">&lt;</span><span style="color: #000000">(</span><span style="color: #0000ff">int</span><span style="color: #000000">)m_pSlotSet.size();i</span><span style="color: #000000">++</span><span style="color: #000000">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;delete&nbsp;m_pSlotSet[i];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">operator</span><span style="color: #000000">()(tParam&nbsp;param1)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;i</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">;i</span><span style="color: #000000">&lt;</span><span style="color: #000000">(</span><span style="color: #0000ff">int</span><span style="color: #000000">)m_pSlotSet.size();i</span><span style="color: #000000">++</span><span style="color: #000000">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_pSlotSet[i]</span><span style="color: #000000">-&gt;</span><span style="color: #000000">Exec(param1);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br /></span><span style="color: #0000ff">private</span><span style="color: #000000">:<br />&nbsp;&nbsp;&nbsp;&nbsp;vector</span><span style="color: #000000">&lt;</span><span style="color: #000000">&nbsp;Slot</span><span style="color: #000000">&lt;</span><span style="color: #000000">tParam</span><span style="color: #000000">&gt;*</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;m_pSlotSet;<br />};<br /><br /></span><span style="color: #0000ff">#define</span><span style="color: #000000">&nbsp;Connect(&nbsp;sender,&nbsp;signal,&nbsp;receiver,&nbsp;method)&nbsp;(&nbsp;(sender)-&gt;signal.Bind(receiver,&nbsp;method)&nbsp;)</span><span style="color: #000000"><br /><br /></span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;A<br />{<br /></span><span style="color: #0000ff">public</span><span style="color: #000000">:<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;FuncOfA(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;param)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000">"</span><span style="color: #000000">A::FuncOfA(%d)\n</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;param);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />};<br /><br /></span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;B<br />{<br /></span><span style="color: #0000ff">public</span><span style="color: #000000">:<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;FuncOfB(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;param)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000">"</span><span style="color: #000000">B::FuncOfB(%d)\n</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;param);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />};<br /><br /></span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;C<br />{<br /></span><span style="color: #0000ff">public</span><span style="color: #000000">:<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;SetValue(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;value)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ValueChanged(value);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br /></span><span style="color: #0000ff">public</span><span style="color: #000000">:<br />&nbsp;&nbsp;&nbsp;&nbsp;Signal</span><span style="color: #000000">&lt;</span><span style="color: #0000ff">int</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;ValueChanged;<br /><br />};<br /><br /></span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;main()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;A</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;pA&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;A;<br />&nbsp;&nbsp;&nbsp;&nbsp;B</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;pB&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;B;<br />&nbsp;&nbsp;&nbsp;&nbsp;C</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;pC&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;C;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;Connect(pC,&nbsp;ValueChanged,&nbsp;pA,&nbsp;</span><span style="color: #000000">&amp;</span><span style="color: #000000">A::FuncOfA);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">Connect(pC,&nbsp;ValueChanged,&nbsp;pB,&nbsp;&amp;B::FuncOfB);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">pC-&gt;ValueChanged(10);</span><span style="color: #008000"><br /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;pC</span><span style="color: #000000">-&gt;</span><span style="color: #000000">SetValue(</span><span style="color: #000000">10</span><span style="color: #000000">);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">pC-&gt;SetValue(5);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">pC-&gt;SetValue(5);</span><span style="color: #008000"><br /></span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;delete&nbsp;pC;<br />&nbsp;&nbsp;&nbsp;&nbsp;delete&nbsp;pB;<br />&nbsp;&nbsp;&nbsp;&nbsp;delete&nbsp;pA;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;system(</span><span style="color: #000000">"</span><span style="color: #000000">pause</span><span style="color: #000000">"</span><span style="color: #000000">);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;<br />}<br /><br /><br />转自:http:</span><span style="color: #008000">//</span><span style="color: #008000">www.cnitblog.com/luckydmz/archive/2010/11/15/71336.html</span></div><img src ="http://www.cppblog.com/aaxron/aggbug/193420.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/aaxron/" target="_blank">天下</a> 2012-10-17 16:11 <a href="http://www.cppblog.com/aaxron/archive/2012/10/17/193420.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>QT资源文件</title><link>http://www.cppblog.com/aaxron/archive/2012/10/17/193405.html</link><dc:creator>天下</dc:creator><author>天下</author><pubDate>Wed, 17 Oct 2012 03:03:00 GMT</pubDate><guid>http://www.cppblog.com/aaxron/archive/2012/10/17/193405.html</guid><wfw:comment>http://www.cppblog.com/aaxron/comments/193405.html</wfw:comment><comments>http://www.cppblog.com/aaxron/archive/2012/10/17/193405.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/aaxron/comments/commentRss/193405.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/aaxron/services/trackbacks/193405.html</trackback:ping><description><![CDATA[<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000">QT资源文件<br />&nbsp;<br />Qt资源体系采用平台独立机制来存储应用程序执行时的二进制文件。这种机制在应用程序需要一些确定的文件(图标、翻译文件等等)而且又不想冒丢失文件的风险时是有用的。<br /><br />资源体系依赖于&nbsp;qmake,&nbsp;rcc&nbsp;(Qt</span><span style="color: #000000">'</span><span style="color: #000000">s&nbsp;resource&nbsp;compiler),&nbsp;和&nbsp;QFile&nbsp;的紧密协作。Qt&nbsp;3&nbsp;的&nbsp;qembed&nbsp;工具和&nbsp;image&nbsp;collection&nbsp;机制被废除。</span><span style="color: #000000"><br /></span><span style="color: #000000"><br />Resource&nbsp;Collection&nbsp;Files&nbsp;(.qrc)<br />与应用程序关联的应用程序由&nbsp;.qrc&nbsp;文件来指定，它用XML记录硬盘上的文件和对应的随意指定的资源名称，应用程序通过资源名称来访问资源。<br /><br />一个.qrc&nbsp;文件的例子：<br /><br /></span><span style="color: #000000">&lt;!</span><span style="color: #000000">DOCTYPE&nbsp;RCC</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /></span><span style="color: #000000">&lt;</span><span style="color: #000000">RCC&nbsp;version</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">1.0</span><span style="color: #000000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">qresource</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">file</span><span style="color: #000000">&gt;</span><span style="color: #000000">images</span><span style="color: #000000">/</span><span style="color: #000000">copy.png</span><span style="color: #000000">&lt;/</span><span style="color: #000000">file</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">file</span><span style="color: #000000">&gt;</span><span style="color: #000000">images</span><span style="color: #000000">/</span><span style="color: #000000">cut.png</span><span style="color: #000000">&lt;/</span><span style="color: #000000">file</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">file</span><span style="color: #000000">&gt;</span><span style="color: #000000">images</span><span style="color: #000000">/</span><span style="color: #000000">paste.png</span><span style="color: #000000">&lt;/</span><span style="color: #000000">file</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">file</span><span style="color: #000000">&gt;</span><span style="color: #000000">images</span><span style="color: #000000">/</span><span style="color: #000000">save.png</span><span style="color: #000000">&lt;/</span><span style="color: #000000">file</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;/</span><span style="color: #000000">qresource</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /></span><span style="color: #000000">&lt;/</span><span style="color: #000000">RCC</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />.qrc&nbsp;文件中列出的资源文件是程序的源码树的一部分。指定的路径是&nbsp;.qrc&nbsp;文件所在目录的相对路径。注意，列出的资源文件必须位于&nbsp;.qrc&nbsp;文件所在目录或者其子目录下。<br /><br />资源数据也能被编译进二进制文件中，因此应用程序代码可以立即访问；也可以创建一个二进制资源，稍后在程序中登记了资源体系的代码中指定。<br /><br />缺省时，程序可以用资源在源码树中的名称加一个&nbsp;:</span><span style="color: #000000">/</span><span style="color: #000000">&nbsp;前缀来访问它。例如，在程序的源码树中是&nbsp;images</span><span style="color: #000000">/</span><span style="color: #000000">cut.png&nbsp;的文件可以通过&nbsp;:</span><span style="color: #000000">/</span><span style="color: #000000">images</span><span style="color: #000000">/</span><span style="color: #000000">cut.png&nbsp;来访问。但也可以用&nbsp;file&nbsp;标签中的&nbsp;alias&nbsp;属性来指定：<br /><br /></span><span style="color: #000000">&lt;</span><span style="color: #000000">file&nbsp;alias</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">cut-img.png</span><span style="color: #000000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000">images</span><span style="color: #000000">/</span><span style="color: #000000">cut.png</span><span style="color: #000000">&lt;/</span><span style="color: #000000">file</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />这时该文件可以通过&nbsp;:</span><span style="color: #000000">/</span><span style="color: #000000">cut</span><span style="color: #000000">-</span><span style="color: #000000">img.png&nbsp;来访问。也可以在&nbsp;.qrc&nbsp;文件中用&nbsp;qresource&nbsp;标签的&nbsp;prefix&nbsp;属性：它可以为&nbsp;.qrc&nbsp;文件中所有文件指定一个前缀：<br /><br /></span><span style="color: #000000">&lt;</span><span style="color: #000000">qresource&nbsp;prefix</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">/myresources</span><span style="color: #000000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">file&nbsp;alias</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">cut-img.png</span><span style="color: #000000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000">images</span><span style="color: #000000">/</span><span style="color: #000000">cut.png</span><span style="color: #000000">&lt;/</span><span style="color: #000000">file</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /></span><span style="color: #000000">&lt;/</span><span style="color: #000000">qresource</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />这时该文件可以用&nbsp;:</span><span style="color: #000000">/</span><span style="color: #000000">myresources</span><span style="color: #000000">/</span><span style="color: #000000">cut</span><span style="color: #000000">-</span><span style="color: #000000">img.png&nbsp;访问。<br /><br />有些资源，像翻译文件和图标，需要随着用户的本地配置而变化。这可以在&nbsp;qresource&nbsp;标签的&nbsp;lang&nbsp;属性中指定一个合适的本地化字串来实现。例如：<br /><br /></span><span style="color: #000000">&lt;</span><span style="color: #000000">qresource</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">file</span><span style="color: #000000">&gt;</span><span style="color: #000000">cut.jpg</span><span style="color: #000000">&lt;/</span><span style="color: #000000">file</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /></span><span style="color: #000000">&lt;/</span><span style="color: #000000">qresource</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /><br /></span><span style="color: #000000">&lt;</span><span style="color: #000000">qresource&nbsp;lang</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">fr</span><span style="color: #000000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">file&nbsp;alias</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">cut.jpg</span><span style="color: #000000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000">cut_fr.jpg</span><span style="color: #000000">&lt;/</span><span style="color: #000000">file</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /></span><span style="color: #000000">&lt;/</span><span style="color: #000000">qresource</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />如果用户的本地化设置是&nbsp;French&nbsp;(也就是说，QLocale::system().name()&nbsp;returns&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">fr_FR</span><span style="color: #000000">"</span><span style="color: #000000">)，:</span><span style="color: #000000">/</span><span style="color: #000000">cut.jpg&nbsp;就会引用&nbsp;cut_fr.jpg&nbsp;图像。对于其他本地化设置，仍然用&nbsp;cut.jpg&nbsp;。<br /><br />本地化字串的使用格式参见&nbsp;QLocale&nbsp;文档。<br /><br />使用外部二进制资源<br />为创建一个外部二进制资源，需要通过向&nbsp;rcc&nbsp;传递&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">binary&nbsp;开关来生成资源数据(一般是.rcc扩展名)。然后可以用&nbsp;QResource&nbsp;API&nbsp;来注册资源。<br />例如，一个&nbsp;.qrc&nbsp;文件指定的资源数据集可以用下面方法编译：<br />rcc&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">binary&nbsp;myresource.qrc&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">o&nbsp;myresource.rcc<br />应用程序中，用下面的代码注册资源：&nbsp;QResource::registerResource(</span><span style="color: #000000">"</span><span style="color: #000000">/path/to/myresource.rcc</span><span style="color: #000000">"</span><span style="color: #000000">);<br /><br />Compiled</span><span style="color: #000000">-</span><span style="color: #000000">In&nbsp;Resources<br />必须在应用程序的&nbsp;.pro&nbsp;文件中指定.qrc&nbsp;文件，&nbsp;qmake&nbsp;才能知道并将资源编译进二进制文件。例如：<br /><br />RESOURCES&nbsp;&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;application.qrc<br />qmake&nbsp;将产生make规则来生成一个叫做&nbsp;qrc_application.cpp&nbsp;的文件并把它链接到应用程序中。该文件中，图像和其他资源的所有数据被以压缩二进制数据存进静态C</span><span style="color: #000000">++</span><span style="color: #000000">数组中。&nbsp;.qrc&nbsp;文件被改变或者它引用的文件中的某一个被改变时，&nbsp;qrc_application.cpp&nbsp;自动重新生成。若你没有使用&nbsp;.pro&nbsp;文件，你也可以手动调用&nbsp;rcc&nbsp;或者在你的编译系统中添加创建规则。<br /><br />通常，Qt直接将数据存储在可执行文件中，甚至在Windows和Mac&nbsp;OS&nbsp;X这些提供资源本地支持的操作系统中也是这样。这可能会在未来的Qt版本中改变。<br /><br />Using&nbsp;Resources&nbsp;</span><span style="color: #0000ff">in</span><span style="color: #000000">&nbsp;the&nbsp;Application<br /><br />应用程序中，绝大多数地方都可以用资源路径代替原始文件系统路径。尤其是在&nbsp;QIcon,&nbsp;QImage,&nbsp;or&nbsp;QPixmap&nbsp;构造器中可以传递资源路径来代替文件名称：<br /><br />cutAct&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;QAction(QIcon(</span><span style="color: #000000">"</span><span style="color: #000000">:/images/cut.png</span><span style="color: #000000">"</span><span style="color: #000000">),&nbsp;tr(</span><span style="color: #000000">"</span><span style="color: #000000">Cu&amp;t</span><span style="color: #000000">"</span><span style="color: #000000">),&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">);<br /><br />在内存中，资源被用资源对象树来描述。该树在启动时自动构建并用QFile来解析资源路径。可以用</span><span style="color: #000000">"</span><span style="color: #000000">:/</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;初始化的&nbsp;QDir&nbsp;来从资源树的根部开始浏览。<br /><br />Qt资源支持搜索路径列表概念。若用&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">:</span><span style="color: #000000">"</span><span style="color: #000000">代替</span><span style="color: #000000">"</span><span style="color: #000000">:/</span><span style="color: #000000">"</span><span style="color: #000000">做前缀来引用一个资源，资源将被用搜索路径列表查询。启动时搜索路径列表是空的，调用&nbsp;QDir::addResourceSearchPath()&nbsp;可以添加路径。<br /><br />If&nbsp;you&nbsp;have&nbsp;resources&nbsp;</span><span style="color: #0000ff">in</span><span style="color: #000000">&nbsp;a&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;library，必须用.qrc&nbsp;文件的base&nbsp;name作参数调用&nbsp;Q_INIT_RESOURCE()&nbsp;来强制初始化资源。例如：<br /><br /></span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;main(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;argc,&nbsp;</span><span style="color: #0000ff">char</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">argv[])<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;QApplication&nbsp;app(argc,&nbsp;argv);<br />&nbsp;&nbsp;&nbsp;&nbsp;Q_INIT_RESOURCE(graphlib);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span style="color: #008000"><br /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;app.exec();<br />}<br />同样地，若你需要显式卸载一个资源集(因插件被卸载或资源失效)，需要用与前面相同的base&nbsp;name为参数调用Q_CLEANUP_RESOURCE()&nbsp;来强制移除资源</span></div><img src ="http://www.cppblog.com/aaxron/aggbug/193405.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/aaxron/" target="_blank">天下</a> 2012-10-17 11:03 <a href="http://www.cppblog.com/aaxron/archive/2012/10/17/193405.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>QT学习笔记（9）：堆栈窗口</title><link>http://www.cppblog.com/aaxron/archive/2012/10/17/193403.html</link><dc:creator>天下</dc:creator><author>天下</author><pubDate>Wed, 17 Oct 2012 02:21:00 GMT</pubDate><guid>http://www.cppblog.com/aaxron/archive/2012/10/17/193403.html</guid><wfw:comment>http://www.cppblog.com/aaxron/comments/193403.html</wfw:comment><comments>http://www.cppblog.com/aaxron/archive/2012/10/17/193403.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/aaxron/comments/commentRss/193403.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/aaxron/services/trackbacks/193403.html</trackback:ping><description><![CDATA[<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008000">//</span><span style="color: #008000">StackDlg.h</span><span style="color: #008000"><br /></span><span style="color: #000000">#pragma&nbsp;once<br />#include&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">QtGui</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /></span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;StackDlg&nbsp;:&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;QDialog<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;Q_OBJECT<br /></span><span style="color: #0000ff">public</span><span style="color: #000000">:<br />&nbsp;&nbsp;&nbsp;&nbsp;StackDlg(QWidget&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">parent&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">,&nbsp;Qt::WindowFlags&nbsp;f1&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;QLabel&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">label1;<br />&nbsp;&nbsp;&nbsp;&nbsp;QLabel&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">label2;<br />&nbsp;&nbsp;&nbsp;&nbsp;QLabel&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">label3;<br />&nbsp;&nbsp;&nbsp;&nbsp;QListWidget&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">listwidget;<br />&nbsp;&nbsp;&nbsp;&nbsp;QStackedWidget&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">stackwidget;<br />};<br /><br /><br /></span><span style="color: #008000">//</span><span style="color: #008000">StackDlg.cpp</span><span style="color: #008000"><br /></span><span style="color: #000000">#include&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">stack.h</span><span style="color: #000000">"</span><span style="color: #000000"><br /><br />StackDlg::StackDlg(QWidget&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">parent,&nbsp;Qt::WindowFlags&nbsp;f1)&nbsp;:&nbsp;QDialog(parent,f1)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;setWindowTitle(tr(</span><span style="color: #000000">"</span><span style="color: #000000">Stacked&nbsp;Widgets</span><span style="color: #000000">"</span><span style="color: #000000">));<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;listwidget&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;QListWidget(</span><span style="color: #0000ff">this</span><span style="color: #000000">);<br />&nbsp;&nbsp;&nbsp;&nbsp;listwidget</span><span style="color: #000000">-&gt;</span><span style="color: #000000">insertItem(</span><span style="color: #000000">0</span><span style="color: #000000">,tr(</span><span style="color: #000000">"</span><span style="color: #000000">Window&nbsp;1</span><span style="color: #000000">"</span><span style="color: #000000">));<br />&nbsp;&nbsp;&nbsp;&nbsp;listwidget</span><span style="color: #000000">-&gt;</span><span style="color: #000000">insertItem(</span><span style="color: #000000">1</span><span style="color: #000000">,tr(</span><span style="color: #000000">"</span><span style="color: #000000">Window&nbsp;2</span><span style="color: #000000">"</span><span style="color: #000000">));<br />&nbsp;&nbsp;&nbsp;&nbsp;listwidget</span><span style="color: #000000">-&gt;</span><span style="color: #000000">insertItem(</span><span style="color: #000000">2</span><span style="color: #000000">,tr(</span><span style="color: #000000">"</span><span style="color: #000000">Window&nbsp;3</span><span style="color: #000000">"</span><span style="color: #000000">));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;label1&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;QLabel(tr(</span><span style="color: #000000">"</span><span style="color: #000000">This&nbsp;is&nbsp;Window&nbsp;1&nbsp;!</span><span style="color: #000000">"</span><span style="color: #000000">));<br />&nbsp;&nbsp;&nbsp;&nbsp;label2&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;QLabel(tr(</span><span style="color: #000000">"</span><span style="color: #000000">This&nbsp;is&nbsp;Window&nbsp;2&nbsp;!</span><span style="color: #000000">"</span><span style="color: #000000">));<br />&nbsp;&nbsp;&nbsp;&nbsp;label3&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;QLabel(tr(</span><span style="color: #000000">"</span><span style="color: #000000">This&nbsp;is&nbsp;Window&nbsp;3&nbsp;!</span><span style="color: #000000">"</span><span style="color: #000000">));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;stackwidget&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;QStackedWidget(</span><span style="color: #0000ff">this</span><span style="color: #000000">);<br />&nbsp;&nbsp;&nbsp;&nbsp;stackwidget</span><span style="color: #000000">-&gt;</span><span style="color: #000000">addWidget(label1);<br />&nbsp;&nbsp;&nbsp;&nbsp;stackwidget</span><span style="color: #000000">-&gt;</span><span style="color: #000000">addWidget(label2);<br />&nbsp;&nbsp;&nbsp;&nbsp;stackwidget</span><span style="color: #000000">-&gt;</span><span style="color: #000000">addWidget(label3);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;QHBoxLayout&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">mainLayout&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;QHBoxLayout(</span><span style="color: #0000ff">this</span><span style="color: #000000">);<br />&nbsp;&nbsp;&nbsp;&nbsp;mainLayout</span><span style="color: #000000">-&gt;</span><span style="color: #000000">setMargin(</span><span style="color: #000000">0</span><span style="color: #000000">);<br />&nbsp;&nbsp;&nbsp;&nbsp;mainLayout</span><span style="color: #000000">-&gt;</span><span style="color: #000000">setSpacing(</span><span style="color: #000000">0</span><span style="color: #000000">);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;mainLayout</span><span style="color: #000000">-&gt;</span><span style="color: #000000">addWidget(listwidget,</span><span style="color: #000000">1</span><span style="color: #000000">);&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">延伸因子为1</span><span style="color: #008000"><br /></span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;mainLayout</span><span style="color: #000000">-&gt;</span><span style="color: #000000">addWidget(stackwidget,</span><span style="color: #000000">3</span><span style="color: #000000">,Qt::AlignLeft);&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">延伸因子为3<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">mainLayout-&gt;setStretchFactor(list,1);&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">设置延伸因子为1<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">mainLayout-&gt;setStretchFactor(stackwidget,4);&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">设置延伸因子为4</span><span style="color: #008000"><br /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;connect(listwidget,SIGNAL(currentRowChanged(</span><span style="color: #0000ff">int</span><span style="color: #000000">)),stackwidget,SLOT(setCurrentIndex(</span><span style="color: #0000ff">int</span><span style="color: #000000">)));<br />}<br /><br /><br /></span><span style="color: #008000">//</span><span style="color: #008000">main.cpp</span><span style="color: #008000"><br /></span><span style="color: #000000">#include&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">QApplication</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />#include&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">StackDlg.h</span><span style="color: #000000">"</span><span style="color: #000000"><br /><br /></span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;main(&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;argc,&nbsp;</span><span style="color: #0000ff">char</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;argv[]&nbsp;)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;QApplication&nbsp;a(&nbsp;argc,&nbsp;argv&nbsp;);<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;StackDlg&nbsp;stack;<br />&nbsp;&nbsp;&nbsp;&nbsp;stack.show();<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;a.exec();<br />}<br /></span></div><img src ="http://www.cppblog.com/aaxron/aggbug/193403.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/aaxron/" target="_blank">天下</a> 2012-10-17 10:21 <a href="http://www.cppblog.com/aaxron/archive/2012/10/17/193403.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>QT学习笔记（8）：可停靠的窗口 </title><link>http://www.cppblog.com/aaxron/archive/2012/10/17/193399.html</link><dc:creator>天下</dc:creator><author>天下</author><pubDate>Wed, 17 Oct 2012 01:36:00 GMT</pubDate><guid>http://www.cppblog.com/aaxron/archive/2012/10/17/193399.html</guid><wfw:comment>http://www.cppblog.com/aaxron/comments/193399.html</wfw:comment><comments>http://www.cppblog.com/aaxron/archive/2012/10/17/193399.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/aaxron/comments/commentRss/193399.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/aaxron/services/trackbacks/193399.html</trackback:ping><description><![CDATA[<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008000">//</span><span style="color: #008000">dockwindows.h</span><span style="color: #008000"><br /></span><span style="color: #000000">#pragma&nbsp;once<br />#include&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">QtGui</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /><br /></span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;DockWindows&nbsp;:&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;QMainWindow<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;Q_OBJECT<br /></span><span style="color: #0000ff">public</span><span style="color: #000000">:<br />&nbsp;&nbsp;&nbsp;&nbsp;DockWindows();<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">~</span><span style="color: #000000">DockWindows();<br />};<br /><br /></span><span style="color: #008000">//</span><span style="color: #008000">dockwindows.cpp</span><span style="color: #008000"><br /></span><span style="color: #000000">#include&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">dockwindows.h</span><span style="color: #000000">"</span><span style="color: #000000"><br /><br />DockWindows::DockWindows():&nbsp;QMainWindow()<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;setWindowTitle(&nbsp;tr(&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">DockWindows</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;)&nbsp;);<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;QTextEdit&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">te&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;QTextEdit(&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">&nbsp;);<br />&nbsp;&nbsp;&nbsp;&nbsp;te</span><span style="color: #000000">-&gt;</span><span style="color: #000000">setText(tr(</span><span style="color: #000000">"</span><span style="color: #000000">Main&nbsp;Window</span><span style="color: #000000">"</span><span style="color: #000000">));&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;te</span><span style="color: #000000">-&gt;</span><span style="color: #000000">setAlignment(Qt::AlignCenter);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">te-&gt;setMinimumWidth(640);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">this-&gt;resize(800,600);</span><span style="color: #008000"><br /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;setCentralWidget(&nbsp;te&nbsp;);&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;&nbsp;停靠窗口&nbsp;1</span><span style="color: #008000"><br /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;QDockWidget&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">dock&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;QDockWidget(tr(</span><span style="color: #000000">"</span><span style="color: #000000">DockWindow&nbsp;1</span><span style="color: #000000">"</span><span style="color: #000000">),&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">&nbsp;);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;dock</span><span style="color: #000000">-&gt;</span><span style="color: #000000">setFeatures(QDockWidget::DockWidgetFeature::AllDockWidgetFeatures);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">same&nbsp;as&nbsp;dock-&gt;setFeatures(QDockWidget::AllDockWidgetFeatures);</span><span style="color: #008000"><br /></span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;dock</span><span style="color: #000000">-&gt;</span><span style="color: #000000">setAllowedAreas(Qt::DockWidgetArea::AllDockWidgetAreas);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">same&nbsp;as&nbsp;dock-&gt;setAllowedAreas(Qt::AllDockWidgetAreas);</span><span style="color: #008000"><br /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;QTextEdit&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">te1&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;QTextEdit();<br />&nbsp;&nbsp;&nbsp;&nbsp;te1</span><span style="color: #000000">-&gt;</span><span style="color: #000000">setText(tr(</span><span style="color: #000000">"</span><span style="color: #000000">Window&nbsp;1</span><span style="color: #000000">"</span><span style="color: #000000">));&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;dock</span><span style="color: #000000">-&gt;</span><span style="color: #000000">setWidget(&nbsp;te1&nbsp;);<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;addDockWidget(&nbsp;Qt::RightDockWidgetArea,&nbsp;dock&nbsp;);<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;&nbsp;停靠窗口&nbsp;2</span><span style="color: #008000"><br /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;dock&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;QDockWidget(&nbsp;tr(</span><span style="color: #000000">"</span><span style="color: #000000">DockWindow&nbsp;2</span><span style="color: #000000">"</span><span style="color: #000000">),&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">&nbsp;);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">dock-&gt;setFeatures(&nbsp;QDockWidget::DockWidgetFloatable|QDockWidget::DockWidgetClosable);</span><span style="color: #008000"><br /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;QTextEdit&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">te2&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;QTextEdit();<br />&nbsp;&nbsp;&nbsp;&nbsp;te2</span><span style="color: #000000">-&gt;</span><span style="color: #000000">setText(tr(</span><span style="color: #000000">"</span><span style="color: #000000">Window&nbsp;2</span><span style="color: #000000">"</span><span style="color: #000000">));&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;dock</span><span style="color: #000000">-&gt;</span><span style="color: #000000">setWidget(&nbsp;te2&nbsp;);&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;addDockWidget(&nbsp;Qt::RightDockWidgetArea,&nbsp;dock);&nbsp;&nbsp;&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;&nbsp;停靠窗口&nbsp;3</span><span style="color: #008000"><br /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;dock&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;QDockWidget(&nbsp;tr(</span><span style="color: #000000">"</span><span style="color: #000000">DockWindow&nbsp;3</span><span style="color: #000000">"</span><span style="color: #000000">),</span><span style="color: #0000ff">this</span><span style="color: #000000">&nbsp;);<br />&nbsp;&nbsp;&nbsp;&nbsp;dock</span><span style="color: #000000">-&gt;</span><span style="color: #000000">setFeatures(&nbsp;QDockWidget::AllDockWidgetFeatures&nbsp;);<br />&nbsp;&nbsp;&nbsp;&nbsp;QTextEdit&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">te3&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;QTextEdit();<br />&nbsp;&nbsp;&nbsp;&nbsp;te3</span><span style="color: #000000">-&gt;</span><span style="color: #000000">setText(tr(</span><span style="color: #000000">"</span><span style="color: #000000">Window&nbsp;3</span><span style="color: #000000">"</span><span style="color: #000000">));&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;dock</span><span style="color: #000000">-&gt;</span><span style="color: #000000">setWidget(&nbsp;te3&nbsp;);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;addDockWidget(&nbsp;Qt::BottomDockWidgetArea,&nbsp;dock);&nbsp;<br />}<br /><br />DockWindows::</span><span style="color: #000000">~</span><span style="color: #000000">DockWindows()<br />{<br />}<br /><br /></span><span style="color: #008000">//</span><span style="color: #008000">main.cpp</span><span style="color: #008000"><br /></span><span style="color: #000000">#include&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">dockwindows.h</span><span style="color: #000000">"</span><span style="color: #000000"><br />#include&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">QApplication</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /><br /><br /></span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;main(&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;argc,&nbsp;</span><span style="color: #0000ff">char</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">**</span><span style="color: #000000">argv&nbsp;)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;QApplication&nbsp;a(&nbsp;argc,&nbsp;argv&nbsp;);<br />&nbsp;&nbsp;&nbsp;&nbsp;QTranslator&nbsp;translator(</span><span style="color: #000000">0</span><span style="color: #000000">);<br />&nbsp;&nbsp;&nbsp;&nbsp;translator.load(</span><span style="color: #000000">"</span><span style="color: #000000">dockwindows_zh</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">"</span><span style="color: #000000">.</span><span style="color: #000000">"</span><span style="color: #000000">);<br />&nbsp;&nbsp;&nbsp;&nbsp;a.installTranslator(</span><span style="color: #000000">&amp;</span><span style="color: #000000">translator);&nbsp;&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;DockWindows&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">dockwindows&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;DockWindows();<br />&nbsp;&nbsp;&nbsp;&nbsp;dockwindows</span><span style="color: #000000">-&gt;</span><span style="color: #000000">show();<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;a.exec();<br />}<br /></span></div><img src ="http://www.cppblog.com/aaxron/aggbug/193399.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/aaxron/" target="_blank">天下</a> 2012-10-17 09:36 <a href="http://www.cppblog.com/aaxron/archive/2012/10/17/193399.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>QCheckBoxEx</title><link>http://www.cppblog.com/aaxron/archive/2012/10/09/193058.html</link><dc:creator>天下</dc:creator><author>天下</author><pubDate>Tue, 09 Oct 2012 05:56:00 GMT</pubDate><guid>http://www.cppblog.com/aaxron/archive/2012/10/09/193058.html</guid><wfw:comment>http://www.cppblog.com/aaxron/comments/193058.html</wfw:comment><comments>http://www.cppblog.com/aaxron/archive/2012/10/09/193058.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/aaxron/comments/commentRss/193058.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/aaxron/services/trackbacks/193058.html</trackback:ping><description><![CDATA[<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008000">//</span><span style="color: #008000">QCheckBoxEx.h</span><span style="color: #008000"><br /></span><span style="color: #000000">#include&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">QtGui</span><span style="color: #000000">/</span><span style="color: #000000">QtGui</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /></span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;QCheckBoxEx&nbsp;:&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;QAbstractButton&nbsp;<br />{&nbsp;<br /></span><span style="color: #0000ff">public</span><span style="color: #000000">:&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;QCheckBoxEx(QWidget</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;parent);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">bool</span><span style="color: #000000">&nbsp;init(QString&nbsp;yes,QString&nbsp;no);<br /></span><span style="color: #0000ff">private</span><span style="color: #000000">:<br />&nbsp;&nbsp;&nbsp;&nbsp;QPixmap&nbsp;m_pixmap[</span><span style="color: #000000">2</span><span style="color: #000000">];<br /></span><span style="color: #0000ff">protected</span><span style="color: #000000">:&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;paintEvent(QPaintEvent&nbsp;</span><span style="color: #000000">*</span><span style="color: #0000ff">event</span><span style="color: #000000">);&nbsp;<br />};<br /><br /><br /></span><span style="color: #008000">//</span><span style="color: #008000">QCheckBoxEx.cpp</span><span style="color: #008000"><br /></span><span style="color: #000000">#include&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">QCheckBoxEx.h</span><span style="color: #000000">"</span><span style="color: #000000"><br />QCheckBoxEx::QCheckBoxEx(QWidget</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;parent)&nbsp;<br />{&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;setParent(parent);<br />&nbsp;&nbsp;&nbsp;&nbsp;setCheckable(</span><span style="color: #0000ff">true</span><span style="color: #000000">);<br />}<br /><br /></span><span style="color: #0000ff">bool</span><span style="color: #000000">&nbsp;QCheckBoxEx::init(QString&nbsp;yes,QString&nbsp;no)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;m_pixmap[</span><span style="color: #000000">0</span><span style="color: #000000">].load(no);<br />&nbsp;&nbsp;&nbsp;&nbsp;m_pixmap[</span><span style="color: #000000">1</span><span style="color: #000000">].load(yes);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;w&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;m_pixmap[</span><span style="color: #000000">0</span><span style="color: #000000">].width();<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;h&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;m_pixmap[</span><span style="color: #000000">0</span><span style="color: #000000">].height();<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(w&nbsp;</span><span style="color: #000000">&amp;&amp;</span><span style="color: #000000">&nbsp;h&nbsp;</span><span style="color: #000000">&amp;&amp;</span><span style="color: #000000">&nbsp;w</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;m_pixmap[</span><span style="color: #000000">1</span><span style="color: #000000">].width()&nbsp;</span><span style="color: #000000">&amp;&amp;</span><span style="color: #000000">&nbsp;h</span><span style="color: #000000">==</span><span style="color: #000000">m_pixmap[</span><span style="color: #000000">1</span><span style="color: #000000">].height())<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;resize(w,h);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">true</span><span style="color: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">false</span><span style="color: #000000">;<br />}<br /></span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;QCheckBoxEx::paintEvent(QPaintEvent&nbsp;</span><span style="color: #000000">*</span><span style="color: #0000ff">event</span><span style="color: #000000">)&nbsp;<br />{&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;QPainter&nbsp;p(</span><span style="color: #0000ff">this</span><span style="color: #000000">);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(isChecked())<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p.drawPixmap(</span><span style="color: #000000">0</span><span style="color: #000000">,</span><span style="color: #000000">0</span><span style="color: #000000">,m_pixmap[</span><span style="color: #000000">1</span><span style="color: #000000">]);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p.drawPixmap(</span><span style="color: #000000">0</span><span style="color: #000000">,</span><span style="color: #000000">0</span><span style="color: #000000">,m_pixmap[</span><span style="color: #000000">0</span><span style="color: #000000">]);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /><br /></span><span style="color: #008000">//</span><span style="color: #008000">使用</span><span style="color: #008000"><br /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;m_check&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;QCheckBoxEx(</span><span style="color: #0000ff">this</span><span style="color: #000000">);<br />&nbsp;&nbsp;&nbsp;&nbsp;m_check</span><span style="color: #000000">-&gt;</span><span style="color: #000000">init(</span><span style="color: #000000">"</span><span style="color: #000000">d:\\1.jpg</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">"</span><span style="color: #000000">d:\\0.jpg</span><span style="color: #000000">"</span><span style="color: #000000">);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">m_check-&gt;setChecked(true);</span></div><img src ="http://www.cppblog.com/aaxron/aggbug/193058.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/aaxron/" target="_blank">天下</a> 2012-10-09 13:56 <a href="http://www.cppblog.com/aaxron/archive/2012/10/09/193058.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>QT学习笔记（7）：线程</title><link>http://www.cppblog.com/aaxron/archive/2012/08/31/188903.html</link><dc:creator>天下</dc:creator><author>天下</author><pubDate>Fri, 31 Aug 2012 07:29:00 GMT</pubDate><guid>http://www.cppblog.com/aaxron/archive/2012/08/31/188903.html</guid><wfw:comment>http://www.cppblog.com/aaxron/comments/188903.html</wfw:comment><comments>http://www.cppblog.com/aaxron/archive/2012/08/31/188903.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/aaxron/comments/commentRss/188903.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/aaxron/services/trackbacks/188903.html</trackback:ping><description><![CDATA[<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008000">//</span><span style="color: #008000">QT线程</span><span style="color: #008000"><br /></span><span style="color: #000000">#include&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">QtGui</span><span style="color: #000000">/</span><span style="color: #000000">QtGui</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /><br />QMutex&nbsp;mutex;<br /></span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;count&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;<br /></span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;MyThread&nbsp;:&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;QThread&nbsp;<br />{&nbsp;&nbsp;<br /></span><span style="color: #0000ff">public</span><span style="color: #000000">:&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">virtual</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;run();&nbsp;&nbsp;<br />};&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;MyThread::run()<br />{&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;i</span><span style="color: #000000">=</span><span style="color: #000000">10000</span><span style="color: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">while</span><span style="color: #000000">(i</span><span style="color: #000000">--</span><span style="color: #000000">)&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mutex.</span><span style="color: #0000ff">lock</span><span style="color: #000000">();&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;count</span><span style="color: #000000">++</span><span style="color: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;qDebug(&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">at&nbsp;%p&nbsp;count:%d</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #0000ff">this</span><span style="color: #000000">,count&nbsp;);&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">msleep(100);</span><span style="color: #008000"><br /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mutex.unlock();<br />&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;<br />}&nbsp;&nbsp;&nbsp;<br /><br /></span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;main()<br />{&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;MyThread&nbsp;a;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;MyThread&nbsp;b;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;a.start();<br />&nbsp;&nbsp;&nbsp;&nbsp;b.start();&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;a.wait();&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;b.wait();&nbsp;&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">如果不加锁,得到的count可能不正确.</span><span style="color: #008000"><br /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;qDebug(&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">count:%d</span><span style="color: #000000">"</span><span style="color: #000000">,count&nbsp;);&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;<br />}&nbsp;</span></div><img src ="http://www.cppblog.com/aaxron/aggbug/188903.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/aaxron/" target="_blank">天下</a> 2012-08-31 15:29 <a href="http://www.cppblog.com/aaxron/archive/2012/08/31/188903.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Qt的内存管理 </title><link>http://www.cppblog.com/aaxron/archive/2012/08/31/188902.html</link><dc:creator>天下</dc:creator><author>天下</author><pubDate>Fri, 31 Aug 2012 07:28:00 GMT</pubDate><guid>http://www.cppblog.com/aaxron/archive/2012/08/31/188902.html</guid><wfw:comment>http://www.cppblog.com/aaxron/comments/188902.html</wfw:comment><comments>http://www.cppblog.com/aaxron/archive/2012/08/31/188902.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/aaxron/comments/commentRss/188902.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/aaxron/services/trackbacks/188902.html</trackback:ping><description><![CDATA[<p>Qt的内存管理 </p>
<p>刚学Qt时，发现代码里到处都是new，而基本上见不到delete，百度得知，Qt中内存管理机制：当new一个对象指定父亲时，父亲被销毁时，会一并把自对象销毁。</p>
<p>在QT的程序中经常会看到只有new而不delete的情况，其实是因为QT有一套回收内存的机制，主要的规则如下：</p>
<p>1.所有继承自QOBJECT类的类，如果在new的时候指定了父亲，那么它的清理时在父亲被delete的时候delete的，所以如果一个程序中，所有的QOBJECT类都指定了父亲，那么他们是会一级级的在最上面的父亲清理时被清理，而不用自己清理；</p>
<p>2.程序通常最上层会有一个根的QOBJECT，就是放在setCentralWidget（）中的那个QOBJECT，这个QOBJECT在new的时候不必指定它的父亲，因为这个语句将设定它的父亲为总的QAPPLICATION，当整个QAPPLICATION没有时它就自动清理，所以也无需清理。9这里QT4和QT3有不同，QT3中用的是setmainwidget函数，但是这个函数不作为里面QOBJECT的父亲，所以QT3中这个顶层的QOBJECT要自行销毁）。</p>
<p>3.这是有人可能会问那如果我自行delete掉这些QT接管负责销毁的指针了会出现什么情况呢，如果时这样的话，正常情况下QT的拥有这个对象的那个父亲会知道这件事情，它会直到它的儿子被你直接DELETE了，这样它会将这个儿子移出它的列表，并且重新构建显示内容，但是直接这样做时有风险的！也就是要说的下一条</p>
<p>4.当一个QOBJECT正在接受事件队列时如果中途被你DELETE掉了，就是出现问题了，所以QT中建议大家不要直接DELETE掉一个QOBJECT，如果一定要这样做，要使用QOBJECT的deleteLater()函数，它会让所有事件都发送完一切处理好后马上清除这片内存，而且就算调用多次的deletelater也不会有问题。</p>
<p>5.QT不建议在一个QOBJECT 的父亲的范围之外持有对这个QOBJECT的指针，因为如果这样外面的指针很可能不会察觉这个QOBJECT被释放，会出现错误，如果一定要这样，就要记住你在哪这样做了，然后抓住那个被你违规使用的QOBJECT的destroyed（）信号，当它没有时赶快置零你的外部指针。当然我认为这样做是及其麻烦也不符合高效率编程规范的，所以如果要这样在外部持有QOBJECT的指针，建议使用引用或者用智能指针，如QT就提供了智能指针针对这些情况，见最后一条。</p>
<p>6.QT中的智能指针封装为QPointer类，所有QOBJECT的子类都可以用这个智能指针来包装，很多用法与普通指针一样，可以详见QT assistant</p>
<p>转自:http://blog.csdn.net/leonwei/article/details/3703598</p>
<p>&nbsp;</p><img src ="http://www.cppblog.com/aaxron/aggbug/188902.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/aaxron/" target="_blank">天下</a> 2012-08-31 15:28 <a href="http://www.cppblog.com/aaxron/archive/2012/08/31/188902.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>QFileSystemModel+QTableView</title><link>http://www.cppblog.com/aaxron/archive/2012/08/30/188719.html</link><dc:creator>天下</dc:creator><author>天下</author><pubDate>Thu, 30 Aug 2012 03:13:00 GMT</pubDate><guid>http://www.cppblog.com/aaxron/archive/2012/08/30/188719.html</guid><wfw:comment>http://www.cppblog.com/aaxron/comments/188719.html</wfw:comment><comments>http://www.cppblog.com/aaxron/archive/2012/08/30/188719.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/aaxron/comments/commentRss/188719.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/aaxron/services/trackbacks/188719.html</trackback:ping><description><![CDATA[<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008000">//</span><span style="color: #008000">main.cpp</span><span style="color: #008000"><br /></span><span style="color: #000000">#include&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">QtGui</span><span style="color: #000000">/</span><span style="color: #000000">QtGui</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />#include&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">QtGui</span><span style="color: #000000">/</span><span style="color: #000000">QDirModel</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />#include&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">QtGui</span><span style="color: #000000">/</span><span style="color: #000000">QListView</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />#include&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">QtGui</span><span style="color: #000000">/</span><span style="color: #000000">QTableView</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />#include&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">QtGui</span><span style="color: #000000">/</span><span style="color: #000000">QTreeView</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /><br /><br /></span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;main(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;argc,&nbsp;</span><span style="color: #0000ff">char</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">argv[])<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;QApplication&nbsp;app(argc,argv);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;QFileSystemModel&nbsp;model;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">如果用QDirModel&nbsp;model;&nbsp;展开树时,太慢<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">QListView&nbsp;list;</span><span style="color: #008000"><br /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;QTreeView&nbsp;tree;<br />&nbsp;&nbsp;&nbsp;&nbsp;QTableView&nbsp;table;<br />&nbsp;&nbsp;&nbsp;&nbsp;QSplitter</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;spliter&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;QSplitter;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">model.setRootPath("");</span><span style="color: #008000"><br /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;model.setRootPath(</span><span style="color: #000000">""</span><span style="color: #000000">);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">model.setRootIndex();</span><span style="color: #008000"><br /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;tree.setModel(</span><span style="color: #000000">&amp;</span><span style="color: #000000">model);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">list.setModel(&amp;model);</span><span style="color: #008000"><br /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;table.setModel(</span><span style="color: #000000">&amp;</span><span style="color: #000000">model);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">tree.setSelectionMode(QAbstractItemView::MultiSelection);</span><span style="color: #008000"><br /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;tree.setSelectionMode(QAbstractItemView::SingleSelection);&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">list.setSelectionMode(tree.selectionMode());&nbsp;&nbsp;</span><span style="color: #008000"><br /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;table.setSelectionMode(tree.selectionMode());&nbsp;&nbsp;<br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">QObject::connect(&amp;tree,SIGNAL(doubleClicked(QModelIndex)),&amp;list,&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;SLOT(setRootIndex(QModelIndex)));&nbsp;&nbsp;</span><span style="color: #008000"><br /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;QObject::connect(</span><span style="color: #000000">&amp;</span><span style="color: #000000">tree,SIGNAL(clicked(QModelIndex)),</span><span style="color: #000000">&amp;</span><span style="color: #000000">table,&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SLOT(setRootIndex(QModelIndex)));&nbsp;&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;spliter</span><span style="color: #000000">-&gt;</span><span style="color: #000000">addWidget(</span><span style="color: #000000">&amp;</span><span style="color: #000000">tree);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">spliter-&gt;addWidget(&amp;list);</span><span style="color: #008000"><br /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;spliter</span><span style="color: #000000">-&gt;</span><span style="color: #000000">addWidget(</span><span style="color: #000000">&amp;</span><span style="color: #000000">table);<br />&nbsp;&nbsp;&nbsp;&nbsp;spliter</span><span style="color: #000000">-&gt;</span><span style="color: #000000">show();<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;app.exec();<br />}</span></div><img src ="http://www.cppblog.com/aaxron/aggbug/188719.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/aaxron/" target="_blank">天下</a> 2012-08-30 11:13 <a href="http://www.cppblog.com/aaxron/archive/2012/08/30/188719.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>QT学习笔记（6）：QUiLoader使用</title><link>http://www.cppblog.com/aaxron/archive/2012/08/28/188491.html</link><dc:creator>天下</dc:creator><author>天下</author><pubDate>Tue, 28 Aug 2012 01:46:00 GMT</pubDate><guid>http://www.cppblog.com/aaxron/archive/2012/08/28/188491.html</guid><wfw:comment>http://www.cppblog.com/aaxron/comments/188491.html</wfw:comment><comments>http://www.cppblog.com/aaxron/archive/2012/08/28/188491.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/aaxron/comments/commentRss/188491.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/aaxron/services/trackbacks/188491.html</trackback:ping><description><![CDATA[<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008000">//</span><span style="color: #008000">QUiLoader使用<br /></span><span style="color: #008000">//</span><span style="color: #008000">main.cpp</span><span style="color: #008000"><br /></span><span style="color: #000000">#include&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">QtGui</span><span style="color: #000000">/</span><span style="color: #000000">Qtgui</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />#include&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">QtGui</span><span style="color: #000000">/</span><span style="color: #000000">QLabel</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />#include&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">QtUiTools</span><span style="color: #000000">/</span><span style="color: #000000">QUiLoader</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /><br /></span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;main(&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;argc,&nbsp;</span><span style="color: #0000ff">char</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">**</span><span style="color: #000000">argv&nbsp;)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;QApplication&nbsp;a(&nbsp;argc,&nbsp;argv&nbsp;);<br />&nbsp;&nbsp;&nbsp;&nbsp;QUiLoader&nbsp;uiLoader;<br />&nbsp;&nbsp;&nbsp;&nbsp;QFile&nbsp;file(</span><span style="color: #000000">"</span><span style="color: #000000">MyDialog.ui</span><span style="color: #000000">"</span><span style="color: #000000">);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;QWidget</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;pWidget&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;uiLoader.load(</span><span style="color: #000000">&amp;</span><span style="color: #000000">file);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(pWidget</span><span style="color: #000000">==</span><span style="color: #000000">NULL)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;QMessageBox::warning(NULL,</span><span style="color: #000000">"</span><span style="color: #000000">error</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">"</span><span style="color: #000000">load&nbsp;MyDialog.ui&nbsp;error</span><span style="color: #000000">"</span><span style="color: #000000">,QMessageBox::Ok);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">void&nbsp;QWidget::showNormal&nbsp;()&nbsp;[slot]</span><span style="color: #008000"><br /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;QPushButton</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;pBtnOk&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;pWidget</span><span style="color: #000000">-&gt;</span><span style="color: #000000">findChild</span><span style="color: #000000">&lt;</span><span style="color: #000000">QPushButton</span><span style="color: #000000">*&gt;</span><span style="color: #000000">(</span><span style="color: #000000">"</span><span style="color: #000000">okButton</span><span style="color: #000000">"</span><span style="color: #000000">);&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(pBtnOk</span><span style="color: #000000">!=</span><span style="color: #000000">NULL)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;QMessageBox::information(NULL,</span><span style="color: #000000">"</span><span style="color: #000000">Hint</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">"</span><span style="color: #000000">Find&nbsp;okButton&nbsp;Success</span><span style="color: #000000">"</span><span style="color: #000000">,QMessageBox::Ok);<br />&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;pWidget</span><span style="color: #000000">-&gt;</span><span style="color: #000000">showNormal();<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">pWidget-&gt;show();</span><span style="color: #008000"><br /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;a.exec();<br />}<br /><br /></span></div><img src ="http://www.cppblog.com/aaxron/aggbug/188491.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/aaxron/" target="_blank">天下</a> 2012-08-28 09:46 <a href="http://www.cppblog.com/aaxron/archive/2012/08/28/188491.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>QT学习笔记（4）：QTableview使用</title><link>http://www.cppblog.com/aaxron/archive/2012/08/27/188393.html</link><dc:creator>天下</dc:creator><author>天下</author><pubDate>Mon, 27 Aug 2012 02:57:00 GMT</pubDate><guid>http://www.cppblog.com/aaxron/archive/2012/08/27/188393.html</guid><wfw:comment>http://www.cppblog.com/aaxron/comments/188393.html</wfw:comment><comments>http://www.cppblog.com/aaxron/archive/2012/08/27/188393.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/aaxron/comments/commentRss/188393.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/aaxron/services/trackbacks/188393.html</trackback:ping><description><![CDATA[<div>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008000">//</span><span style="color: #008000">QTableview使用笔记<br /></span><span style="color: #008000">//</span><span style="color: #008000">main.cpp</span><span style="color: #008000"><br /></span><span style="color: #000000">#include&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">QtGui</span><span style="color: #000000">/</span><span style="color: #000000">QApplication</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />#include&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">QtGui</span><span style="color: #000000">/</span><span style="color: #000000">QLabel</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />#include&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">QtGui</span><span style="color: #000000">/</span><span style="color: #000000">QMainWindow</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />#include&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">QtGui</span><span style="color: #000000">/</span><span style="color: #000000">QVBoxLayout</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />#include&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">QtGui</span><span style="color: #000000">/</span><span style="color: #000000">QPushButton</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />#include&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">QProgressDialog</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />#include&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">QDebug</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />#include&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">QStringListModel</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />#include&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">QtGui</span><span style="color: #000000">/</span><span style="color: #000000">QListView</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />#include&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">QtGui</span><span style="color: #000000">/</span><span style="color: #000000">QListWidget</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />#include&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">QtGui</span><span style="color: #000000">/</span><span style="color: #000000">QLabel</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />#include&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">QStandardItem</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />#include&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">QTableView</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />#include&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">QStandardItemModel</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />#include&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">QHeaderView</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /><br /></span><span style="color: #008000">//</span><span style="color: #008000">#include&nbsp;"MyDialog.h"</span><span style="color: #008000"><br /></span><span style="color: #000000"><br /></span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;main(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;argc,&nbsp;</span><span style="color: #0000ff">char</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">argv[])<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;QApplication&nbsp;app(argc,&nbsp;argv);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;QStandardItemModel&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">model&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;QStandardItemModel;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;QTableView</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;pTableView&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;QTableView;<br />&nbsp;&nbsp;&nbsp;&nbsp;model</span><span style="color: #000000">-&gt;</span><span style="color: #000000">setColumnCount(</span><span style="color: #000000">2</span><span style="color: #000000">);&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;设置列数<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">设置列标题</span><span style="color: #008000"><br /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;model</span><span style="color: #000000">-&gt;</span><span style="color: #000000">setHeaderData(</span><span style="color: #000000">0</span><span style="color: #000000">,Qt::Horizontal,</span><span style="color: #000000">"</span><span style="color: #000000">ID</span><span style="color: #000000">"</span><span style="color: #000000">);<br />&nbsp;&nbsp;&nbsp;&nbsp;model</span><span style="color: #000000">-&gt;</span><span style="color: #000000">setHeaderData(</span><span style="color: #000000">1</span><span style="color: #000000">,Qt::Horizontal,</span><span style="color: #000000">"</span><span style="color: #000000">NAME</span><span style="color: #000000">"</span><span style="color: #000000">);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">for&nbsp;(int&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt;&nbsp;2;&nbsp;i++)<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;model-&gt;setItem(i,0,new&nbsp;QStandardItem(QString("%1").arg(i+1))&nbsp;);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;model-&gt;setItem(i,1,new&nbsp;QStandardItem(QString("Aaron%1").arg(i)));<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">}</span><span style="color: #008000"><br /></span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">/*</span><span style="color: #008000"><br />&nbsp;&nbsp;&nbsp;&nbsp;//相同效果<br />&nbsp;&nbsp;&nbsp;&nbsp;QStandardItem&nbsp;*item;<br />&nbsp;&nbsp;&nbsp;&nbsp;QList&lt;QStandardItem&nbsp;*&gt;&nbsp;items;<br />&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(int&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt;&nbsp;2;&nbsp;i++)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;items.clear();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;item&nbsp;=&nbsp;new&nbsp;QStandardItem("Aaron");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//item-&gt;setCheckable(true);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;items.push_back(item);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;item&nbsp;=&nbsp;new&nbsp;QStandardItem("12.21");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;items.push_back(item);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;model-&gt;appendRow(items);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">*/</span><span style="color: #000000"><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;pTableView</span><span style="color: #000000">-&gt;</span><span style="color: #000000">setModel(model);&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">隐藏左边那列</span><span style="color: #008000"><br /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;pTableView</span><span style="color: #000000">-&gt;</span><span style="color: #000000">verticalHeader()</span><span style="color: #000000">-&gt;</span><span style="color: #000000">hide();<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">设置某列隐藏<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">pTableView-&gt;setColumnHidden(0,true);<br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">列宽</span><span style="color: #008000"><br /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;pTableView</span><span style="color: #000000">-&gt;</span><span style="color: #000000">setColumnWidth(</span><span style="color: #000000">0</span><span style="color: #000000">,</span><span style="color: #000000">60</span><span style="color: #000000">);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">整行选择</span><span style="color: #008000"><br /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;pTableView</span><span style="color: #000000">-&gt;</span><span style="color: #000000">setSelectionBehavior(QAbstractItemView::SelectRows);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;pTableView</span><span style="color: #000000">-&gt;</span><span style="color: #000000">show();<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;app.exec();<br /><br />}<br /></span></div></div><img src ="http://www.cppblog.com/aaxron/aggbug/188393.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/aaxron/" target="_blank">天下</a> 2012-08-27 10:57 <a href="http://www.cppblog.com/aaxron/archive/2012/08/27/188393.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>QT学习笔记（3）：Qt Designer设计ui及对话框使用</title><link>http://www.cppblog.com/aaxron/archive/2012/08/26/188308.html</link><dc:creator>天下</dc:creator><author>天下</author><pubDate>Sun, 26 Aug 2012 02:11:00 GMT</pubDate><guid>http://www.cppblog.com/aaxron/archive/2012/08/26/188308.html</guid><wfw:comment>http://www.cppblog.com/aaxron/comments/188308.html</wfw:comment><comments>http://www.cppblog.com/aaxron/archive/2012/08/26/188308.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/aaxron/comments/commentRss/188308.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/aaxron/services/trackbacks/188308.html</trackback:ping><description><![CDATA[<div><span style="color: red">1） 在qt工程中的Form Files，添加MyDialog.ui，对话框的对象名为MyDialog。</span><br /><span style="color: red">2）添加1个pushButton，在Qt Designer添加信号clicked()及槽slot1()</span><br /><span style="color: red">这时，我们可以看到Qt Designer会帮我们生成 ui_MyDialog.h&nbsp;</span><br /><span style="color: red">&nbsp;&nbsp;//在ui_MyDialog.h文件中，注意这里，这是Qt Designer生成的代码</span><br /><span style="color: red">&nbsp;&nbsp;&nbsp;QObject::connect(pushButton, SIGNAL(clicked()), MyDialog, SLOT(slot1()));</span><br /><br /><span style="color: red">3.添加对应的类，并实现槽slot1()</span><br /><span style="color: red">详见附件：</span><br /><a href="/Files/aaxron/qt_deom05.rar">/Files/aaxron/qt_deom05.rar<br /><br /><br /><br /></a>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000">也可以这样:<br />使用Qt设计师利用布局来设置好界面，生成.ui文件，然后使用uic&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">o&nbsp;XXX.h&nbsp;XXX.ui&nbsp;&nbsp;来生成.h&nbsp;文件，然后包含这个.h&nbsp;文件，自定义一个类，继承这个.h中的类，并且继承QObject&nbsp;的子类，公共继承可以使用ui中的所有的界面元素<br /><br /></span><span style="color: #008000">//</span><span style="color: #008000">自定义类文件</span><span style="color: #008000"><br /></span><span style="color: #000000">#ifndef&nbsp;CellDialog_H_<br /></span><span style="color: #0000ff">#define</span><span style="color: #000000">&nbsp;CellDialog_H_</span><span style="color: #000000"><br /><br />#include&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">ui_CellDialog.h</span><span style="color: #000000">"</span><span style="color: #000000"><br />#include&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">QtGui</span><span style="color: #000000">/</span><span style="color: #000000">QtGui</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /><br /></span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;GoToCellDialog&nbsp;:</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;QDialog&nbsp;,&nbsp;Ui::GoToCellDialog<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;Q_OBJECT<br /></span><span style="color: #0000ff">public</span><span style="color: #000000">:<br />&nbsp;&nbsp;&nbsp;&nbsp;GoToCellDialog(QWidget&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">parent&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">);<br /></span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;slots:<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;on_lineEdit_textChanged();<br />};<br /><br /></span><span style="color: #0000ff">#endif</span><span style="color: #000000"><br /></span></div><br /><br /></div><img src ="http://www.cppblog.com/aaxron/aggbug/188308.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/aaxron/" target="_blank">天下</a> 2012-08-26 10:11 <a href="http://www.cppblog.com/aaxron/archive/2012/08/26/188308.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>QT学习笔记（2）:标准对话框的使用</title><link>http://www.cppblog.com/aaxron/archive/2012/08/26/188307.html</link><dc:creator>天下</dc:creator><author>天下</author><pubDate>Sun, 26 Aug 2012 02:10:00 GMT</pubDate><guid>http://www.cppblog.com/aaxron/archive/2012/08/26/188307.html</guid><wfw:comment>http://www.cppblog.com/aaxron/comments/188307.html</wfw:comment><comments>http://www.cppblog.com/aaxron/archive/2012/08/26/188307.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/aaxron/comments/commentRss/188307.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/aaxron/services/trackbacks/188307.html</trackback:ping><description><![CDATA[QT学习笔记（2）:标准对话框的使用 详见附件:<br /><a href="/Files/aaxron/qtdemo02.zip">/Files/aaxron/qtdemo02.zip</a><img src ="http://www.cppblog.com/aaxron/aggbug/188307.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/aaxron/" target="_blank">天下</a> 2012-08-26 10:10 <a href="http://www.cppblog.com/aaxron/archive/2012/08/26/188307.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>QT 的信号与槽机制(3) </title><link>http://www.cppblog.com/aaxron/archive/2012/08/25/188225.html</link><dc:creator>天下</dc:creator><author>天下</author><pubDate>Sat, 25 Aug 2012 02:52:00 GMT</pubDate><guid>http://www.cppblog.com/aaxron/archive/2012/08/25/188225.html</guid><wfw:comment>http://www.cppblog.com/aaxron/comments/188225.html</wfw:comment><comments>http://www.cppblog.com/aaxron/archive/2012/08/25/188225.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/aaxron/comments/commentRss/188225.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/aaxron/services/trackbacks/188225.html</trackback:ping><description><![CDATA[<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000">QT&nbsp;的信号与槽机制(</span><span style="color: #000000">3</span><span style="color: #000000">)&nbsp;<br />　　信号和槽是一种高级接口，应用于对象之间的通信，它是&nbsp;QT&nbsp;的核心特性。要正确的处理信号和槽，必须借助一个称为&nbsp;moc（Meta&nbsp;Object&nbsp;Compiler）的&nbsp;QT&nbsp;工具，该工具是一个&nbsp;C</span><span style="color: #000000">++</span><span style="color: #000000">&nbsp;预处理程序，它为高层次的事件处理自动生成所需要的附加代码。&nbsp;信号和槽能携带任意数量和任意类型的参数。我们可以将很多信号与单个的槽进行连接，也可以将单个的信号与很多的槽进行连接，（当这个信号被发射时，这些槽将会一个接一个地&nbsp;执行，但是它们执行的顺序将会是随机的、不确定的，我们不能人为地指定哪个先执行、哪个后执行。）甚至于将一个信号与另外一个信号相连接，这时无论第一个信号什么时候发射系统都将立刻发射第二个信号。总之，信号与槽构造了一个强大的部件编程机制。<br /><br />信号（signals）<br /><br />信号只需要在头文件中做声明，不需要在cpp中实现。放在QT自定义关键字signals下，在此之前一定要加上Q_OBJECT宏！<br /><br />在编程中，一般使用的是控件内部定义好的信号。<br />如：QTreeWidget类下的&nbsp;signals：<br /></span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;currentItemChanged&nbsp;(&nbsp;QTreeWidgetItem&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;current,&nbsp;QTreeWidgetItem&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;previous&nbsp;)&nbsp;<br /></span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;itemActivated&nbsp;(&nbsp;QTreeWidgetItem&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;item,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;column&nbsp;)&nbsp;<br /></span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;itemChanged&nbsp;(&nbsp;QTreeWidgetItem&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;item,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;column&nbsp;)&nbsp;<br /></span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;itemClicked&nbsp;(&nbsp;QTreeWidgetItem&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;item,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;column&nbsp;)&nbsp;<br /></span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;itemCollapsed&nbsp;(&nbsp;QTreeWidgetItem&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;item&nbsp;)&nbsp;<br /></span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;itemDoubleClicked&nbsp;(&nbsp;QTreeWidgetItem&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;item,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;column&nbsp;)&nbsp;<br /></span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;itemEntered&nbsp;(&nbsp;QTreeWidgetItem&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;item,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;column&nbsp;)&nbsp;<br /></span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;itemExpanded&nbsp;(&nbsp;QTreeWidgetItem&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;item&nbsp;)&nbsp;<br /></span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;itemPressed&nbsp;(&nbsp;QTreeWidgetItem&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;item,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;column&nbsp;)&nbsp;<br /></span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;itemSelectionChanged&nbsp;()&nbsp;<br /><br /><br />也可以自定义信号，并通过emit在代码中发射信号。<br /><br /></span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;------------&nbsp;sender.h&nbsp;-----------&nbsp;</span><span style="color: #008000"><br /></span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;sender&nbsp;:&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;QObject&nbsp;<br />{&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;Q_OBJECT&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">:&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;doSend();&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;signals:&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;send(</span><span style="color: #0000ff">int</span><span style="color: #000000">);&nbsp;<br />};&nbsp;<br /><br /><br /></span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;------------&nbsp;sender.cpp&nbsp;-----------&nbsp;</span><span style="color: #008000"><br /></span><span style="color: #000000">#include&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">sender.h</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;<br /></span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;sender&nbsp;::&nbsp;doSend()&nbsp;<br />{&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;emit&nbsp;send(</span><span style="color: #000000">40</span><span style="color: #000000">);&nbsp;<br />}&nbsp;<br /><br />槽（slots）<br /><br />　　槽和普通的C</span><span style="color: #000000">++</span><span style="color: #000000">成员函数几乎是一样的（可以是虚函数，可以被重载，可以是public&nbsp;slots、</span><span style="color: #0000ff">protected</span><span style="color: #000000">&nbsp;slots、</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;slots，可以被其他C</span><span style="color: #000000">++</span><span style="color: #000000">成员函数直接调用；唯一不同的是：槽还可以和信号连接在一起，在这种情况下，信号被发射时，会自动调用这个槽。）槽不需要信号传过来的参数时，可以不要参数；但槽一旦要参数，其参数个数，类型，顺序必须要和对应的信号保持一致。另外，槽的参数不能有缺省值。<br /><br /></span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;------------&nbsp;receiver.h&nbsp;-----------&nbsp;</span><span style="color: #008000"><br /></span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;receiver&nbsp;:&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;QObject&nbsp;<br />{&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;Q_OBJECT&nbsp;<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;slots:&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;recv(</span><span style="color: #0000ff">int</span><span style="color: #000000">);&nbsp;<br />};<br /><br /><br /><br /></span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;------------&nbsp;Receiver.cpp&nbsp;-----------&nbsp;</span><span style="color: #008000"><br /></span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;receiver&nbsp;::&nbsp;recv(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;n)&nbsp;<br />{&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;qDebug()</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">"</span><span style="color: #000000">recv&nbsp;number:&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">n</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">endl;&nbsp;<br />}&nbsp;<br /><br />关联信号和槽（connect）<br />可以使用QObject类的静态成员函数connect来建立信号的槽的关联<br /><br />QObject::connect是静态函数,返回值bool类型.<br /></span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;&nbsp;</span><span style="color: #0000ff">bool</span><span style="color: #000000">&nbsp;QObject::connect&nbsp;(&nbsp;</span><span style="color: #0000ff">const</span><span style="color: #000000">&nbsp;QObject&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;sender,&nbsp;</span><span style="color: #0000ff">const</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">char</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;signal,</span><span style="color: #0000ff">const</span><span style="color: #000000">&nbsp;QObject&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;receiver,&nbsp;</span><span style="color: #0000ff">const</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">char</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;member&nbsp;);&nbsp;&nbsp;<br /><br /><br />具体的调用为：connect(sender,&nbsp;SIGNAL(signal),&nbsp;receiver,&nbsp;SLOT(slot));&nbsp;&nbsp;&nbsp;其中sender和receiver为QObject类对象的指针；&nbsp;SIGNAL宏和SLOT宏将信号的槽转换成字符串。<br /><br /><br />sender&nbsp;s;&nbsp;<br />receiver&nbsp;r;&nbsp;<br />QObject::connect(</span><span style="color: #000000">&amp;</span><span style="color: #000000">s,&nbsp;SIGNAL(send(</span><span style="color: #0000ff">int</span><span style="color: #000000">)),&nbsp;</span><span style="color: #000000">&amp;</span><span style="color: #000000">r,&nbsp;SLOT(recv(</span><span style="color: #0000ff">int</span><span style="color: #000000">)));&nbsp;<br /><br />注：在connect函数中信号函数和槽函数若有参数，只能写出参数类型，而不能也将变量名写出；否则，连接会失败！<br /><br />断开信号和槽（disconnect）<br /><br />当信号和槽没有必要继续保持连接时，可以通过调用disconnect来断开它们。<br /><br /></span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">bool</span><span style="color: #000000">&nbsp;QObject::disconnect&nbsp;(</span><span style="color: #0000ff">const</span><span style="color: #000000">&nbsp;QObject&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;sender,&nbsp;</span><span style="color: #0000ff">const</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">char</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;signal,&nbsp;&nbsp;</span><span style="color: #0000ff">const</span><span style="color: #000000">&nbsp;Object&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;receiver,&nbsp;</span><span style="color: #0000ff">const</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">char</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;slot)<br /><br /><br />有三种情况必须使用&nbsp;disconnect()&nbsp;函数：<br />（</span><span style="color: #000000">1</span><span style="color: #000000">）断开与某个对象相关联的任何对象。<br />&nbsp;&nbsp;&nbsp;&nbsp;disconnect(sender,&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">)&nbsp;;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">或者&nbsp;</span><span style="color: #008000"><br /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;sender</span><span style="color: #000000">-&gt;</span><span style="color: #000000">disconnect();&nbsp;<br /><br /><br />（</span><span style="color: #000000">2</span><span style="color: #000000">）断开与某个特定信号的任何关联。<br />&nbsp;&nbsp;&nbsp;&nbsp;disconnect(sender,&nbsp;SIGNAL(signal()),&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">);&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">或者&nbsp;</span><span style="color: #008000"><br /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;sender</span><span style="color: #000000">-&gt;</span><span style="color: #000000">disconnect(SIGNAL(signal()));&nbsp;<br /><br /><br />（</span><span style="color: #000000">3</span><span style="color: #000000">）断开两个对象之间的关联。<br />&nbsp;&nbsp;&nbsp;&nbsp;disconnect(sender,&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">,&nbsp;receiver,&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">);&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">或者&nbsp;</span><span style="color: #008000"><br /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;sender</span><span style="color: #000000">-&gt;</span><span style="color: #000000">disconnect(receiver);&nbsp;<br /></span></div><br />转自:<img src ="http://www.cppblog.com/aaxron/aggbug/188225.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/aaxron/" target="_blank">天下</a> 2012-08-25 10:52 <a href="http://www.cppblog.com/aaxron/archive/2012/08/25/188225.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>QT 的信号与槽机制(2) </title><link>http://www.cppblog.com/aaxron/archive/2012/08/25/188224.html</link><dc:creator>天下</dc:creator><author>天下</author><pubDate>Sat, 25 Aug 2012 02:41:00 GMT</pubDate><guid>http://www.cppblog.com/aaxron/archive/2012/08/25/188224.html</guid><wfw:comment>http://www.cppblog.com/aaxron/comments/188224.html</wfw:comment><comments>http://www.cppblog.com/aaxron/archive/2012/08/25/188224.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/aaxron/comments/commentRss/188224.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/aaxron/services/trackbacks/188224.html</trackback:ping><description><![CDATA[<p style="margin-top: 0pt; margin-bottom: 0pt"><span style="font-family: 'Verdana'; color: #000080; font-size: 15pt; font-weight: bold; mso-spacerun: 'yes'">转自:<a href="http://www.cppblog.com/lovecpp666/articles/169108.html">http://www.cppblog.com/lovecpp666/articles/169108.html</a><br /><br />Signals&nbsp;and&nbsp;Slots&nbsp;in&nbsp;Depth</span></p>
<p style="margin-top: 0pt; margin-bottom: 0pt"><br /></p>
<p style="margin-top: 0pt; margin-bottom: 0pt;background: #ffffff"><span style="font-family: 'Verdana'; font-size: 12pt">(1) </span><span style="font-family: 'Verdana'; font-size: 12pt">信号和槽是Qt编程的一个重要部分。这个机制可以在对象之间彼此并不了解的情况下将它们的行为联系起来。</span></p>
<p style="margin-top: 0pt; margin-bottom: 0pt;background: #ffffff"><span style="font-family: 'Verdana'; font-size: 12pt">&nbsp;&nbsp;&nbsp;&nbsp; 槽和普通的c++成员函数很像。它们可以是虚函数（virtual），也可被重载（overload），</span></p>
<p style="margin-top: 0pt; margin-bottom: 0pt;background: #ffffff"><span style="font-family: 'Verdana'; font-size: 12pt">可以是公有的（public），保护的（protective），也可是私有的（private），它们可以像任何c++成员函数</span></p>
<p style="margin-top: 0pt; margin-bottom: 0pt;background: #ffffff"><span style="font-family: 'Verdana'; font-size: 12pt">一样被调用，可以传递任何类型的参数。不同在于一个槽函数能和一个信号相连接，只要信号发出了，这个槽函</span></p>
<p style="margin-top: 0pt; margin-bottom: 0pt;background: #ffffff"><span style="font-family: 'Verdana'; font-size: 12pt">数就会自动被调用。</span></p>
<p style="margin-top: 0pt; margin-bottom: 0pt;background: #ffffff"><span style="font-family: 'Verdana'; font-size: 12pt"><br /></span></p>
<p style="margin-top: 0pt; margin-bottom: 0pt;background: #ffffff"><span style="font-family: 'Verdana'; font-size: 12pt">(2)connect函数语法如下：</span><span style="font-family: 'Verdana'; font-size: 15pt; mso-spacerun: 'yes'"><br /></span><span style="font-family: 'Verdana'; color: #ff0000; font-size: 12pt">connect(sender,&nbsp;SIGNAL(signal),&nbsp;receiver,&nbsp;SLOT(slot));</span><span style="font-family: 'Verdana'; font-size: 15pt; mso-spacerun: 'yes'"><br /></span><span style="font-family: 'Verdana'; color: #0000ff; font-size: 12pt">sender和receiver是QObject对象指针，</span></p>
<p style="margin-top: 0pt; margin-bottom: 0pt;background: #ffffff"><span style="font-family: 'Verdana'; color: #0000ff; font-size: 12pt">signal和slot是不带参数的函数原型。</span></p>
<p style="margin-top: 0pt; margin-bottom: 0pt;background: #ffffff"><span style="font-family: 'Verdana'; color: #0000ff; font-size: 12pt">SIGNALE()和SLOT()宏的作用是把他们转换成字符串。</span></p>
<p style="margin-top: 0pt; margin-bottom: 0pt;background: #ffffff"><span style="font-family: 'Verdana'; color: #0000ff; font-size: 12pt"><br /></span></p>
<p style="margin-top: 0pt; margin-bottom: 0pt;background: #ffffff"><span style="font-family: 'Verdana'; font-size: 12pt">(3)信号和槽实际使用中要考虑的一些规则：</span><span style="font-family: 'Verdana'; font-size: 15pt; mso-spacerun: 'yes'"><br /></span><span style="font-family: 'Verdana'; font-size: 12pt">1、一个信号可以连接到多个槽：</span><span style="font-family: 'Verdana'; font-size: 15pt; mso-spacerun: 'yes'"><br /></span><span style="font-family: 'Verdana'; font-size: 12pt">connect(slider,&nbsp;SIGNAL(valueChanged(int)),spinBox,&nbsp;SLOT(setValue(int)));</span><span style="font-family: 'Verdana'; font-size: 15pt; mso-spacerun: 'yes'"><br /></span><span style="font-family: 'Verdana'; font-size: 12pt">connect(slider,&nbsp;SIGNAL(valueChanged(int)),this,&nbsp;SLOT(updateStatusBarIndicator(int)));</span><span style="font-family: 'Verdana'; font-size: 15pt; mso-spacerun: 'yes'"><br /></span><span style="font-family: 'Verdana'; font-size: 12pt">当信号发出后，槽函数都会被调用，但是</span><span style="font-family: 'Verdana'; color: #0000ff; font-size: 12pt">调用的顺序是随机的，不确定的。</span></p>
<p style="margin-top: 0pt; margin-bottom: 0pt;background: #ffffff"><span style="font-family: 'Verdana'; font-size: 12pt"><br /></span></p>
<p style="margin-top: 0pt; margin-bottom: 0pt;background: #ffffff"><span style="font-family: 'Verdana'; font-size: 12pt">2、多个信号可以连接到一个槽</span><span style="font-family: 'Verdana'; font-size: 15pt; mso-spacerun: 'yes'"><br /></span><span style="font-family: 'Verdana'; font-size: 12pt">connect(lcd,&nbsp;SIGNAL(overflow()),&nbsp;this,&nbsp;SLOT(handleMathError()));</span><span style="font-family: 'Verdana'; font-size: 15pt; mso-spacerun: 'yes'"><br /></span><span style="font-family: 'Verdana'; font-size: 12pt">connect(calculator,&nbsp;SIGNAL(divisionByZero()),this,&nbsp;SLOT(handleMathError()));</span><span style="font-family: 'Verdana'; font-size: 15pt; mso-spacerun: 'yes'"><br /></span><span style="font-family: 'Verdana'; font-size: 12pt">任何一个信号发出，槽函数都会执行。</span></p>
<p style="margin-top: 0pt; margin-bottom: 0pt;background: #ffffff"><span style="font-family: 'Verdana'; font-size: 12pt"><br /></span></p>
<p style="margin-top: 0pt; margin-bottom: 0pt;background: #ffffff"><span style="font-family: 'Verdana'; font-size: 12pt">3、一个信号可以和另一个信号相连</span><span style="font-family: 'Verdana'; font-size: 15pt; mso-spacerun: 'yes'"><br /></span><span style="font-family: 'Verdana'; font-size: 12pt">connect(lineEdit,&nbsp;SIGNAL(textChanged(const&nbsp;QString&nbsp;&amp;)),</span><span style="font-family: 'Verdana'; font-size: 15pt; mso-spacerun: 'yes'"><br /></span><span style="font-family: 'Verdana'; font-size: 12pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this,&nbsp;SIGNAL(updateRecord(const&nbsp;QString&nbsp;&amp;)))；</span><span style="font-family: 'Verdana'; font-size: 15pt; mso-spacerun: 'yes'"><br /></span><span style="font-family: 'Verdana'; font-size: 12pt">&nbsp;第一个信号发出后，第二个信号也同时发送。除此之外，信号与信号连接上和信号和槽连接相同。</span><span style="font-family: 'Verdana'; font-size: 15pt; mso-spacerun: 'yes'"><br /></span>&nbsp;<span style="font-family: 'Verdana'; font-size: 15pt; mso-spacerun: 'yes'"><br /></span><span style="font-family: 'Verdana'; font-size: 12pt">4、连接可以被删除</span><span style="font-family: 'Verdana'; font-size: 15pt; mso-spacerun: 'yes'"><br /></span><span style="font-family: 'Verdana'; font-size: 12pt">disconnect(lcd,&nbsp;SIGNAL(overflow()),this,&nbsp;SLOT(handleMathError()));</span><span style="font-family: 'Verdana'; font-size: 15pt; mso-spacerun: 'yes'"><br /></span><span style="font-family: 'Verdana'; font-size: 12pt">这个函数很少使用，一个对象删除后，Qt自动删除这个对象的所有连接。</span></p>
<p style="margin-top: 0pt; margin-bottom: 0pt;background: #ffffff"><span style="font-family: 'Verdana'; font-size: 12pt"><br /></span></p>
<p style="margin-top: 0pt; margin-bottom: 0pt;background: #ffffff"><span style="font-family: 'Verdana'; font-size: 12pt">(4)信号和槽函数必须有着相同的参数类型，这样信号和槽函数才能成功连接：</span><span style="font-family: 'Verdana'; font-size: 15pt; mso-spacerun: 'yes'"><br /></span><span style="font-family: 'Verdana'; font-size: 12pt">connect(ftp,&nbsp;SIGNAL(rawCommandReply(int,&nbsp;const&nbsp;QString&nbsp;&amp;)),this,&nbsp;SLOT(processReply(int,&nbsp;const&nbsp;QString&nbsp;&amp;)));</span></p>
<p style="margin-top: 0pt; margin-bottom: 0pt;background: #ffffff"><br /><span style="font-family: 'Verdana'; font-size: 12pt"></span><span style="font-family: 'Verdana'; font-size: 15pt"></span></p>
<p style="margin-top: 0pt; margin-bottom: 0pt;background: #ffffff"><span style="font-family: 'Verdana'; font-size: 15pt; mso-spacerun: 'yes'"></span><span style="font-family: 'Verdana'; font-size: 12pt">(5)如果信号里的参数个数多于槽函数的参数，多余的参数被忽略：</span><span style="font-family: 'Verdana'; font-size: 15pt; mso-spacerun: 'yes'"><br /></span><span style="font-family: 'Verdana'; font-size: 12pt">connect(ftp,&nbsp;SIGNAL(rawCommandReply(int,&nbsp;const&nbsp;QString&nbsp;&amp;)),this,&nbsp;SLOT(checkErrorCode(int)));</span><span style="font-family: 'Verdana'; font-size: 15pt; mso-spacerun: 'yes'"><br /></span><span style="font-family: 'Verdana'; font-size: 12pt">如果参速类型不匹配，或者信号和槽不存在，在debug状态时，Qt会在运行期间给出警告。</span></p>
<p style="margin-top: 0pt; margin-bottom: 0pt;background: #ffffff"><span style="font-family: 'Verdana'; font-size: 12pt">如果信号和槽连接时包含了参数的名字，Qt将会给出警告。</span><span style="font-family: 'Verdana'; font-size: 15pt"></span></p>
<p style="margin-top: 0pt; margin-bottom: 0pt;background: #ffffff"><br /><span style="font-family: 'Verdana'; font-size: 15pt"></span></p>
<p style="margin-top: 0pt; margin-bottom: 0pt;background: #ffffff"><span style="font-family: 'Verdana'; font-size: 15pt; mso-spacerun: 'yes'"></span><span style="font-family: 'Verdana'; font-size: 12pt">(6)不仅有控件的信号和槽，</span><span style="font-family: 'Verdana'; font-size: 12pt">信号和槽机制可以实现在任何从QObject继承的子类中。</span><span style="font-family: 'Verdana'; font-size: 15pt; mso-spacerun: 'yes'"><br /></span></p>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080">&nbsp;1</span>&nbsp;<span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;Employee&nbsp;:&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;QObject<br /></span><span style="color: #008080">&nbsp;2</span>&nbsp;<span style="color: #000000">{<br /></span><span style="color: #008080">&nbsp;3</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;Q_OBJECT<br /></span><span style="color: #008080">&nbsp;4</span>&nbsp;<span style="color: #000000"></span><span style="color: #0000ff">public</span><span style="color: #000000">:<br /></span><span style="color: #008080">&nbsp;5</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;Employee()&nbsp;{&nbsp;mySalary&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;&nbsp;}<br /></span><span style="color: #008080">&nbsp;6</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;salary()&nbsp;</span><span style="color: #0000ff">const</span><span style="color: #000000">&nbsp;{&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;mySalary;&nbsp;}<br /></span><span style="color: #008080">&nbsp;7</span>&nbsp;<span style="color: #000000"></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;slots:<br /></span><span style="color: #008080">&nbsp;8</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;setSalary(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;newSalary);<br /></span><span style="color: #008080">&nbsp;9</span>&nbsp;<span style="color: #000000">signals:<br /></span><span style="color: #008080">10</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;salaryChanged(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;newSalary);<br /></span><span style="color: #008080">11</span>&nbsp;<span style="color: #000000"></span><span style="color: #0000ff">private</span><span style="color: #000000">:<br /></span><span style="color: #008080">12</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;mySalary;<br /></span><span style="color: #008080">13</span>&nbsp;<span style="color: #000000">};<br /></span><span style="color: #008080">14</span>&nbsp;<span style="color: #000000"></span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;Employee::setSalary(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;newSalary)<br /></span><span style="color: #008080">15</span>&nbsp;<span style="color: #000000">{<br /></span><span style="color: #008080">16</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(newSalary&nbsp;</span><span style="color: #000000">!=</span><span style="color: #000000">&nbsp;mySalary)&nbsp;{<br /></span><span style="color: #008080">17</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mySalary&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;newSalary;<br /></span><span style="color: #008080">18</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;emit&nbsp;salaryChanged(mySalary);<br /></span><span style="color: #008080">19</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080">20</span>&nbsp;<span style="color: #000000">}<br /></span><span style="color: #008080">21</span>&nbsp;<span style="color: #000000"></span></div>
<p style="margin-top: 0pt; margin-bottom: 0pt;background: #ffffff"><span style="font-family: 'Verdana'; font-size: 15pt; mso-spacerun: 'yes'"></span><span style="font-family: 'Verdana'; color: #0000ff; font-size: 12pt">注意，只有newSalary&nbsp;!=&nbsp;mySalary时才发出salary-Changed()信号，这样避免了死循环的出现。</span></p><img src ="http://www.cppblog.com/aaxron/aggbug/188224.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/aaxron/" target="_blank">天下</a> 2012-08-25 10:41 <a href="http://www.cppblog.com/aaxron/archive/2012/08/25/188224.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>QT学习笔记（5）：进度条对话框</title><link>http://www.cppblog.com/aaxron/archive/2012/08/24/188151.html</link><dc:creator>天下</dc:creator><author>天下</author><pubDate>Fri, 24 Aug 2012 08:31:00 GMT</pubDate><guid>http://www.cppblog.com/aaxron/archive/2012/08/24/188151.html</guid><wfw:comment>http://www.cppblog.com/aaxron/comments/188151.html</wfw:comment><comments>http://www.cppblog.com/aaxron/archive/2012/08/24/188151.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/aaxron/comments/commentRss/188151.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/aaxron/services/trackbacks/188151.html</trackback:ping><description><![CDATA[<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" /><span style="color: #008000">//</span><span style="color: #008000">MyWidget.h</span><span style="color: #008000"><br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" /></span><span style="color: #000000">#pragma&nbsp;once<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" />#include&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">QWidget</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" />#include&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">QPushButton</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" /><br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;MyWidget:</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;QWidget<br /><img id="Codehighlighter1_99_226_Open_Image" onclick="this.style.display='none'; Codehighlighter1_99_226_Open_Text.style.display='none'; Codehighlighter1_99_226_Closed_Image.style.display='inline'; Codehighlighter1_99_226_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none" id="Codehighlighter1_99_226_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_99_226_Closed_Text.style.display='none'; Codehighlighter1_99_226_Open_Image.style.display='inline'; Codehighlighter1_99_226_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif"></span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_99_226_Closed_Text"><img alt="" src="http://www.cppblog.com/Images/dot.gif" /></span><span id="Codehighlighter1_99_226_Open_Text"><span style="color: #000000">{<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;Q_OBJECT<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" /></span><span style="color: #0000ff">public</span><span style="color: #000000">:<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;MyWidget();<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" /></span><span style="color: #0000ff">public</span><span style="color: #000000">:<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;QPushButton&nbsp;m_btnQuit;<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;QPushButton&nbsp;m_btnTest;<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" /><br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" /></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;slots:<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;runTestDialog();<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif" />}</span></span><span style="color: #000000">;</span></div><br />
<p>&nbsp;</p>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008000">//</span><span style="color: #008000">MyDialog.cpp</span><span style="color: #008000"><br /></span><span style="color: #000000">#include&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">MyDialog.h</span><span style="color: #000000">"</span><span style="color: #000000"><br /><br /><br />MyDialog::MyDialog(QWidget</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;parent,Qt::WindowFlags&nbsp;f)<br />&nbsp;&nbsp;&nbsp;&nbsp;:QDialog(parent,f)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;m_pLayout&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;QGridLayout(</span><span style="color: #0000ff">this</span><span style="color: #000000">);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">-&gt;</span><span style="color: #000000">setWindowTitle(tr(</span><span style="color: #000000">"</span><span style="color: #000000">run&nbsp;Test&nbsp;Dialog</span><span style="color: #000000">"</span><span style="color: #000000">));<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">this-&gt;setFixedHeight(200);</span><span style="color: #008000"><br /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">-&gt;</span><span style="color: #000000">setFixedWidth(</span><span style="color: #000000">640</span><span style="color: #000000">);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;m_pbtnQuit&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;QPushButton(</span><span style="color: #000000">"</span><span style="color: #000000">Quit</span><span style="color: #000000">"</span><span style="color: #000000">);<br />&nbsp;&nbsp;&nbsp;&nbsp;m_pbtnTestQFileDialog&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;QPushButton(</span><span style="color: #000000">"</span><span style="color: #000000">Test&nbsp;QFileDialog</span><span style="color: #000000">"</span><span style="color: #000000">);<br />&nbsp;&nbsp;&nbsp;&nbsp;m_pbtnTestQFileDialog</span><span style="color: #000000">-&gt;</span><span style="color: #000000">setFixedWidth(</span><span style="color: #000000">150</span><span style="color: #000000">);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;m_pbtnTestQColorDialog&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;QPushButton(</span><span style="color: #000000">"</span><span style="color: #000000">Test&nbsp;QColorDialog</span><span style="color: #000000">"</span><span style="color: #000000">);<br />&nbsp;&nbsp;&nbsp;&nbsp;m_pbtnTestQFontDialog&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;QPushButton(</span><span style="color: #000000">"</span><span style="color: #000000">Test&nbsp;QFontDialog</span><span style="color: #000000">"</span><span style="color: #000000">);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;m_pFrameColor&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;QFrame;<br />&nbsp;&nbsp;&nbsp;&nbsp;m_pFrameColor</span><span style="color: #000000">-&gt;</span><span style="color: #000000">setFrameShape(QFrame::Box);<br />&nbsp;&nbsp;&nbsp;&nbsp;m_pFrameColor</span><span style="color: #000000">-&gt;</span><span style="color: #000000">setAutoFillBackground(</span><span style="color: #0000ff">true</span><span style="color: #000000">);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;m_pEditFile&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;QLineEdit;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">m_pEditFile-&gt;resize(200,20);</span><span style="color: #008000"><br /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;m_pEditFont&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;QLineEdit;<br />&nbsp;&nbsp;&nbsp;&nbsp;m_pEditFont</span><span style="color: #000000">-&gt;</span><span style="color: #000000">setText(&nbsp;trUtf8(</span><span style="color: #000000">"</span><span style="color: #000000">\xE5\xAD\x97\xE4\xBD\x93\xE6\xB5\x8B\xE8\xAF\x95&nbsp;Font&nbsp;Test</span><span style="color: #000000">"</span><span style="color: #000000">));<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">m_pEditFont-&gt;setMinimumHeight(40);</span><span style="color: #008000"><br /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;m_pLayout</span><span style="color: #000000">-&gt;</span><span style="color: #000000">addWidget(m_pbtnTestQFileDialog,</span><span style="color: #000000">0</span><span style="color: #000000">,</span><span style="color: #000000">0</span><span style="color: #000000">);<br />&nbsp;&nbsp;&nbsp;&nbsp;m_pLayout</span><span style="color: #000000">-&gt;</span><span style="color: #000000">addWidget(m_pEditFile,</span><span style="color: #000000">0</span><span style="color: #000000">,</span><span style="color: #000000">1</span><span style="color: #000000">);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;m_pLayout</span><span style="color: #000000">-&gt;</span><span style="color: #000000">addWidget(m_pbtnTestQColorDialog,</span><span style="color: #000000">1</span><span style="color: #000000">,</span><span style="color: #000000">0</span><span style="color: #000000">);<br />&nbsp;&nbsp;&nbsp;&nbsp;m_pLayout</span><span style="color: #000000">-&gt;</span><span style="color: #000000">addWidget(m_pFrameColor,</span><span style="color: #000000">1</span><span style="color: #000000">,</span><span style="color: #000000">1</span><span style="color: #000000">);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;m_pLayout</span><span style="color: #000000">-&gt;</span><span style="color: #000000">addWidget(m_pbtnTestQFontDialog,</span><span style="color: #000000">2</span><span style="color: #000000">,</span><span style="color: #000000">0</span><span style="color: #000000">);<br />&nbsp;&nbsp;&nbsp;&nbsp;m_pLayout</span><span style="color: #000000">-&gt;</span><span style="color: #000000">addWidget(m_pEditFont,</span><span style="color: #000000">2</span><span style="color: #000000">,</span><span style="color: #000000">1</span><span style="color: #000000">);<br />&nbsp;&nbsp;&nbsp;&nbsp;m_pLayout</span><span style="color: #000000">-&gt;</span><span style="color: #000000">addWidget(m_pbtnQuit,</span><span style="color: #000000">5</span><span style="color: #000000">,</span><span style="color: #000000">0</span><span style="color: #000000">);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;m_pLayout</span><span style="color: #000000">-&gt;</span><span style="color: #000000">setMargin(</span><span style="color: #000000">15</span><span style="color: #000000">);<br />&nbsp;&nbsp;&nbsp;&nbsp;m_pLayout</span><span style="color: #000000">-&gt;</span><span style="color: #000000">setSpacing(</span><span style="color: #000000">10</span><span style="color: #000000">);<br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;connect(m_pbtnQuit,SIGNAL(clicked()),qApp,SLOT(quit())&nbsp;);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;connect(m_pbtnTestQFileDialog,SIGNAL(clicked()),SLOT(TestQFileDialog())&nbsp;);<br />&nbsp;&nbsp;&nbsp;&nbsp;connect(m_pbtnTestQColorDialog,SIGNAL(clicked()),SLOT(TestQColorDialog())&nbsp;);<br />&nbsp;&nbsp;&nbsp;&nbsp;connect(m_pbtnTestQFontDialog,SIGNAL(clicked()),SLOT(TestQFontDialog())&nbsp;);<br /><br />}<br /><br /></span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;MyDialog::TestQFileDialog()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;QProgressDialog</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;&nbsp;pDlg&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;QProgressDialog(</span><span style="color: #0000ff">this</span><span style="color: #000000">);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;nMax&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">100001</span><span style="color: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;pDlg</span><span style="color: #000000">-&gt;</span><span style="color: #000000">setLabelText(</span><span style="color: #000000">"</span><span style="color: #000000">Test&nbsp;QProgressDialog</span><span style="color: #000000">"</span><span style="color: #000000">);<br />&nbsp;&nbsp;&nbsp;&nbsp;pDlg</span><span style="color: #000000">-&gt;</span><span style="color: #000000">setRange(</span><span style="color: #000000">0</span><span style="color: #000000">,nMax</span><span style="color: #000000">-</span><span style="color: #000000">1</span><span style="color: #000000">);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">pDlg-&gt;setModal(false);</span><span style="color: #008000"><br /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;pDlg</span><span style="color: #000000">-&gt;</span><span style="color: #000000">setAutoClose(</span><span style="color: #0000ff">true</span><span style="color: #000000">);<br />&nbsp;&nbsp;&nbsp;&nbsp;pDlg</span><span style="color: #000000">-&gt;</span><span style="color: #000000">show();<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">pDlg-&gt;exec();</span><span style="color: #008000"><br /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;i</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">;i</span><span style="color: #000000">&lt;</span><span style="color: #000000">nMax;i</span><span style="color: #000000">++</span><span style="color: #000000">)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(pDlg</span><span style="color: #000000">-&gt;</span><span style="color: #000000">wasCanceled())<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;qDebug()&nbsp;</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">&nbsp;pDlg</span><span style="color: #000000">-&gt;</span><span style="color: #000000">wasCanceled();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">break</span><span style="color: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pDlg</span><span style="color: #000000">-&gt;</span><span style="color: #000000">setValue(i);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;qApp</span><span style="color: #000000">-&gt;</span><span style="color: #000000">processEvents();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">if&nbsp;(i==50000)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;pDlg-&gt;close();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;break;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">}</span><span style="color: #008000"><br /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;delete&nbsp;pDlg;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">QString&nbsp;hello&nbsp;=&nbsp;tr("Hello");<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">QString&nbsp;world&nbsp;=&nbsp;tr("World");<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">QMessageBox::information(this,hello,world);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">QString&nbsp;filename&nbsp;=&nbsp;QFileDialog::getOpenFileName(this,"Test&nbsp;QFileDialog","/","C++&nbsp;files(*.cpp)");<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">m_pEditFile-&gt;setText(filename);</span><span style="color: #008000"><br /></span><span style="color: #000000">}<br /><br /></span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;MyDialog::TestQColorDialog()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;QColor&nbsp;color&nbsp;&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;QColorDialog::getColor();<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(color.isValid())<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_pFrameColor</span><span style="color: #000000">-&gt;</span><span style="color: #000000">setPalette(color);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /></span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;MyDialog::TestQFontDialog()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">bool</span><span style="color: #000000">&nbsp;ok;<br />&nbsp;&nbsp;&nbsp;&nbsp;QFont&nbsp;font&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;QFontDialog::getFont(</span><span style="color: #000000">&amp;</span><span style="color: #000000">ok);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(ok)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">font.setPointSize(24);</span><span style="color: #008000"><br /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_pEditFont</span><span style="color: #000000">-&gt;</span><span style="color: #000000">setFont(font);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}</span></div>
<p><br />&nbsp;</p><img src ="http://www.cppblog.com/aaxron/aggbug/188151.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/aaxron/" target="_blank">天下</a> 2012-08-24 16:31 <a href="http://www.cppblog.com/aaxron/archive/2012/08/24/188151.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>QT 的信号与槽机制(1)</title><link>http://www.cppblog.com/aaxron/archive/2012/08/24/188144.html</link><dc:creator>天下</dc:creator><author>天下</author><pubDate>Fri, 24 Aug 2012 07:41:00 GMT</pubDate><guid>http://www.cppblog.com/aaxron/archive/2012/08/24/188144.html</guid><wfw:comment>http://www.cppblog.com/aaxron/comments/188144.html</wfw:comment><comments>http://www.cppblog.com/aaxron/archive/2012/08/24/188144.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/aaxron/comments/commentRss/188144.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/aaxron/services/trackbacks/188144.html</trackback:ping><description><![CDATA[<p>&nbsp;</p>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000">QT&nbsp;的信号与槽机制(</span><span style="color: #000000">1</span><span style="color: #000000">)<br />信号<br />当某个信号对其客户或所有者发生的内部状态发生改变，信号被一个对象发射。只有&nbsp;定义过这个信号的类及其派生类能够发射这个信号。当一个信号被发射时，与其相关联的槽将被立刻执行，就象一个正常的函数调用一样。信号&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">&nbsp;槽机制完全独立于任何&nbsp;GUI&nbsp;事件循环。只有当所有的槽返回以后发射函数（emit）才返回。&nbsp;如果存在多个槽与某个信号相关联，那么，当这个信号被发射时，这些槽将会一个接一个地&nbsp;执行，但是它们执行的顺序将会是随机的、不确定的，我们不能人为地指定哪个先执行、哪&nbsp;个后执行。<br />信号的声明是在头文件中进行的，QT&nbsp;的&nbsp;signals&nbsp;关键字指出进入了信号声明区，随后即可&nbsp;声明自己的信号。例如，下面定义了三个信号：<br />signals:&nbsp;<br /></span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;mySignal();&nbsp;<br /></span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;mySignal(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;x);&nbsp;<br /></span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;mySignalParam(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;x,</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;y);
<p><br />在上面的定义中，signals 是 QT 的关键字，而非 C/C++ 的。<br />接下来的一行 void mySignal() 定义了信号 mySignal，这个信号没有携带参数；<br />接下来的一行 void mySignal(int x) 定义 了重名信号 mySignal，但是它携带一个整形参数，这有点类似于 C++ 中的虚函数。<br />从形式上 讲信号的声明与普通的 C++ 函数是一样的，但是信号却没有函数体定义，另外，信号的返回 类型都是 void，不要指望能从信号返回什么有用信息。<br />信号由 moc 自动产生，它们不应该在 .cpp 文件中实现。<br /><br />槽<br />槽是普通的&nbsp;C</span><span style="color: #000000">++</span><span style="color: #000000">&nbsp;成员函数，可以被正常调用，它们唯一的特殊性就是很多信号可以与其相关联。当与其关联的信号被发射时，这个槽就会被调用。槽可以有参数，但槽的参数不能有缺省值。<br />既然槽是普通的成员函数，因此与其它的函数一样，它们也有存取权限。槽的存取权限决定了谁能够与其相关联。同普通的&nbsp;C</span><span style="color: #000000">++</span><span style="color: #000000">&nbsp;成员函数一样，槽函数也分为三种类型，即&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;slots、</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;slots&nbsp;和&nbsp;</span><span style="color: #0000ff">protected</span><span style="color: #000000">&nbsp;slots。<br /></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;slots：在这个区内声明的槽意味着任何对象都可将信号与之相连接。这对于组件编程非常有用，你可以创建彼此互不了解的对象，将它们的信号与槽进行连接以便信息能够正确的传递。<br /></span><span style="color: #0000ff">protected</span><span style="color: #000000">&nbsp;slots：在这个区内声明的槽意味着当前类及其子类可以将信号与之相连接。这适用于那些槽，它们是类实现的一部分，但是其界面接口却面向外部。<br /></span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;slots：在这个区内声明的槽意味着只有类自己可以将信号与之相连接。这适用于联系非常紧密的类。<br />槽也能够声明为虚函数，这也是非常有用的。<br />槽的声明也是在头文件中进行的。例如，下面声明了三个槽：<br /></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;slots:&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;mySlot();&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;mySlot(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;x);&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;mySignalParam(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;x,</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;y);<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />信号与槽的关联<br />通过调用&nbsp;QObject&nbsp;对象的&nbsp;connect&nbsp;函数来将某个对象的信号与另外一个对象的槽函数相关联，这样当发射者发射信号时，接收者的槽函数将被调用。该函数的定义如下：<br /></span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">bool</span><span style="color: #000000">&nbsp;QObject::connect(</span><span style="color: #0000ff">const</span><span style="color: #000000">&nbsp;QObject&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">sender,&nbsp;</span><span style="color: #0000ff">const</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">char</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">signal,</span><span style="color: #0000ff">const</span><span style="color: #000000">&nbsp;QObject&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">receiver,&nbsp;</span><span style="color: #0000ff">const</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">char</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">method,Qt::ConnectionType&nbsp;type)<br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />用信号signals和槽slots需注意的基本问题是：<br />在所有包含signal与slot的类的声明中:<br /></span><span style="color: #000000">1</span><span style="color: #000000">)在类class声明中必须加入Q_OBJECT<br /></span><span style="color: #000000">2</span><span style="color: #000000">)类的声明文件必须成单独保存一个到.h文件</span></p></div>
<p>&nbsp;</p><img src ="http://www.cppblog.com/aaxron/aggbug/188144.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/aaxron/" target="_blank">天下</a> 2012-08-24 15:41 <a href="http://www.cppblog.com/aaxron/archive/2012/08/24/188144.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>qt学习笔记（1）：重要点</title><link>http://www.cppblog.com/aaxron/archive/2012/08/24/188143.html</link><dc:creator>天下</dc:creator><author>天下</author><pubDate>Fri, 24 Aug 2012 07:39:00 GMT</pubDate><guid>http://www.cppblog.com/aaxron/archive/2012/08/24/188143.html</guid><wfw:comment>http://www.cppblog.com/aaxron/comments/188143.html</wfw:comment><comments>http://www.cppblog.com/aaxron/archive/2012/08/24/188143.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/aaxron/comments/commentRss/188143.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/aaxron/services/trackbacks/188143.html</trackback:ping><description><![CDATA[<div style="border-bottom-color: #cccccc; border-bottom-width: 1px; border-bottom-style: solid; border-left-color: #cccccc; border-left-width: 1px; border-left-style: solid; padding-bottom: 4px; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top-color: #cccccc; border-top-width: 1px; border-top-style: solid; border-right-color: #cccccc; border-right-width: 1px; border-right-style: solid; padding-top: 4px; background-color: #eeeeee; "><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000">qt学习笔记(</span><span style="color: #000000">1</span><span style="color: #000000">)<br /><br /></span><span style="color: #000000">0</span><span style="color: #000000">.<br />C</span><span style="color: #000000">++</span><span style="color: #000000">中explicit关键字只对构造函数起作用，用来抑制隐式转换。<br /><br /></span><span style="color: #000000">1</span><span style="color: #000000">.<br />改变整个应用程序的默认字体使用QApplication::setFont()<br /><br /></span><span style="color: #000000">2</span><span style="color: #000000">.<br />用信号signals和槽slots需注意的基本问题是：<br />在所有包含signal与slot的类的声明中:<br /></span><span style="color: #000000">1</span><span style="color: #000000">)在类class声明中必须加入Q_OBJECT<br /></span><span style="color: #000000">2</span><span style="color: #000000">)类的声明文件必须成单独保存一个到.h文件<br /><br /><br /></span><span style="color: #000000">3</span><span style="color: #000000">.<br />QObject::connect是静态函数,返回值bool类型.<br /></span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;&nbsp;</span><span style="color: #0000ff">bool</span><span style="color: #000000">&nbsp;QObject::connect&nbsp;(&nbsp;</span><span style="color: #0000ff">const</span><span style="color: #000000">&nbsp;QObject&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;sender,&nbsp;</span><span style="color: #0000ff">const</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">char</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;signal,</span><span style="color: #0000ff">const</span><span style="color: #000000">&nbsp;QObject&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;receiver,&nbsp;</span><span style="color: #0000ff">const</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">char</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;member&nbsp;);&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br /><br /></span><span style="color: #000000">3</span><span style="color: #000000">.QT4中QWidget的构造函数:<br /></span><span style="color: #0000ff">explicit</span><span style="color: #000000">&nbsp;QWidget(QWidget</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;parent&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">,&nbsp;Qt::WindowFlags&nbsp;f&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">);<br /><br />4.</span><strong style="color: #454545; font-family: Tahoma, Arial, Helvetica, STHeiti; line-height: 25px; "><em>Multiple Inheritance Requires QObject to Be First</em>（多重继承QObject一定要放在前面）<br /><br />5.</strong><span style="font-family: arial, 굴림, Gulim, dotum, 돋움, sans-serif; line-height: 24px; ">moc不扩展宏，所以信号和槽的定义不能使用宏， 包括connect的时候也不能用宏做信号和槽的名字以及参数<br /></span><span style="font-family: arial, 굴림, Gulim, dotum, 돋움, sans-serif; font-size: 14px; line-height: 24px; ">tr也不支持使用宏。</span><span style="font-family: arial, 굴림, Gulim, dotum, 돋움, sans-serif; line-height: 24px; "><br /></span></div><br /><font face="arial, 굴림, Gulim, dotum, 돋움, sans-serif"><span style="line-height: 24px;"><br /></span></font><img src ="http://www.cppblog.com/aaxron/aggbug/188143.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/aaxron/" target="_blank">天下</a> 2012-08-24 15:39 <a href="http://www.cppblog.com/aaxron/archive/2012/08/24/188143.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>qt对话框+线程小试</title><link>http://www.cppblog.com/aaxron/archive/2011/09/22/156513.html</link><dc:creator>天下</dc:creator><author>天下</author><pubDate>Thu, 22 Sep 2011 02:24:00 GMT</pubDate><guid>http://www.cppblog.com/aaxron/archive/2011/09/22/156513.html</guid><wfw:comment>http://www.cppblog.com/aaxron/comments/156513.html</wfw:comment><comments>http://www.cppblog.com/aaxron/archive/2011/09/22/156513.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/aaxron/comments/commentRss/156513.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/aaxron/services/trackbacks/156513.html</trackback:ping><description><![CDATA[<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008000; ">//</span><span style="color: #008000; ">thread.h</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">#pragma&nbsp;once<br /></span><span style="color: #0000FF; ">#define</span><span style="color: #000000; ">&nbsp;QT3_SUPPORT</span><span style="color: #000000; "><br />#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">iostream</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">cstdio</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">unistd.h</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">Qt</span><span style="color: #000000; ">/</span><span style="color: #000000; ">qapplication.h</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">Qt</span><span style="color: #000000; ">/</span><span style="color: #000000; ">qpushbutton.h</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">qmessagebox.h</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">&nbsp;<br />#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">Qt</span><span style="color: #000000; ">/</span><span style="color: #000000; ">qdialog.h</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">Qt</span><span style="color: #000000; ">/</span><span style="color: #000000; ">qthread.h</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">QString</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br /><br /><br />template</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">typename&nbsp;T</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">class</span><span style="color: #000000; ">&nbsp;Thread&nbsp;:&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;QThread<br />{<br /></span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">:<br />&nbsp;&nbsp;&nbsp;&nbsp;Thread();<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">~</span><span style="color: #000000; ">Thread();<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;run();<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;setTObj(T</span><span style="color: #000000; ">*</span><span style="color: #000000; ">&nbsp;pobj);<br /></span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">:<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;flag;<br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;pos;<br />&nbsp;&nbsp;&nbsp;&nbsp;T</span><span style="color: #000000; ">*</span><span style="color: #000000; ">&nbsp;pTObj;<br />};<br /><br /><br />template</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">typename&nbsp;T</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />Thread</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">T</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">::Thread()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;flag&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;pos&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />}<br /><br />template</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">typename&nbsp;T</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />Thread</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">T</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">::</span><span style="color: #000000; ">~</span><span style="color: #000000; ">Thread()<br />{<br /><br />}<br /><br />template</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">typename&nbsp;T</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;Thread</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">T</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">::run()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">QMessageBox::information(&nbsp;NULL,&nbsp;"Application&nbsp;name","Started.\n");</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;QString&nbsp;strText;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">(flag)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;strText.sprintf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">flag:%d</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,pos);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pTObj</span><span style="color: #000000; ">-&gt;</span><span style="color: #000000; ">setWindowTitle(strText);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pos</span><span style="color: #000000; ">++</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;QThread::msleep(</span><span style="color: #000000; ">500</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /><br />template</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">typename&nbsp;T</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;Thread</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">T</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">::setTObj(T</span><span style="color: #000000; ">*</span><span style="color: #000000; ">&nbsp;pobj)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;pTObj&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;pobj;<br />}</span></div><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008000; ">//</span><span style="color: #008000; ">ProcessDialog.h</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">#pragma&nbsp;once<br /></span><span style="color: #0000FF; ">#define</span><span style="color: #000000; ">&nbsp;QT3_SUPPORT</span><span style="color: #000000; "><br /><br />#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">iostream</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">cstdio</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">unistd.h</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">Qt</span><span style="color: #000000; ">/</span><span style="color: #000000; ">qapplication.h</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">Qt</span><span style="color: #000000; ">/</span><span style="color: #000000; ">qpushbutton.h</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">qmessagebox.h</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">&nbsp;<br />#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">Qt</span><span style="color: #000000; ">/</span><span style="color: #000000; ">qdialog.h</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">Qt</span><span style="color: #000000; ">/</span><span style="color: #000000; ">qthread.h</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">QString</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">Thread.h</span><span style="color: #000000; ">"</span><span style="color: #000000; "><br /><br /></span><span style="color: #0000FF; ">class</span><span style="color: #000000; ">&nbsp;ProcessDialog&nbsp;:</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;QDialog&nbsp;<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;Q_OBJECT<br /></span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">:<br />&nbsp;&nbsp;&nbsp;&nbsp;ProcessDialog(QWidget</span><span style="color: #000000; ">*</span><span style="color: #000000; ">&nbsp;parent</span><span style="color: #000000; ">=</span><span style="color: #000000; ">0</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:btnStop(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">Stop</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;,btnWork(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">Work</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;btnStop.setGeometry(&nbsp;</span><span style="color: #000000; ">62</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">40</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">75</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">30</span><span style="color: #000000; ">&nbsp;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;btnWork.setGeometry(&nbsp;</span><span style="color: #000000; ">162</span><span style="color: #000000; ">,</span><span style="color: #000000; ">140</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">75</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">30</span><span style="color: #000000; ">&nbsp;);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;threadA.setTObj(</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;connect(</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">btnWork,SIGNAL(&nbsp;clicked()),</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">,SLOT(start())&nbsp;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;connect(</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">btnStop,SIGNAL(&nbsp;clicked()),</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">,SLOT(stop())&nbsp;);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br /></span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">:<br />&nbsp;&nbsp;&nbsp;&nbsp;QPushButton&nbsp;btnStop;<br />&nbsp;&nbsp;&nbsp;&nbsp;QPushButton&nbsp;btnWork;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">private</span><span style="color: #000000; ">&nbsp;slots:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;start()<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;btnWork.setText(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">Working</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;threadA.start();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;threadA.flag&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;stop()<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;btnWork.setText(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">Work</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;threadA.flag&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">threadA.pos&nbsp;&nbsp;=&nbsp;0;</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br /></span><span style="color: #0000FF; ">private</span><span style="color: #000000; ">:<br />&nbsp;&nbsp;&nbsp;&nbsp;Thread</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">ProcessDialog</span><span style="color: #000000; ">&gt;</span><span style="color: #000000;">&nbsp;threadA;&nbsp;&nbsp;&nbsp;&nbsp;<br />};<br /><br /></span></div><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008000; ">//</span><span style="color: #008000; ">main.cpp</span><span style="color: #008000; "><br /></span><span style="color: #0000FF; ">#define</span><span style="color: #000000; ">&nbsp;QT3_SUPPORT</span><span style="color: #000000; "><br />#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">iostream</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">cstdio</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">unistd.h</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">Qt</span><span style="color: #000000; ">/</span><span style="color: #000000; ">qapplication.h</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">Qt</span><span style="color: #000000; ">/</span><span style="color: #000000; ">qpushbutton.h</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">qmessagebox.h</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">&nbsp;<br />#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">Qt</span><span style="color: #000000; ">/</span><span style="color: #000000; ">qdialog.h</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">Qt</span><span style="color: #000000; ">/</span><span style="color: #000000; ">qthread.h</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">QString</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">Thread.h</span><span style="color: #000000; ">"</span><span style="color: #000000; "><br />#include&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">ProcessDialog.h</span><span style="color: #000000; ">"</span><span style="color: #000000; "><br /><br /></span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;main(&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;argc,&nbsp;</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">**</span><span style="color: #000000; ">argv&nbsp;)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;QApplication&nbsp;app(&nbsp;argc,&nbsp;argv&nbsp;);<br />&nbsp;&nbsp;&nbsp;&nbsp;ProcessDialog&nbsp;dlg;<br />&nbsp;&nbsp;&nbsp;&nbsp;app.setMainWidget(&nbsp;</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">dlg&nbsp;);<br />&nbsp;&nbsp;&nbsp;&nbsp;dlg.resize(</span><span style="color: #000000; ">640</span><span style="color: #000000; ">,</span><span style="color: #000000; ">480</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;dlg.setModal(</span><span style="color: #0000FF; ">true</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;dlg.exec();<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;app.exec();<br />}<br /><br /></span></div><img src ="http://www.cppblog.com/aaxron/aggbug/156513.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/aaxron/" target="_blank">天下</a> 2011-09-22 10:24 <a href="http://www.cppblog.com/aaxron/archive/2011/09/22/156513.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>