??xml version="1.0" encoding="utf-8" standalone="yes"?>国产成人99久久亚洲综合精品,97久久超碰国产精品旧版 ,国产精品福利一区二区久久http://www.shnenglu.com/zhonghua/zh-cnSun, 11 May 2025 06:45:42 GMTSun, 11 May 2025 06:45:42 GMT60了解了这些才能开始发挥jQuery的威?/title><link>http://www.shnenglu.com/zhonghua/archive/2015/02/02/209704.html</link><dc:creator>c米</dc:creator><author>c米</author><pubDate>Mon, 02 Feb 2015 07:01:00 GMT</pubDate><guid>http://www.shnenglu.com/zhonghua/archive/2015/02/02/209704.html</guid><wfw:comment>http://www.shnenglu.com/zhonghua/comments/209704.html</wfw:comment><comments>http://www.shnenglu.com/zhonghua/archive/2015/02/02/209704.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/zhonghua/comments/commentRss/209704.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/zhonghua/services/trackbacks/209704.html</trackback:ping><description><![CDATA[<div><div class="occockw" id="cnblogs_post_body" style="margin: 0px 0px 20px; padding: 0px; font-family: 微Y雅黑, 'Segoe UI'; color: #000000; font-size: 14.4444446563721px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 23.3333339691162px; orphans: auto; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: #ffffff;"><p style="margin: 10px auto; padding: 0px; font-family: 微Y雅黑, 'Segoe UI'; text-indent: 0px;">在最q的web开发中是不是就?x)用C些选择器,发现很多其是CSS3新增的不太熟(zhn),在此ȝ一下?/p><h3>优先U?/h3><p style="margin: 10px auto; padding: 0px; font-family: 微Y雅黑, 'Segoe UI'; text-indent: 0px;"><strong style="margin: 0px; padding: 0px;">不同U别</strong></p><p style="margin: 10px auto; padding: 0px; font-family: 微Y雅黑, 'Segoe UI'; text-indent: 0px;">1. 在属性后面?!important ?x)覆盖页面内M位置定义的元素样式?/p><p style="margin: 10px auto; padding: 0px; font-family: 微Y雅黑, 'Segoe UI'; text-indent: 0px;">2.作ؓ(f)style属性写在元素内的样?/p><p style="margin: 10px auto; padding: 0px; font-family: 微Y雅黑, 'Segoe UI'; text-indent: 0px;">3.id选择?/p><p style="margin: 10px auto; padding: 0px; font-family: 微Y雅黑, 'Segoe UI'; text-indent: 0px;">4.c选择?/p><p style="margin: 10px auto; padding: 0px; font-family: 微Y雅黑, 'Segoe UI'; text-indent: 0px;">5.标签选择?/p><p style="margin: 10px auto; padding: 0px; font-family: 微Y雅黑, 'Segoe UI'; text-indent: 0px;">6.通配W选择?/p><p style="margin: 10px auto; padding: 0px; font-family: 微Y雅黑, 'Segoe UI'; text-indent: 0px;">7.览器自定义</p><p style="margin: 10px auto; padding: 0px; font-family: 微Y雅黑, 'Segoe UI'; text-indent: 0px;"><strong style="margin: 0px; padding: 0px;">同一U别</strong></p><p style="margin: 10px auto; padding: 0px; font-family: 微Y雅黑, 'Segoe UI'; text-indent: 0px;">同一U别中后写的?x)覆盖先写的样?/p><p style="margin: 10px auto; padding: 0px; font-family: 微Y雅黑, 'Segoe UI'; text-indent: 0px;"> </p><h3>基础选择?/h3><table style="margin: 0px; padding: 0px; border-collapse: collapse; border-spacing: 0px; border: 1px solid silver; word-break: break-word; width: 834px;" border="1" cellpadding="2" cellspacing="0"><tbody style="margin: 0px; padding: 0px;"><tr style="margin: 0px; padding: 0px;"><td style="margin: 0px; padding: 3px; font-family: 微Y雅黑, 'Segoe UI'; border: 1px solid silver; border-collapse: collapse;" valign="top" width="148"><strong style="margin: 0px; padding: 0px;">选择?/strong></td><td style="margin: 0px; padding: 3px; font-family: 微Y雅黑, 'Segoe UI'; border: 1px solid silver; border-collapse: collapse;" valign="top" width="684"><strong style="margin: 0px; padding: 0px;">含义</strong></td></tr><tr style="margin: 0px; padding: 0px;"><td style="margin: 0px; padding: 3px; font-family: 微Y雅黑, 'Segoe UI'; border: 1px solid silver; border-collapse: collapse;" valign="top" width="148">*</td><td style="margin: 0px; padding: 3px; font-family: 微Y雅黑, 'Segoe UI'; border: 1px solid silver; border-collapse: collapse;" valign="top" width="684">通用元素选择器,匚w面M元素Q这也就军_了我们很用)</td></tr><tr style="margin: 0px; padding: 0px;"><td style="margin: 0px; padding: 3px; font-family: 微Y雅黑, 'Segoe UI'; border: 1px solid silver; border-collapse: collapse;" valign="top" width="148">#id</td><td style="margin: 0px; padding: 3px; font-family: 微Y雅黑, 'Segoe UI'; border: 1px solid silver; border-collapse: collapse;" valign="top" width="684">id选择器,匚w特定id的元?/td></tr><tr style="margin: 0px; padding: 0px;"><td style="margin: 0px; padding: 3px; font-family: 微Y雅黑, 'Segoe UI'; border: 1px solid silver; border-collapse: collapse;" valign="top" width="148">.class</td><td style="margin: 0px; padding: 3px; font-family: 微Y雅黑, 'Segoe UI'; border: 1px solid silver; border-collapse: collapse;" valign="top" width="684">c选择器,匚wclass<strong style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; font-family: 微Y雅黑, 'Segoe UI'; color: #ff0000;">包含(不是{于)</span></strong>特定cȝ元素</td></tr><tr style="margin: 0px; padding: 0px;"><td style="margin: 0px; padding: 3px; font-family: 微Y雅黑, 'Segoe UI'; border: 1px solid silver; border-collapse: collapse;" valign="top" width="148">element</td><td style="margin: 0px; padding: 3px; font-family: 微Y雅黑, 'Segoe UI'; border: 1px solid silver; border-collapse: collapse;" valign="top" width="684">标签选择?/td></tr></tbody></table><p style="margin: 10px auto; padding: 0px; font-family: 微Y雅黑, 'Segoe UI'; text-indent: 0px;"> </p><div style="margin: 5px 0px; padding: 5px; font-family: 'Courier New' !important; border: 1px solid #cccccc; overflow: auto; color: #000000; font-size: 12px !important; background-color: #f5f5f5;"><div style="margin: 5px 0px 0px; padding: 0px; font-family: 微Y雅黑, 'Segoe UI'; background-color: #f5f5f5;"><span style="margin: 0px; padding: 0px 5px 0px 0px; font-family: 'Courier New' !important; font-size: 12px !important; line-height: 1.5 !important;"><a title="复制代码" style="margin: 0px; padding: 0px; color: #339900; text-decoration: underline; border: none !important; background-color: #f5f5f5 !important;"><img src="http://common.cnblogs.com/images/copycode.gif" alt="复制代码" style="margin: 0px; padding: 0px; border: none !important; background-color: #f5f5f5 !important;" /></a></span></div><pre style="margin: 0px; padding: 0px; white-space: pre-wrap; word-wrap: break-word; font-family: 'Courier New' !important; font-size: 12px !important;"><span style="margin: 0px; padding: 0px; font-family: 'Courier New' !important; font-size: 12px !important; line-height: 1.5 !important; color: #800000;">* </span>{ <span style="margin: 0px; padding: 0px; font-family: 'Courier New' !important; font-size: 12px !important; line-height: 1.5 !important; color: #008000;">/*</span><span style="margin: 0px; padding: 0px; font-family: 'Courier New' !important; font-size: 12px !important; line-height: 1.5 !important; color: #008000;">面所有元素都使用</span><span style="margin: 0px; padding: 0px; font-family: 'Courier New' !important; font-size: 12px !important; line-height: 1.5 !important; color: #008000;">*/</span><span style="margin: 0px; padding: 0px; font-family: 'Courier New' !important; font-size: 12px !important; line-height: 1.5 !important; color: #ff0000;"> border</span>:<span style="margin: 0px; padding: 0px; font-family: 'Courier New' !important; font-size: 12px !important; line-height: 1.5 !important; color: #0000ff;">0</span>; }<span style="margin: 0px; padding: 0px; font-family: 'Courier New' !important; font-size: 12px !important; line-height: 1.5 !important; color: #800000;"> #test </span>{ <span style="margin: 0px; padding: 0px; font-family: 'Courier New' !important; font-size: 12px !important; line-height: 1.5 !important; color: #008000;">/*</span><span style="margin: 0px; padding: 0px; font-family: 'Courier New' !important; font-size: 12px !important; line-height: 1.5 !important; color: #008000;">id=test 的元?/span><span style="margin: 0px; padding: 0px; font-family: 'Courier New' !important; font-size: 12px !important; line-height: 1.5 !important; color: #008000;">*/</span><span style="margin: 0px; padding: 0px; font-family: 'Courier New' !important; font-size: 12px !important; line-height: 1.5 !important; color: #ff0000;"> background-color</span>:<span style="margin: 0px; padding: 0px; font-family: 'Courier New' !important; font-size: 12px !important; line-height: 1.5 !important; color: #0000ff;">#0e0</span>; }<span style="margin: 0px; padding: 0px; font-family: 'Courier New' !important; font-size: 12px !important; line-height: 1.5 !important; color: #800000;"> .staus </span>{ <span style="margin: 0px; padding: 0px; font-family: 'Courier New' !important; font-size: 12px !important; line-height: 1.5 !important; color: #008000;">/*</span><span style="margin: 0px; padding: 0px; font-family: 'Courier New' !important; font-size: 12px !important; line-height: 1.5 !important; color: #008000;">含有cstatus的元?/span><span style="margin: 0px; padding: 0px; font-family: 'Courier New' !important; font-size: 12px !important; line-height: 1.5 !important; color: #008000;">*/</span><span style="margin: 0px; padding: 0px; font-family: 'Courier New' !important; font-size: 12px !important; line-height: 1.5 !important; color: #ff0000;"> border</span>:<span style="margin: 0px; padding: 0px; font-family: 'Courier New' !important; font-size: 12px !important; line-height: 1.5 !important; color: #0000ff;">0</span>; }<span style="margin: 0px; padding: 0px; font-family: 'Courier New' !important; font-size: 12px !important; line-height: 1.5 !important; color: #800000;"> div </span>{ <span style="margin: 0px; padding: 0px; font-family: 'Courier New' !important; font-size: 12px !important; line-height: 1.5 !important; color: #008000;">/*</span><span style="margin: 0px; padding: 0px; font-family: 'Courier New' !important; font-size: 12px !important; line-height: 1.5 !important; color: #008000;">面所有div</span><span style="margin: 0px; padding: 0px; font-family: 'Courier New' !important; font-size: 12px !important; line-height: 1.5 !important; color: #008000;">*/</span><span style="margin: 0px; padding: 0px; font-family: 'Courier New' !important; font-size: 12px !important; line-height: 1.5 !important; color: #ff0000;"> background-color</span>:<span style="margin: 0px; padding: 0px; font-family: 'Courier New' !important; font-size: 12px !important; line-height: 1.5 !important; color: #0000ff;">#0e0</span>; }</pre><div style="margin: 5px 0px 0px; padding: 0px; font-family: 微Y雅黑, 'Segoe UI'; background-color: #f5f5f5;"><span style="margin: 0px; padding: 0px 5px 0px 0px; font-family: 'Courier New' !important; font-size: 12px !important; line-height: 1.5 !important;"><a title="复制代码" style="margin: 0px; padding: 0px; color: #339900; text-decoration: underline; border: none !important; background-color: #f5f5f5 !important;"><img src="http://common.cnblogs.com/images/copycode.gif" alt="复制代码" style="margin: 0px; padding: 0px; border: none !important; background-color: #f5f5f5 !important;" /></a></span></div></div><h3>l合选择?/h3><table style="margin: 0px; padding: 0px; border-collapse: collapse; border-spacing: 0px; border: 1px solid silver; word-break: break-word; width: 989px;" border="1" cellpadding="2" cellspacing="0"><tbody style="margin: 0px; padding: 0px;"><tr style="margin: 0px; padding: 0px;"><td style="margin: 0px; padding: 3px; font-family: 微Y雅黑, 'Segoe UI'; border: 1px solid silver; border-collapse: collapse;" valign="top" width="200"><strong style="margin: 0px; padding: 0px;">选择?/strong></td><td style="margin: 0px; padding: 3px; font-family: 微Y雅黑, 'Segoe UI'; border: 1px solid silver; border-collapse: collapse;" valign="top" width="787"><strong style="margin: 0px; padding: 0px;">含义</strong></td></tr><tr style="margin: 0px; padding: 0px;"><td style="margin: 0px; padding: 3px; font-family: 微Y雅黑, 'Segoe UI'; border: 1px solid silver; border-collapse: collapse;" valign="top" width="200">E,F</td><td style="margin: 0px; padding: 3px; font-family: 微Y雅黑, 'Segoe UI'; border: 1px solid silver; border-collapse: collapse;" valign="top" width="787">多元素选择器,?#8221;,分隔Q同时匹配元素E或元素F</td></tr><tr style="margin: 0px; padding: 0px;"><td style="margin: 0px; padding: 3px; font-family: 微Y雅黑, 'Segoe UI'; border: 1px solid silver; border-collapse: collapse;" valign="top" width="200">E F</td><td style="margin: 0px; padding: 3px; font-family: 微Y雅黑, 'Segoe UI'; border: 1px solid silver; border-collapse: collapse;" valign="top" width="787">后代选择器,用空格分隔,匚wE元素所有的<span style="margin: 0px; padding: 0px; font-family: 微Y雅黑, 'Segoe UI'; color: #ff0000;"><strong style="margin: 0px; padding: 0px;">后代Q不只是子元素、子元素向下递归Q?/strong></span>元素F</td></tr><tr style="margin: 0px; padding: 0px;"><td style="margin: 0px; padding: 3px; font-family: 微Y雅黑, 'Segoe UI'; border: 1px solid silver; border-collapse: collapse;" valign="top" width="200">E>F</td><td style="margin: 0px; padding: 3px; font-family: 微Y雅黑, 'Segoe UI'; border: 1px solid silver; border-collapse: collapse;" valign="top" width="787">子元素选择器,?#8221;>”分隔Q匹配E元素的所有直接子元素</td></tr><tr style="margin: 0px; padding: 0px;"><td style="margin: 0px; padding: 3px; font-family: 微Y雅黑, 'Segoe UI'; border: 1px solid silver; border-collapse: collapse;" valign="top" width="200">E+F</td><td style="margin: 0px; padding: 3px; font-family: 微Y雅黑, 'Segoe UI'; border: 1px solid silver; border-collapse: collapse;" valign="top" width="787">直接盔R选择器,匚wE元素<span style="margin: 0px; padding: 0px; font-family: 微Y雅黑, 'Segoe UI'; color: #ff0000;"><strong style="margin: 0px; padding: 0px;">之后</strong></span>?strong style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; font-family: 微Y雅黑, 'Segoe UI'; color: #ff0000;">盔R</span></strong>?strong style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; font-family: 微Y雅黑, 'Segoe UI'; color: #ff0000;">同</span></strong>元素F</td></tr><tr style="margin: 0px; padding: 0px;"><td style="margin: 0px; padding: 3px; font-family: 微Y雅黑, 'Segoe UI'; border: 1px solid silver; border-collapse: collapse;" valign="top" width="200">E~F</td><td style="margin: 0px; padding: 3px; font-family: 微Y雅黑, 'Segoe UI'; border: 1px solid silver; border-collapse: collapse;" valign="top" width="787">普通相邻选择器(弟弟选择器)Q匹配E元素<span style="margin: 0px; padding: 0px; font-family: 微Y雅黑, 'Segoe UI'; color: #ff0000;"><strong style="margin: 0px; padding: 0px;">之后</strong></span>?strong style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; font-family: 微Y雅黑, 'Segoe UI'; color: #ff0000;">同</span></strong>元素FQ无论直接相M否)</td></tr><tr style="margin: 0px; padding: 0px;"><td style="margin: 0px; padding: 3px; font-family: 微Y雅黑, 'Segoe UI'; border: 1px solid silver; border-collapse: collapse;" valign="top" width="200">.class1.class2</td><td style="margin: 0px; padding: 3px; font-family: 微Y雅黑, 'Segoe UI'; border: 1px solid silver; border-collapse: collapse;" valign="top" width="787">q个姑且也算一个吧Q没什么名字,匚wcd中既包含class1又包含class2的元?/td></tr></tbody></table><p style="margin: 10px auto; padding: 0px; font-family: 微Y雅黑, 'Segoe UI'; text-indent: 0px;">我就不一一举例子了Q选择器ƈ不是只能写两层,发现有些朋友有q种误解Q认为只能写E>Fq样的,我们写可以写E>F.class Elementq样Q你要你搞得定优先</p><p style="margin: 10px auto; padding: 0px; font-family: 微Y雅黑, 'Segoe UI'; text-indent: 0px;"> </p><h3>属性选择?/h3><p style="margin: 10px auto; padding: 0px; font-family: 微Y雅黑, 'Segoe UI'; text-indent: 0px;"> </p><table style="margin: 0px; padding: 0px; border-collapse: collapse; border-spacing: 0px; border: 1px solid silver; word-break: break-word; width: 1052px;" border="1" cellpadding="2" cellspacing="0"><tbody style="margin: 0px; padding: 0px;"><tr style="margin: 0px; padding: 0px;"><td style="margin: 0px; padding: 3px; font-family: 微Y雅黑, 'Segoe UI'; border: 1px solid silver; border-collapse: collapse;" valign="top" width="200"><strong style="margin: 0px; padding: 0px;">选择?/strong></td><td style="margin: 0px; padding: 3px; font-family: 微Y雅黑, 'Segoe UI'; border: 1px solid silver; border-collapse: collapse;" valign="top" width="850"><strong style="margin: 0px; padding: 0px;">含义</strong></td></tr><tr style="margin: 0px; padding: 0px;"><td style="margin: 0px; padding: 3px; font-family: 微Y雅黑, 'Segoe UI'; border: 1px solid silver; border-collapse: collapse;" valign="top" width="200">E[attr]</td><td style="margin: 0px; padding: 3px; font-family: 微Y雅黑, 'Segoe UI'; border: 1px solid silver; border-collapse: collapse;" valign="top" width="850">匚w所有具有属性attr的元素,div[id]p取到所有有id属性的div</td></tr><tr style="margin: 0px; padding: 0px;"><td style="margin: 0px; padding: 3px; font-family: 微Y雅黑, 'Segoe UI'; border: 1px solid silver; border-collapse: collapse;" valign="top" width="200">E[attr=value]</td><td style="margin: 0px; padding: 3px; font-family: 微Y雅黑, 'Segoe UI'; border: 1px solid silver; border-collapse: collapse;" valign="top" width="850">匚w属性attrgؓ(f)value的元素,div[id=test],匚wid=test的div</td></tr><tr style="margin: 0px; padding: 0px;"><td style="margin: 0px; padding: 3px; font-family: 微Y雅黑, 'Segoe UI'; border: 1px solid silver; border-collapse: collapse;" valign="top" width="200">E[attr~=value]</td><td style="margin: 0px; padding: 3px; font-family: 微Y雅黑, 'Segoe UI'; border: 1px solid silver; border-collapse: collapse;" valign="top" width="850">匚w所有属性attrh多个I格分隔、其中一个值等于value的元?/td></tr><tr style="margin: 0px; padding: 0px;"><td style="margin: 0px; padding: 3px; font-family: 微Y雅黑, 'Segoe UI'; border: 1px solid silver; border-collapse: collapse;" valign="top" width="200">E[attr|=value]</td><td style="margin: 0px; padding: 3px; font-family: 微Y雅黑, 'Segoe UI'; border: 1px solid silver; border-collapse: collapse;" valign="top" width="850">匚w所有att属性具有多?#8221;-”分隔、其中一个gvalue开头的元素Q主要用于lang属性,比如“en”?#8220;en-us”</td></tr><tr style="margin: 0px; padding: 0px;"><td style="margin: 0px; padding: 3px; font-family: 微Y雅黑, 'Segoe UI'; border: 1px solid silver; border-collapse: collapse;" valign="top" width="200">E[attr ^=value]</td><td style="margin: 0px; padding: 3px; font-family: 微Y雅黑, 'Segoe UI'; border: 1px solid silver; border-collapse: collapse;" valign="top" width="850">匚w属性attr的gvalue开头的元素</td></tr><tr style="margin: 0px; padding: 0px;"><td style="margin: 0px; padding: 3px; font-family: 微Y雅黑, 'Segoe UI'; border: 1px solid silver; border-collapse: collapse;" valign="top" width="200">E[attr $=value]</td><td style="margin: 0px; padding: 3px; font-family: 微Y雅黑, 'Segoe UI'; border: 1px solid silver; border-collapse: collapse;" valign="top" width="850">匚w属性attr的gvaluel尾的元?/td></tr><tr style="margin: 0px; padding: 0px;"><td style="margin: 0px; padding: 3px; font-family: 微Y雅黑, 'Segoe UI'; border: 1px solid silver; border-collapse: collapse;" valign="top" width="200">E[attr *=value]</td><td style="margin: 0px; padding: 3px; font-family: 微Y雅黑, 'Segoe UI'; border: 1px solid silver; border-collapse: collapse;" valign="top" width="850">匚w属性attr的值包含value的元?/td></tr></tbody></table><h3>伪类选择?/h3><p style="margin: 10px auto; padding: 0px; font-family: 微Y雅黑, 'Segoe UI'; text-indent: 0px;"> </p><table style="margin: 0px; padding: 0px; border-collapse: collapse; border-spacing: 0px; border: 1px solid silver; word-break: break-word; width: 1094px;" border="1" cellpadding="2" cellspacing="0"><tbody style="margin: 0px; padding: 0px;"><tr style="margin: 0px; padding: 0px;"><td style="margin: 0px; padding: 3px; font-family: 微Y雅黑, 'Segoe UI'; border: 1px solid silver; border-collapse: collapse;" valign="top" width="178"><strong style="margin: 0px; padding: 0px;">选择?/strong></td><td style="margin: 0px; padding: 3px; font-family: 微Y雅黑, 'Segoe UI'; border: 1px solid silver; border-collapse: collapse;" valign="top" width="914"><strong style="margin: 0px; padding: 0px;">含义</strong></td></tr><tr style="margin: 0px; padding: 0px;"><td style="margin: 0px; padding: 3px; font-family: 微Y雅黑, 'Segoe UI'; border: 1px solid silver; border-collapse: collapse;" valign="top" width="178">E:first-child</td><td style="margin: 0px; padding: 3px; font-family: 微Y雅黑, 'Segoe UI'; border: 1px solid silver; border-collapse: collapse;" valign="top" width="914">匚w元素E的第一个子元素</td></tr><tr style="margin: 0px; padding: 0px;"><td style="margin: 0px; padding: 3px; font-family: 微Y雅黑, 'Segoe UI'; border: 1px solid silver; border-collapse: collapse;" valign="top" width="178">E:link</td><td style="margin: 0px; padding: 3px; font-family: 微Y雅黑, 'Segoe UI'; border: 1px solid silver; border-collapse: collapse;" valign="top" width="914">匚w所有未被点ȝ链接</td></tr><tr style="margin: 0px; padding: 0px;"><td style="margin: 0px; padding: 3px; font-family: 微Y雅黑, 'Segoe UI'; border: 1px solid silver; border-collapse: collapse;" valign="top" width="178">E:visited</td><td style="margin: 0px; padding: 3px; font-family: 微Y雅黑, 'Segoe UI'; border: 1px solid silver; border-collapse: collapse;" valign="top" width="914">匚w所有已被点ȝ链接</td></tr><tr style="margin: 0px; padding: 0px;"><td style="margin: 0px; padding: 3px; font-family: 微Y雅黑, 'Segoe UI'; border: 1px solid silver; border-collapse: collapse;" valign="top" width="178">E:active</td><td style="margin: 0px; padding: 3px; font-family: 微Y雅黑, 'Segoe UI'; border: 1px solid silver; border-collapse: collapse;" valign="top" width="914">匚w鼠标已经其上按下、还没有释放的E元素</td></tr><tr style="margin: 0px; padding: 0px;"><td style="margin: 0px; padding: 3px; font-family: 微Y雅黑, 'Segoe UI'; border: 1px solid silver; border-collapse: collapse;" valign="top" width="178">E:hover</td><td style="margin: 0px; padding: 3px; font-family: 微Y雅黑, 'Segoe UI'; border: 1px solid silver; border-collapse: collapse;" valign="top" width="914">匚w鼠标(zhn)停其上的E元素</td></tr><tr style="margin: 0px; padding: 0px;"><td style="margin: 0px; padding: 3px; font-family: 微Y雅黑, 'Segoe UI'; border: 1px solid silver; border-collapse: collapse;" valign="top" width="178">E:focus</td><td style="margin: 0px; padding: 3px; font-family: 微Y雅黑, 'Segoe UI'; border: 1px solid silver; border-collapse: collapse;" valign="top" width="914">匚w获得当前焦点的E元素</td></tr><tr style="margin: 0px; padding: 0px;"><td style="margin: 0px; padding: 3px; font-family: 微Y雅黑, 'Segoe UI'; border: 1px solid silver; border-collapse: collapse;" valign="top" width="178">E:lang(c)</td><td style="margin: 0px; padding: 3px; font-family: 微Y雅黑, 'Segoe UI'; border: 1px solid silver; border-collapse: collapse;" valign="top" width="914">匚wlang属性等于c的E元素</td></tr><tr style="margin: 0px; padding: 0px;"><td style="margin: 0px; padding: 3px; font-family: 微Y雅黑, 'Segoe UI'; border: 1px solid silver; border-collapse: collapse;" valign="top" width="178">E:enabled</td><td style="margin: 0px; padding: 3px; font-family: 微Y雅黑, 'Segoe UI'; border: 1px solid silver; border-collapse: collapse;" valign="top" width="914">匚w表单中可用的元素</td></tr><tr style="margin: 0px; padding: 0px;"><td style="margin: 0px; padding: 3px; font-family: 微Y雅黑, 'Segoe UI'; border: 1px solid silver; border-collapse: collapse;" valign="top" width="178">E:disabled</td><td style="margin: 0px; padding: 3px; font-family: 微Y雅黑, 'Segoe UI'; border: 1px solid silver; border-collapse: collapse;" valign="top" width="914">匚w表单中禁用的元素</td></tr><tr style="margin: 0px; padding: 0px;"><td style="margin: 0px; padding: 3px; font-family: 微Y雅黑, 'Segoe UI'; border: 1px solid silver; border-collapse: collapse;" valign="top" width="178">E:checked</td><td style="margin: 0px; padding: 3px; font-family: 微Y雅黑, 'Segoe UI'; border: 1px solid silver; border-collapse: collapse;" valign="top" width="914">匚w表单中被选中的radio或checkbox元素</td></tr><tr style="margin: 0px; padding: 0px;"><td style="margin: 0px; padding: 3px; font-family: 微Y雅黑, 'Segoe UI'; border: 1px solid silver; border-collapse: collapse;" valign="top" width="178">E::selection</td><td style="margin: 0px; padding: 3px; font-family: 微Y雅黑, 'Segoe UI'; border: 1px solid silver; border-collapse: collapse;" valign="top" width="914">匚w用户当前选中的元?/td></tr><tr style="margin: 0px; padding: 0px;"><td style="margin: 0px; padding: 3px; font-family: 微Y雅黑, 'Segoe UI'; border: 1px solid silver; border-collapse: collapse;" valign="top" width="178">E:root</td><td style="margin: 0px; padding: 3px; font-family: 微Y雅黑, 'Segoe UI'; border: 1px solid silver; border-collapse: collapse;" valign="top" width="914">匚w文档的根元素Q对于HTML文档Q就是HTML元素</td></tr><tr style="margin: 0px; padding: 0px;"><td style="margin: 0px; padding: 3px; font-family: 微Y雅黑, 'Segoe UI'; border: 1px solid silver; border-collapse: collapse;" valign="top" width="178">E:nth-child(n)</td><td style="margin: 0px; padding: 3px; font-family: 微Y雅黑, 'Segoe UI'; border: 1px solid silver; border-collapse: collapse;" valign="top" width="914"><span style="margin: 0px; padding: 0px; font-family: 微Y雅黑, 'Segoe UI'; color: #ff0000;"><span style="margin: 0px; padding: 0px; font-family: 微Y雅黑, 'Segoe UI'; color: #000000;">匚w其父元素的第n个子元素</span><strong style="margin: 0px; padding: 0px;">Q第一个编号ؓ(f)1</strong></span></td></tr><tr style="margin: 0px; padding: 0px;"><td style="margin: 0px; padding: 3px; font-family: 微Y雅黑, 'Segoe UI'; border: 1px solid silver; border-collapse: collapse;" valign="top" width="178">E:nth-last-child(n)</td><td style="margin: 0px; padding: 3px; font-family: 微Y雅黑, 'Segoe UI'; border: 1px solid silver; border-collapse: collapse;" valign="top" width="914">匚w其父元素的倒数Wn个子元素Q?span style="margin: 0px; padding: 0px; font-family: 微Y雅黑, 'Segoe UI'; color: #ff0000;"><strong style="margin: 0px; padding: 0px;">W一个编号ؓ(f)1</strong></span></td></tr><tr style="margin: 0px; padding: 0px;"><td style="margin: 0px; padding: 3px; font-family: 微Y雅黑, 'Segoe UI'; border: 1px solid silver; border-collapse: collapse;" valign="top" width="178">E:nth-of-type(n)</td><td style="margin: 0px; padding: 3px; font-family: 微Y雅黑, 'Segoe UI'; border: 1px solid silver; border-collapse: collapse;" valign="top" width="914">?nth-child()作用cMQ但是仅匚w使用同种标签的元?/td></tr><tr style="margin: 0px; padding: 0px;"><td style="margin: 0px; padding: 3px; font-family: 微Y雅黑, 'Segoe UI'; border: 1px solid silver; border-collapse: collapse;" valign="top" width="178">E:nth-last-of-type(n)</td><td style="margin: 0px; padding: 3px; font-family: 微Y雅黑, 'Segoe UI'; border: 1px solid silver; border-collapse: collapse;" valign="top" width="914">?nth-last-child() 作用cMQ但是仅匚w使用同种标签的元?/td></tr><tr style="margin: 0px; padding: 0px;"><td style="margin: 0px; padding: 3px; font-family: 微Y雅黑, 'Segoe UI'; border: 1px solid silver; border-collapse: collapse;" valign="top" width="178">E:last-child</td><td style="margin: 0px; padding: 3px; font-family: 微Y雅黑, 'Segoe UI'; border: 1px solid silver; border-collapse: collapse;" valign="top" width="914">匚w父元素的最后一个子元素Q等同于:nth-last-child(1)</td></tr><tr style="margin: 0px; padding: 0px;"><td style="margin: 0px; padding: 3px; font-family: 微Y雅黑, 'Segoe UI'; border: 1px solid silver; border-collapse: collapse;" valign="top" width="178">E:first-of-type</td><td style="margin: 0px; padding: 3px; font-family: 微Y雅黑, 'Segoe UI'; border: 1px solid silver; border-collapse: collapse;" valign="top" width="914">匚w父元素下使用同种标签的第一个子元素Q等同于:nth-of-type(1)</td></tr><tr style="margin: 0px; padding: 0px;"><td style="margin: 0px; padding: 3px; font-family: 微Y雅黑, 'Segoe UI'; border: 1px solid silver; border-collapse: collapse;" valign="top" width="178">E:last-of-type</td><td style="margin: 0px; padding: 3px; font-family: 微Y雅黑, 'Segoe UI'; border: 1px solid silver; border-collapse: collapse;" valign="top" width="914">匚w父元素下使用同种标签的最后一个子元素Q等同于:nth-last-of-type(1)</td></tr><tr style="margin: 0px; padding: 0px;"><td style="margin: 0px; padding: 3px; font-family: 微Y雅黑, 'Segoe UI'; border: 1px solid silver; border-collapse: collapse;" valign="top" width="178">E:only-child</td><td style="margin: 0px; padding: 3px; font-family: 微Y雅黑, 'Segoe UI'; border: 1px solid silver; border-collapse: collapse;" valign="top" width="914">匚w父元素下仅有的一个子元素Q等同于:first-child:last-child?:nth-child(1):nth-last-child(1)</td></tr><tr style="margin: 0px; padding: 0px;"><td style="margin: 0px; padding: 3px; font-family: 微Y雅黑, 'Segoe UI'; border: 1px solid silver; border-collapse: collapse;" valign="top" width="178">E:only-of-type</td><td style="margin: 0px; padding: 3px; font-family: 微Y雅黑, 'Segoe UI'; border: 1px solid silver; border-collapse: collapse;" valign="top" width="914">匚w父元素下使用同种标签的唯一一个子元素Q等同于:first-of-type:last-of-type?:nth-of-type(1):nth-last-of-type(1)</td></tr><tr style="margin: 0px; padding: 0px;"><td style="margin: 0px; padding: 3px; font-family: 微Y雅黑, 'Segoe UI'; border: 1px solid silver; border-collapse: collapse;" valign="top" width="178">E:empty</td><td style="margin: 0px; padding: 3px; font-family: 微Y雅黑, 'Segoe UI'; border: 1px solid silver; border-collapse: collapse;" valign="top" width="914">匚w一个不包含M子元素的元素Q?span style="margin: 0px; padding: 0px; font-family: 微Y雅黑, 'Segoe UI'; color: #ff0000;">文本节点也被看作子元?/span></td></tr><tr style="margin: 0px; padding: 0px;"><td style="margin: 0px; padding: 3px; font-family: 微Y雅黑, 'Segoe UI'; border: 1px solid silver; border-collapse: collapse;" valign="top" width="178">E:not(selector)</td><td style="margin: 0px; padding: 3px; font-family: 微Y雅黑, 'Segoe UI'; border: 1px solid silver; border-collapse: collapse;" valign="top" width="914">匚w不符合当前选择器的M元素</td></tr></tbody></table><h3>伪元素选择?/h3><p style="margin: 10px auto; padding: 0px; font-family: 微Y雅黑, 'Segoe UI'; text-indent: 0px;"> </p><table style="margin: 0px; padding: 0px; border-collapse: collapse; border-spacing: 0px; border: 1px solid silver; word-break: break-word; width: 553px;" border="1" cellpadding="2" cellspacing="0"><tbody style="margin: 0px; padding: 0px;"><tr style="margin: 0px; padding: 0px;"><td style="margin: 0px; padding: 3px; font-family: 微Y雅黑, 'Segoe UI'; border: 1px solid silver; border-collapse: collapse;" valign="top" width="200"><strong style="margin: 0px; padding: 0px;">选择?/strong></td><td style="margin: 0px; padding: 3px; font-family: 微Y雅黑, 'Segoe UI'; border: 1px solid silver; border-collapse: collapse;" valign="top" width="351"><strong style="margin: 0px; padding: 0px;">含义</strong></td></tr><tr style="margin: 0px; padding: 0px;"><td style="margin: 0px; padding: 3px; font-family: 微Y雅黑, 'Segoe UI'; border: 1px solid silver; border-collapse: collapse;" valign="top" width="200">E:first-line</td><td style="margin: 0px; padding: 3px; font-family: 微Y雅黑, 'Segoe UI'; border: 1px solid silver; border-collapse: collapse;" valign="top" width="351">匚wE元素内容的第一?/td></tr><tr style="margin: 0px; padding: 0px;"><td style="margin: 0px; padding: 3px; font-family: 微Y雅黑, 'Segoe UI'; border: 1px solid silver; border-collapse: collapse;" valign="top" width="200">E:first-letter</td><td style="margin: 0px; padding: 3px; font-family: 微Y雅黑, 'Segoe UI'; border: 1px solid silver; border-collapse: collapse;" valign="top" width="351">匚wE元素内容的第一个字?/td></tr><tr style="margin: 0px; padding: 0px;"><td style="margin: 0px; padding: 3px; font-family: 微Y雅黑, 'Segoe UI'; border: 1px solid silver; border-collapse: collapse;" valign="top" width="200">E:before</td><td style="margin: 0px; padding: 3px; font-family: 微Y雅黑, 'Segoe UI'; border: 1px solid silver; border-collapse: collapse;" valign="top" width="351">在E元素之前插入生成的内?/td></tr><tr style="margin: 0px; padding: 0px;"><td style="margin: 0px; padding: 3px; font-family: 微Y雅黑, 'Segoe UI'; border: 1px solid silver; border-collapse: collapse;" valign="top" width="200">E:after</td><td style="margin: 0px; padding: 3px; font-family: 微Y雅黑, 'Segoe UI'; border: 1px solid silver; border-collapse: collapse;" valign="top" width="351">在E元素之后插入生成的内?/td></tr></tbody></table></div></div><img src ="http://www.shnenglu.com/zhonghua/aggbug/209704.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/zhonghua/" target="_blank">c米</a> 2015-02-02 15:01 <a href="http://www.shnenglu.com/zhonghua/archive/2015/02/02/209704.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>?在Qt中用QAxObject来操作Excelhttp://www.shnenglu.com/zhonghua/archive/2014/01/13/205345.htmlc米c米Mon, 13 Jan 2014 09:23:00 GMThttp://www.shnenglu.com/zhonghua/archive/2014/01/13/205345.htmlhttp://www.shnenglu.com/zhonghua/comments/205345.htmlhttp://www.shnenglu.com/zhonghua/archive/2014/01/13/205345.html#Feedback0http://www.shnenglu.com/zhonghua/comments/commentRss/205345.htmlhttp://www.shnenglu.com/zhonghua/services/trackbacks/205345.html阅读全文

