qss 使用hover效果不能实现的奇怪问题

在使用QSS设置按钮样式时,遇到空格导致预期效果未实现的问题,通过移除空格解决了该问题。分享解决过程及可能原因。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一个按钮的样式:

QPushButton{
	border-style: outset;
    border-width: 1px;
    border-radius: 2px;
    border-color: #6fba14;
	background-color:#6ac010;
	height:24px;
	width:80px;
	color:#ebf3e3;
}

QPushButton : hover{
	background-color:#80da01;color:#fefffe; top: 5px; left: 10px;
}

怎么都达到不了效果,郁闷很久后,将QPhushdown :  hover 中间的空格去除后发现居然实现了预想效果。


真的很郁闷。 但不知道是不是只有我一个人遇到这样的问题,是QSS 不支持空格吗?请各位大牛高人指点 谢谢

### 回答1: 你可以在 qtextedit 的 QSS 样式表中添加属性 `pointer-events: none` 来禁用其编辑功能。例如: ```css QTextEdit { pointer-events: none; } ``` 这会使 qtextedit 的整个区域都不能触发事件,因此用户也不能通过鼠标或键盘编辑它。如果你想仅在特定的情况下禁用编辑功能,你可以使用一个类选择器并应用这个属性,例如: ```css QTextEdit.readonly { pointer-events: none; } ``` 然后,你可以使用 `setReadOnly(true)` 函数来将 qtextedit 设置为只读状态,例如: ```cpp ui->textEdit->setReadOnly(true); ``` 这样,你就可以通过控制 qtextedit 的只读状态来控制它是否可以编辑了。 ### 回答2: 要使用QSS来控制QTextEdit不能编辑, 可以通过设置其 `readOnly` 属性来实现QSSQt样式表)是一种用于控制界面外观的机制,它使用CSS语法类似的方式来描述Qt控件的样式。可以通过设置 QStyleSheet 来应用样式表。 下面是使用QSS使QTextEdit不能编辑的步骤: 1. 在代码中声明一个QTextEdit控件对象。 2. 在代码中使用 `setReadOnly(true)` 方法设置 QTextEdit 为只读模式。 3. 在 QSS 样式表中设置 QTextEdit 的样式,将其设为只读模式。 例如,下面是一个实现的示例代码: ``` #include <QApplication> #include <QTextEdit> int main(int argc, char *argv[]) { QApplication a(argc, argv); QTextEdit textEdit; textEdit.setReadOnly(true); QString qss = "QTextEdit {" " background-color: white;" " color: black;" " border: 1px solid gray;" " font-size: 16px;" " readonly: true;" // 设置只读模式 "}"; textEdit.setStyleSheet(qss); textEdit.show(); return a.exec(); } ``` 上述代码中,`textEdit.setReadOnly(true)` 将 QTextEdit 设置为只读模式。然后,使用 QSS 模板样式表将 QTextEdit 的样式设置为 'readonly: true'。通过设置 'readonly: true',QTextEdit 将保持只读状态,用户将无法编辑文本。 这样,就通过使用QSS来使QTextEdit不能编辑。 ### 回答3: 要使用QSS使QTextEdit不能编辑,可以通过以下步骤实现: 1. 首先,为QTextEdit设置一个QLineEdit作为其子控件,用于捕获和处理所有的编辑事件。 2. 使用QSS选择器将QLineEdit设置为只读,这样用户无法编辑其内容。在QSS中可以使用"readOnly"属性来设置控件的只读状态。 3. 在代码中使用setStyleSheet()方法将QSS样式应用于QTextEdit的子控件QLineEdit。 ``` QString qss = "QLineEdit {" "readOnly: true;" "}"; textEdit->findChild<QLineEdit*>()->setStyleSheet(qss); ``` 这里的textEdit是QTextEdit的对象名,可以根据实际情况进行调整。 4. 通过上述操作,QTextEdit的子控件QLineEdit将变为只读状态,用户将无法编辑文本内容。 这是一种使用QSS样式表来控制QTextEdit只读状态的方法,可以通过设置QLineEdit的只读属性使整个QTextEdit成为只读。注意,这种方法只用于控制用户对QTextEdit进行编辑的能力,不影响代码中对其文本内容的修改。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值