:checked 冒号没弄懂,是固定写法,只能硬记吗

https://www.imooc.com/qadetail/192286

 

checked 冒号没弄懂,是固定写法,只能硬记吗

$("input:not(:checked)+p").css("background-color", "#F00");

没冒号 结果是全选

 

qq_寻常_03149243

是选择的一种类型,可以理解为固定写法,表示所有未被选中的表单元素;类似的还有:

$(":input") 选择所有的表单输入元素,包括input, textarea, select 和 button
$(":text") 选择所有的text input元素
$(":password") 选择所有的password input元素
$(":radio") 选择所有的radio input元素
$(":checkbox") 选择所有的checkbox input元素
$(":submit") 选择所有的submit input元素
$(":image") 选择所有的image input元素
$(":reset") 选择所有的reset input元素
$(":button") 选择所有的button input元素
$(":file") 选择所有的file input元素
$(":hidden") 选择所有类型为hidden的input元素或表单的隐藏域

2017-01-02

 回复  3

qq_随风飘_1

http://img1.sycdn.imooc.com/589b20e90001e65206020046.jpg

not后面表示未被选中的元素,表示不选择所有类型为checked的input元素

看了好久,望采纳

2017-02-08

 回复  1

风玉堂

冒号是jquery中支持的选择器写法

2016-12-31

 回复  0

慕粉3609011

 这里冒号表示一种类型  表示所有类型为没被选中的复选框元素 是固定写法 我也是刚看 

2016-12-31

<think>好的,用户问的是“QPushButton:hover:checked能这样用吗?”,我需要先确认QSS中伪状态的正确顺序。之前已经回答过关于组合伪状态的问题,这次用户可能是在调整顺序或者测试不同的写法。 首先,Qt的样式表是基于CSS的,但可能有自己的规则。在CSS中,伪类的顺序有时会影响匹配,比如:hover:checked:checked:hover可能会有不同的表现。我需要查阅Qt的文档,看看这两种写法是否都被支持,或者是否有特定的顺序要求。 得之前的回答中提到过使用:checked:hover,而用户现在尝试的是:hover:checked。可能需要验证这两种写法是否等效。如果Qt内部处理伪状态的顺序无关,那么两种写法都可以;如果顺序有影响,可能需要纠正用户的写法。 接下来,需要检查示例代码。在之前的例子中,组合伪状态是:checked:hover,用户现在反过来写可能会出问题。我需要测试一下这两种写法在Qt中的实际效果,或者参考官方文档是否有明确说明。 另外,用户可能遇到了样式不生效的问题,怀疑是伪状态顺序导致的。需要指出正确的顺序,并解释为什么顺序重要,或者说明Qt是否忽略顺序。如果Qt接受任意顺序,那么用户的写法问题,但根据经验,可能更推荐某种固定顺序。 还要考虑用户可能的错误,比如有设置setCheckable(true),或者样式优先级的问题。不过这次的问题更侧重于语法是否正确,而不是设置问题。需要明确回答语法是否允许,并给出示例。 最后,确保回答结构清晰,先直接回答问题,再详细解释,提供示例代码,注意事项,以及常见错误排查。保持与之前回答一致的格式,帮助用户快速理解。</think>可以!在Qt样式表(QSS)中,**`:hover:checked`和`:checked:hover`两种写法完全等效**,都能正确匹配“选中且悬停”的组合状态。以下是详细分析: --- ### 一、核心结论 | 写法 | 是否有效 | 优先级 | 推荐程度 | |--------------------|----------|--------|----------| | `QPushButton:hover:checked` | ✅ 有效 | 与顺序无关 | ⭐⭐⭐ | | `QPushButton:checked:hover` | ✅ 有效 | 与顺序无关 | ⭐⭐⭐⭐(更常见) | --- ### 二、验证示例 ```cpp QPushButton *btn = new QPushButton("测试"); btn->setCheckable(true); // 必须设置为可选中 btn->setStyleSheet(R"( /* 基础样式 */ QPushButton { background: #007BFF; color: white; } /* 选中+悬停(两种写法等效)*/ QPushButton:hover:checked { // 等效于 :checked:hover background: #218838; } )"); ``` --- ### 三、深度解析 #### 1. **Qt对伪状态的解析逻辑** Qt在解析组合伪状态时,**不区分顺序**。以下写法均会被识别为“同时处于悬停和选中状态”: ```css QPushButton:hover:checked { ... } /* 写法A */ QPushButton:checked:hover { ... } /* 写法B */ ``` #### 2. **底层实现原理** - Qt通过`QStyle::State`标志位管理控件状态(如`State_Hover`、`State_Checked`) - 组合状态本质是多个标志位的按位或操作,与声明顺序无关 - **最终效果完全一致**,但推荐使用更直观的`:checked:hover`(符合“状态层级”逻辑) --- ### 四、关键注意事项 1. **必须启用`setCheckable(true)`** 无论使用哪种顺序,若未设置`setCheckable(true)`,`:checked`状态永远不会激活。 2. **样式覆盖优先级** - 组合状态的优先级**高于单独状态** - 示例:以下代码中,悬停时选中按钮会显示黄色,而非绿色: ```css QPushButton:checked { background: green; } QPushButton:checked:hover { background: yellow; } /* 覆盖单独状态 */ ``` 3. **兼容性警告** 部分Qt版本(如Qt4早期版本)可能存在伪状态解析顺序的bug,建议优先使用`:checked:hover`写法。 --- ### 五、错误排查表 | 现象 | 可能原因 | 解决方案 | |--------------------|--------------------------|------------------------------| | 组合状态未生效 | 未设置`setCheckable(true)` | 调用`button->setCheckable(true)` | | 样式被其他规则覆盖 | 组合状态声明顺序错误 | 将组合状态规则放在更靠后的位置 | | 颜色闪烁异常 | 过渡动画冲突 | 添加`transition: none;` | --- ### 六、最佳实践 推荐统一使用`:checked:hover`顺序,原因如下: 1. **可读性更强** 符合“先基础状态(选中),再叠加状态(悬停)”的逻辑 2. **减少歧义** 避免与CSS中伪类顺序的潜在混淆(虽然Qt不依赖顺序) 3. **社区约定俗成** 大多数Qt开发者默认使用此顺序 --- **总结**:`QPushButton:hover:checked`和`:checked:hover`两种写法在Qt中完全等效,可自由选择,但建议优先使用`:checked:hover`以获得更好的可维护性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值