c米 2014-01-13 17:23 发表评论
]]>
【{】Qt应用E序自动重启(雉散散)http://www.shnenglu.com/zhonghua/archive/2014/01/09/205259.htmlc米c米Thu, 09 Jan 2014 07:13:00 GMThttp://www.shnenglu.com/zhonghua/archive/2014/01/09/205259.htmlhttp://www.shnenglu.com/zhonghua/comments/205259.htmlhttp://www.shnenglu.com/zhonghua/archive/2014/01/09/205259.html#Feedback0http://www.shnenglu.com/zhonghua/comments/commentRss/205259.htmlhttp://www.shnenglu.com/zhonghua/services/trackbacks/205259.html
  • 老有人问如何让Qt的应用程序自动重启,E微写一点,也顺便理理自q思\ 2011.10.26

自动重启Q也是退出当前进E,启动一个新的进E。于是,先看E序如何退?/p>

退?/h2>

QtE序的一般结构如下:(x)

int main(int argc, char** argv) {     QApplication app(argc, argv);     Widget w;     w.show()     return app.exec(); }

最后一句启动了ȝE的事g循环。而要退出程序,是要退个事件@环,使main函数q回?/p>

如何退出?

正确方式Q?/p>

  • QCoreApplication::exit(int);

它还有一个马?/p>

  • QCoreApplication::quit();

对于QApplication来说Q它有一个常用的属?/p>

quitOnLastWindowClosed

所以,当最后一个窗口关闭时Q它可以自动调用前面的exit()

而至于关闭窗口呢Q我们还可以使用

  • QApplication::closeAllWindows()

注:(x)一般来_(d)对于多个H口的程序,调用q个?x)比直接调用quit要好。因L(fng)口可以接受到Close事g?/p>

启动外部E序

在Qt中,做这个工作的非QProcess莫属了,要启动当前程序的另一个进E,有要使二者没?父子"关系。恩

QProcess::startDetached(qApp->applicationFilePath(), QStringList());

可是Qؓ(f)什么不写成下面q样Q?/p>

QProcess::startDetached(qApp->applicationFilePath());

当然Q如果\径中不包含空|q个也可以工作?/p>

重新启动1

现在单了Q要重新启动Q只需要调?/p>

void XXX::onXXX() {     qApp->quit();     QProcess::startDetached(qApp->applicationFilePath(), QStringList()); }

或者:(x)

void XXX::onXXX() {     qApp->closeAllWindow();     QProcess::startDetached(qApp->applicationFilePath(), QStringList()); }

重新启动2

管没什么好处,但有时候,我似乎更喜欢q样写:(x)

void XXX::onXXX() {     qApp->exit(773) }

然后main函数Ҏ(gu)

int main(int argc, char** argv) { ....     int ret = app.exec();     if (ret == 773) {         QProcess::startDetached(qApp->applicationFilePath(), QStringList());         return 0;     }     return ret; }

q里面我用了一个魔敎ͼ(x)773Q没什么特别含义,只是因ؓ(f)我觉?/p>

773 = 'r'+'e'+'s'+'t'+'a'+'r'+'t'  ==>restart

上班了,写到这?..



c米 2014-01-09 15:13 发表评论
]]>
[转]一U用QThreadU程的新Ҏ(gu)QObject::moveToThreadhttp://www.shnenglu.com/zhonghua/archive/2013/12/11/204717.htmlc米c米Wed, 11 Dec 2013 09:08:00 GMThttp://www.shnenglu.com/zhonghua/archive/2013/12/11/204717.htmlhttp://www.shnenglu.com/zhonghua/comments/204717.htmlhttp://www.shnenglu.com/zhonghua/archive/2013/12/11/204717.html#Feedback0http://www.shnenglu.com/zhonghua/comments/commentRss/204717.htmlhttp://www.shnenglu.com/zhonghua/services/trackbacks/204717.html阅读全文

c米 2013-12-11 17:08 发表评论
]]>
QTableView和QTableWidget页功能实现http://www.shnenglu.com/zhonghua/archive/2013/11/17/204288.htmlc米c米Sun, 17 Nov 2013 09:15:00 GMThttp://www.shnenglu.com/zhonghua/archive/2013/11/17/204288.htmlhttp://www.shnenglu.com/zhonghua/comments/204288.htmlhttp://www.shnenglu.com/zhonghua/archive/2013/11/17/204288.html#Feedback0http://www.shnenglu.com/zhonghua/comments/commentRss/204288.htmlhttp://www.shnenglu.com/zhonghua/services/trackbacks/204288.html

 转自Q?a style="text-decoration: none; color: #084487;">http://indure.chinaunix.com/space.php?uid=25520556&do=blog&id=2211406

       主要使用QTableView和QTableWidget中的三个函数实现

QTableViewQ:(x)verticalScrollBar()->setSliderPosition()Q?span style="word-wrap: normal; word-break: normal; line-height: 18px;">  //讄当前滑动条的位置

QTableViewQ:(x)verticalScrollBar()->maximum();             //滑动条能Ud的最大位|?/span>

QTableViewQ:(x)verticalScrollBar()->value();                   //获得当前滑动条的位置

 

 

  1. static int nCurScroller=0; //页时的当时滑动条位|?br />
  2. static int pageValue = 10; // 一|C条?br />

  3. void SplayHisForm::createHisForm()
  4. {
  5.                 …….
  6.     hisTableWidget = new QTableWidget;
  7.     hisTableWidget->setSelectionMode(QAbstractItemView::SingleSelection);
  8.     hisTableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);
  9.             …….
  10. }

  11. /***下一?span style="word-wrap: normal; word-break: normal; line-height: 21px; color: #0000cc;">***/
  12. void SplayHisForm::nextPageHis()
  13. {
  14.     int maxValue = hisTableWidget->verticalScrollBar()->maximum(); // 当前SCROLLER最大显C?5
  15.     nCurScroller = hisTableWidget->verticalScrollBar()->value(); //获得当前scroller?br />

  16.     if(nCurScroller<maxValue)
  17.         hisTableWidget->verticalScrollBar()->setSliderPosition(pageValue+nCurScroller);
  18.     else
  19.         hisTableWidget->verticalScrollBar()->setSliderPosition(0);
  20. }

  21. /***上一?span style="word-wrap: normal; word-break: normal; line-height: 21px; color: #0000cc;">***/
  22. void SplayHisForm::prePageHis()
  23. {
  24.     int maxValue = hisTableWidget->verticalScrollBar()->maximum(); // 当前SCROLLER最大显C?5
  25.     nCurScroller = hisTableWidget->verticalScrollBar()->value();

  26.     if(nCurScroller>0)
  27.         hisTableWidget->verticalScrollBar()->setSliderPosition(nCurScroller-pageValue);
  28.     else
  29.         hisTableWidget->verticalScrollBar()->setSliderPosition(maxValue);
  30. }

 QTableView和QTableWidget页功能实现



c米 2013-11-17 17:15 发表评论
]]>
差点忘了。记录一下。关于QT国际?/title><link>http://www.shnenglu.com/zhonghua/archive/2013/09/12/203192.html</link><dc:creator>c米</dc:creator><author>c米</author><pubDate>Thu, 12 Sep 2013 07:59:00 GMT</pubDate><guid>http://www.shnenglu.com/zhonghua/archive/2013/09/12/203192.html</guid><wfw:comment>http://www.shnenglu.com/zhonghua/comments/203192.html</wfw:comment><comments>http://www.shnenglu.com/zhonghua/archive/2013/09/12/203192.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/zhonghua/comments/commentRss/203192.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/zhonghua/services/trackbacks/203192.html</trackback:ping><description><![CDATA[vs生成的工E??<div><span style="color: #333333; font-family: Arial; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 26px; orphans: auto; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: #ffffff; display: inline !important; float: none;">qmake -project 生成pro<br />在pro里增?/span><br />TRANSLATIONS += myapp.ts<span style="color: #333333; font-family: Arial; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 26px; orphans: auto; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: #ffffff; display: inline !important; float: none;"><br /><br /><div><pre id="recommend-content-406217660" mb-10"="" style="margin: 0px 0px 10px; padding: 0px; font-family: arial, 'courier new', courier, 宋体, monospace; white-space: pre-wrap; word-wrap: break-word; color: #333333; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 24px; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: #f1fedd;">然后命o(h)行输入lupdate ***.pro<br />打开.ts文gQ一条一条的译是?br />最后lrelease ***.pro</pre></div><br /></span></div><img src ="http://www.shnenglu.com/zhonghua/aggbug/203192.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/zhonghua/" target="_blank">c米</a> 2013-09-12 15:59 <a href="http://www.shnenglu.com/zhonghua/archive/2013/09/12/203192.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Qt Tooltip详解 http://www.shnenglu.com/zhonghua/archive/2013/06/05/200817.htmlc米c米Wed, 05 Jun 2013 08:41:00 GMThttp://www.shnenglu.com/zhonghua/archive/2013/06/05/200817.htmlhttp://www.shnenglu.com/zhonghua/comments/200817.htmlhttp://www.shnenglu.com/zhonghua/archive/2013/06/05/200817.html#Feedback0http://www.shnenglu.com/zhonghua/comments/commentRss/200817.htmlhttp://www.shnenglu.com/zhonghua/services/trackbacks/200817.htmlQt4中的tooltip与win32中的tooltip有很多不一L(fng)地方Q下面来ȝ一下?br />
一是不能直在堆或栈中生成QToolTip对象。因为其构造函Cؓ(f)U有?br />二是从widget获取的tooltip不是tooltip对象Q而是tooltip中的文本?br />三是tooltip跟本不是一个widget。所以不把它当作widget用?br />四是tooltipcL一个静态类Q所以跟本不必生成tooltip对象可以用?br />五是tooltipcM能被定制Q所以不能从它生各UŞ状的tooltipH口?br />
QtoolTip有两U用方式:(x)
一是静态tooltip。比如ؓ(f)一个widget讄一个不变的tooltip文本Q当鼠标UML昄tooltip。此时很单,只需调用widget的setToolTip()讄文本卛_?br />二是动态tooltip。也是一个widget上的tooltip是变化的。此旉要重写QWidget::event()函数Q在里面判断事gcdQ如果是QEvent::ToolTipQ则控制昄的文本的内容Q即可实现动态tooltip?br />

看如下代码示例:(x)

  1. bool SortingBox::event(QEvent *event)  
  2.  {  
  3.      if (event->type() == QEvent::ToolTip) {  
  4.          QHelpEvent *helpEvent = static_cast<QHelpEvent *>(event);  
  5.          int index = itemAt(helpEvent->pos());  
  6.          if (index != -1) {  
  7.              QToolTip::showText(helpEvent->globalPos(), shapeItems[index].toolTip());  
  8.          } else {  
  9.              QToolTip::hideText();  
  10.              event->ignore();  
  11.          }  
  12.   
  13.          return true;  
  14.      }  
  15.      return QWidget::event(event);  
  16.  }  
可以看到Q是调用 QtoolTip::showText()在某个位|显Ctooltip文本?br />
那么Q如果想随时昄tooltipQ该怎么做呢Q其实十分简单:(x)直接调用QToolTip::showText()Q指定要昄的位|就行了。因为tooltipcȝ函数跟本q当于全局函数而已?br />
呵呵Q其实很单,但从win32转过来的人,觉得真别扭?/div>

c米 2013-06-05 16:41 发表评论
]]>
QT4 thread和QObject关系详解 http://www.shnenglu.com/zhonghua/archive/2013/06/05/200816.htmlc米c米Wed, 05 Jun 2013 08:40:00 GMThttp://www.shnenglu.com/zhonghua/archive/2013/06/05/200816.htmlhttp://www.shnenglu.com/zhonghua/comments/200816.htmlhttp://www.shnenglu.com/zhonghua/archive/2013/06/05/200816.html#Feedback0http://www.shnenglu.com/zhonghua/comments/commentRss/200816.htmlhttp://www.shnenglu.com/zhonghua/services/trackbacks/200816.htmlQThread从QObjectz。它发出信号来表明线E开始了或结束了。ƈ且也提供了几个槽?br />
更有的是,QObject可以在多个程中同时用,可以发出信号l另外线E的槽,以及(qing)?#8220;zd”另外U程中的对象邮寄事g。以上之所以能发生Q是因ؓ(f)每个初程都被允许拥有它自q事g循环?br />

QObject 重入

QObject 是可重入的。它大多数非界面zc,比如QTimer,QTcpSocket,QFtp,和QProcessQ也都是可重入的Q得在多个U程中同时?q些cL为可能。但是注意这些类被设计ؓ(f)在一个线E中创徏和用;在一个线E中创徏一个对象然后在另一个线E中调用它的Ҏ(gu)是不能保证一定能工作的。有?个限制条件要注意Q?br /> QObject的儿子必d创徏它爹的线E中创徏。这表示Q你永远不能QThread对象(this)作ؓ(f)parent传给在此thread创徏的对象,因ؓ(f)U程对象自己是在另一个线E中创徏的?br /> 事g驱动的对象应该只用于一个线E中。这一条尤其应用于定时器和|络模块。比如,你不能在创徏对象之外的线E中启动一个定时器或连接一个socket?br /> 你必M证在U程中创建的一切对象在QThread被删除之前被删除。这可以通过在你的run()实现中在中创徏对象来轻松搞定?br />
管QObject是可重入的,但GUIc,其是QWidget和它所有的zcMQ都不是可重入的。它们只能在ȝE中使用。QCoreApplication::exec()必须在这个线E中调用?br />
在实际应用中Q最好的方式是把耗时的计放CU程中外q行Q完成后通知ȝE显C结果?br />

Pre-Thread Event循环

?个线E都可以有它自己的事件@环。初始的U程使用QCoreApplication::exec()来开始它的事件@环;其它的线E可以?QThread::exec()来启动@环。就像QCoreApplicationQQThread也提供了一个exit(int)Ҏ(gu)和一?quit()槽?br />
U程中的事g循环使得在线E中使用依靠消息循环的非GUI的QTcL为可能(比如QTimer,QTcpSocket,QProcessQ。它也得从MU程q接信号C个线E的槽成为可能。这在下面的“信号和槽I越U程”一节中有详l解释?br />
一个QObject实例在那个线E中创徏Q就叫做“z?#8221;在那个线E中。给q个对象的事件们通过U程的事件@环派发。一个QObject对象所“zd”的线E通过QObject::thread()可以取得?br />
?意在QApplication之前创徏的QObject调用QObject::thread()?x)返?.q意味着ȝE将只ؓ(f)q些对象处理邮寄的事Ӟ 对于没有U程的对象,其它的事件处理跟本不?x)发生。用QObject::moveToThread()Ҏ(gu)来改变对象(和它儿子们)的线E(如果一个对 象有爹,它就不能被移动到另外U程Q?br />
在拥有对象之外的U程中调用删除对象是不安全的Q除非你能保证在被删除时不在处理事g。但可以使用 QObject::deleteLater()Q它?x)寄出DeferedDelete事gQ对象的U程的事件@环最l会(x)抓住它。默认下Q拥?Qobject的线E就是创建QObject的线E,但在QObject::moveToTread()之后变了?br />
如果没有事g循环Q事件将不能传给对象。比如,如果你在一个线E中创徏一个QTimer对象Q但是没有再调用exec()Q那么QTimer永不能触发timeout()信号。deleteLater()也不再能工作。(q些也同样适用于主U程。)

你可以在MU程中用QCoreApp:postEvent()手动向Q何对象邮寄事件。事件将被对象所在线E的事g循环自动z֏?br />
?件过滤器被所有的U程所支持Q但有个限制条gQ监视对象必M被监视对象位于同一个线E中。同?的,QCoreApplication::sendEvent()Q不同于 QCoreApplication::postEvent()Q只能在同一U程中的对象之间发送事件?br />

从另外线E访问QObject子类


QObject和它所有的子类都不是线E安全的Q这也包含整个事件派送系l。要CQ当你从另外U程讉K对象Ӟ事g循环可能zN事件到你的QObject子类?br />
如果你调用一个非本线E的QObject的子cȝ函数q且q个对象可能接收事gQ你必须用mutex保护所有对你的QObject子类的内部数据的讉KQ否则,你可能体验的什么叫崩溃?br />
像其它对象QQThread对象“z?#8221;在创建它的线E中Q而不是它自己所代表的线E中。通常在你的QThread子类中提供槽是不安全的,除非你用mutex保护成员变量?br />
另一斚wQ你可以从你的QThread tun()中安全的发出信号Q因Z号发是U程安全的?br />

I越U程的信号和槽们


Qt支持如下信号Q槽q接cdQ?br /> 自动q接Q默认)Q 如果信号是从接收对象所在的U程发出的,其行Z“直接q接”相同。否则,其行Z“队列q接”相同?br /> 直接q接Q 当信号发出,槽会(x)被立马调用。此槽在发出者的U程中执行,而不一定是接收者所在的U程?br /> 队列q接Q 当控制返回到接收者所在线E的事g循环时调用。槽在接收者的U程中执行?br /> d的队列连接- 槽像“队列q接”那样被调用,除了一点:(x)当前U程?x)阻塞住直到槽返回。注Q在同一U程中用此cd的连接将D死锁Q?br /> 唯一q接Q 行ؓ(f)?#8220;自动q接”相同Q但q接必须在无复制品时才能建立。也是Q如果在相同的两个对象之间已l徏立了同一个信号到同一个槽的连接,那么q接׃能徏立,connect()q回false?br />
q接cd可以通过lconnect()传递一个额外的参数来指定。注意当接收者和发送者位于不同的U程中时Q?#8220;直接q接”Q如果事件@环是q行于接收者的U程中,此时是不安全的,同理调用位于另外U程的对象的M函数都是不安全的?br />
QObject::connect()本n是线E安全的?/div>

c米 2013-06-05 16:40 发表评论
]]>
Qt 动画详解?http://www.shnenglu.com/zhonghua/archive/2013/06/05/200815.htmlc米c米Wed, 05 Jun 2013 08:40:00 GMThttp://www.shnenglu.com/zhonghua/archive/2013/06/05/200815.htmlhttp://www.shnenglu.com/zhonghua/comments/200815.htmlhttp://www.shnenglu.com/zhonghua/archive/2013/06/05/200815.html#Feedback0http://www.shnenglu.com/zhonghua/comments/commentRss/200815.htmlhttp://www.shnenglu.com/zhonghua/services/trackbacks/200815.html

动M弄到一?/strong>


一个应用通常包含不止一个动甅R例如,你可能想同时Ud多个囑Şitem也可能顺序的一个接一个的Ud?br />QanimationGroup 的子cM(QSequentialAnimationGroup和QParallelAnimationGroup)是其它动ȝ容器Q所以这些动L?以ƈ行也可以串行。QAnimationGroup是一个非属性动ȝ例子Q但是它定期的收到时间改变的通知。这使得它可以把旉改变传输l所包含的动?们,从而控制何时播N些动M?br />
让我们看一下用QSequentialAnimatoinGroup和QParallelAnimationGroup的代码示例?br />QPushButton *bonnie = new QPushButton("Bonnie");
bonnie->show();
QPushButton *clyde = new QPushButton("Clyde");
clyde->show();
QPropertyAnimation *anim1 = new QPropertyAnimation(bonnie, "geometry");
// Set up anim1
QPropertyAnimation *anim2 = new QPropertyAnimation(clyde, "geometry");
// Set up anim2
QParallelAnimationGroup *group = new QParallelAnimationGroup;
group->addAnimation(anim1);
group->addAnimation(anim2);
group->start();
一个ƈ行group在同一时刻播放多个动画。对start()的调用将启动它所l治的所有的动画?br />
QPushButton button("Animated Button");
button.show();
QPropertyAnimation anim1(&button, "geometry");
anim1.setDuration(3000);
anim1.setStartValue(QRect(0, 0, 100, 30));
anim1.setEndValue(QRect(500, 500, 100, 30));
QPropertyAnimation anim2(&button, "geometry");
anim2.setDuration(3000);
anim2.setStartValue(QRect(500, 500, 100, 30));
anim2.setEndValue(QRect(1000, 500, 100, 30));
QSequentialAnimationGroup group;
group.addAnimation(&anim1);
group.addAnimation(&anim2);
group.start();
QsequentialAnimationGroup序的播攑֮的动M。它在上一个完成时按顺序播放下一个?br />

既然一个动ȝ本就是一个动ȝQ你可以把它d到其它组中。如此,你可以徏立v一个动L(wi)?br />


动画和状?/strong>
?使用状态机Q我们可以用一个QSignalTransition或QEventTransitioncd状态{换时q接一个或多个动画。这些类都是?QAbstractTransitionz的,它们定义了简易的函数addAnimation()Q得能够添加一个或多个动画Q在状态{换时启动q些 动画?br />
我们q可能连接属性与状态,而不是手动设|开始与l束倹{下面是完整的代码,演示了动M个QPushButton的geometry属性?br />
QPushButton *button = new QPushButton("Animated Button");
button->show();
QStateMachine *machine = new QStateMachine;
QState *state1 = new QState(machine);
state1->assignProperty(button, "geometry", QRect(0, 0, 100, 30));
machine->setInitialState(state1);
QState *state2 = new QState(machine);
state2->assignProperty(button, "geometry", QRect(250, 250, 100, 30));
QSignalTransition *transition1 = state1->addTransition(button,
SIGNAL(clicked()), state2);
transition1->addAnimation(new QPropertyAnimation(button, "geometry"));
QSignalTransition *transition2 = state2->addTransition(button,
SIGNAL(clicked()), state1);
transition2->addAnimation(new QPropertyAnimation(button, "geometry"));
machine->start();

c米 2013-06-05 16:40 发表评论
]]>
Qt 动画详解一 http://www.shnenglu.com/zhonghua/archive/2013/06/05/200814.htmlc米c米Wed, 05 Jun 2013 08:39:00 GMThttp://www.shnenglu.com/zhonghua/archive/2013/06/05/200814.htmlhttp://www.shnenglu.com/zhonghua/comments/200814.htmlhttp://www.shnenglu.com/zhonghua/archive/2013/06/05/200814.html#Feedback0http://www.shnenglu.com/zhonghua/comments/commentRss/200814.htmlhttp://www.shnenglu.com/zhonghua/services/trackbacks/200814.html

概述

Qt动画架构中的主要cd下图所C:(x)



动画框架由基c?/span>QAbstractAnimation和它的两个儿?/span>QVariantAnimation?/span>QAnimationGroupl成?/span>QAbstractAnimation是所有动ȝ的祖宗。它包含了所有动ȝ基本属性。比如开始,停止和暂停一个动ȝ能力。它也可以接收时间改变通知?/span>


动画框架又进一步提供了QProertyAnimationcR它l承?/span>QVariantAnimationq对某个Qt属性(它须?/span>Qt?#8221;元数据对象系l?#8221;的一部分Q见http://blog.csdn.net/nkmnkm/article/details/8225089Q执行动甅R此cd属性执行一个宽松曲U插倹{所以当你想dM个值时Q你可以把它声明Z个属性,q且让你的类成ؓ(f)一?/span>QObject。这l予我们极大的自由度来动画那些已存在?/span>widget和其?/span>QObject?/span>


复杂的动d以通过建立一?/span>QAbstractAnimation的树(wi)来构建。这个树(wi)通过使用QAnimationGroups来创建,QAnimationGroups作ؓ(f)其它动画的容器。注意动ȝ也是?/span>QAbstractAnimationz的,所以动ȝ可以再包含其它动ȝ?/span>


动画框架可以单独使用Q同时也被设计ؓ(f)状态机框架的一部分。状态机提供了一个特定的状态可以用来播攑֊甅R在q入或退出某个状态时QState也可以设|属性们Qƈ且这个特定的动画状态将在指?/span>QPropertyAnimation时给予的g间做插D。后面我们要q一步介l此问题?/span>


在场景的背后Q动画被一个全局定时器收集,q个定时器发?/span>update到所有的正在播放的动M?/span>

动画框架中的cM

QAbstractAnimation

所有动ȝ的基c?/span>

QAnimationGroup

动画l的基类

QEasingCurve

控制动画的宽松曲U类

QParallelAnimationGroup

q行动画l类

QPauseAnimation

串行动画l类的暂停类

QPropertyAnimation

动画Qt属性的c?/span>

QSequentialAnimationGroup

串行动画l类

QTimeLine

控制动画的时间线c?/span>

QVariantAnimation

各动ȝ的虚基类


动画Qt属性们

如前面所ԌQPropertyAnimationcd以修?/span>Qt属性们。要动画一个|需要用此cR实际上Q它的父c,QVariantAnimationQ是一个虚拟类Q不能被直接使用?/span>


我们选择动画Qt属性的一个主要理由是Qt属性ؓ(f)我们提供了自己动d存在的类的自由度。尤其是QWidgetc(我们也可以把它嵌入到一?/span>QGraphicsView中)h很多属性表C其bounds,colors{等。让我们看一个小例子Q?/span>

  1. QPushButton button("Animated Button");  
  2. button.show();  
  3. QPropertyAnimation animation(&button, "geometry");  
  4. animation.setDuration(10000);  
  5. animation.setStartValue(QRect(0, 0, 100, 30));  
  6. animation.setEndValue(QRect(250, 250, 100, 30));  
  7. animation.start();  

q段代码把按钮?/span>10U种内从屏幕的左上角Ud?/span>(250,250)处?/span>

上面的例子D在开始值和l束g间做U性插倹{还可以在开始和l束g间设||插D就?x)经q这些点?/span>


  1. QPushButton button("Animated Button");  
  2. button.show();  
  3. QPropertyAnimation animation(&button, "geometry");  
  4. animation.setDuration(10000);  
  5. animation.setKeyValueAt(0, QRect(0, 0, 100, 30));  
  6. animation.setKeyValueAt(0.8, QRect(250, 250, 100, 30));  
  7. animation.setKeyValueAt(1, QRect(0, 0, 100, 30));  
  8. animation.start();  

在此例中Q动d按钮?U中内弄?250,250)处,然后?U种内又弄回原位。移位是在这些点中间以线性插D行的?/p>


?也有可能动画一个QObject的|虽然q些值ƈ没有被声明ؓ(f)Qt属性。唯一的要求就是这个值具有一个setter。之后你可以从这个类z子类从而包 含这些值ƈ且声明一个用这个setter的属性。注意每个Qt属性都需要有一个getterQ所以你需要提供一个getterQ如果它不存在的话?/p>

  1. class MyGraphicsRectItem : public QObject, public QGraphicsRectItem  
  2. {  
  3.     Q_OBJECT  
  4.     Q_PROPERTY(QRectF geometry READ geometry WRITE setGeometry)  
  5. };  

在上例中Q我们派生了QGraphicsRectItemq定义了一个geometry属性。我们现在可以动画这个widget的geometry了,即QGraphicsRectItem没有提供geometry属性?/p>

动画和图形视图框?/span>

当你惛_?/span>QGraphicsItemsQ你也要?/span>QPropertyAnimation。然而,QGraphicsItem不是?/span>QObjectz的。一个好的解x案是z要动ȝ囑Şitem。派生类也要?/span>QObjectz。这PQPropertyAnimation可以被用于QGraphicsItems了?/span>

  1. class Pixmap : public QObject, public QGraphicsPixmapItem  
  2. {  
  3.     Q_OBJECT  
  4.     Q_PROPERTY(QPointF pos READ pos WRITE setPos)  
  5.     ...  

如上一节中所讲的Q我们需要定义希望去动画的属性?/span>

注意Q?/span>QObject必须是承中的第一个,因ؓ(f)元数据对象系l需要这样做?/span>

宽松曲线

QPropertyAnimation在属性的开始值和l束g间执行一个插D。除了向动画d更多的关键值外Q你q可以用一个宽松曲Uѝ宽松曲U描qC一个在0?/span>1之间插值的速度变化的函敎ͼ如果你想控制一个动ȝ速度而不改变插值的路径Ӟ非常有用?/span>


  1. QPushButton button("Animated Button");  
  2. button.show();  
  3. QPropertyAnimation animation(&button, "geometry");  
  4. animation.setDuration(3000);  
  5. animation.setStartValue(QRect(0, 0, 100, 30));  
  6. animation.setEndValue(QRect(250, 250, 100, 30));  
  7. animation.setEasingCurve(QEasingCurve::OutBounce);  
  8. animation.start();  

q里Q动d按照一个曲U进行,q个曲线使得动画像一个蟩动的皮球从开始位|蟩到结束位|?/span>QEasingCurveh一个大曲线集合Q你可以从里面选择一个。它们被定义?/span>QEasingCurve::Type枚D。如果你需要不一L(fng)曲线Q你也可以自己实C个,然后注册?/span>QEasingCurve?/span>



c米 2013-06-05 16:39 发表评论
]]>
þԭavapp| 91Ʒ91þþþþ | ݺɫþۺ| þþƷվ| þĻƷһ| þ91Ʒ91| þþƷ99þ޶| AƷһþ | þþƷҹɫA| 2021¾þþӾƷ| 97þþƷһ| þѴƬ| Ʒþþþþù˽| þۺϾþ| ۺϾþϵ| ɫþþþۺ | Ʒtvþþþþþ| ޹㽶ˬAVƬþ | þѿaëƬ| 91þþþþۺ| þùAV䡪ٶ| þþþӰԺŮ | Ʒ99þþþ| 7777þþùƷ| ھƷþþþþþɬ| ξþ99ƷþþþþС˵| þŷ޹ۺ| 99þùѸ| ˾þô߽av| þþþAV| Ʒһþò | þˬˬAVƬ| þþþƷ鶹| ƷþþĻ| þĻԴվ| ޹þ| Ʒvaþþþþþ| þۺϾþùɫ| þþ99Ʒһ| ˾þ111վ| ԭƷ99þþƷ66|