ZBLOG

QString comboBoxStyle = QString( "QComboBox {" " border: 1px solid #668ade;" // 边框颜色 " background-color: white;" // 背景颜色 " color: #668ade;" " text-align: center;" ...

从你提供的代码和描述来看,你的 QComboBox 在按下状态时有时仍然显示默认状态下的箭头图标,可能与以下几个原因有关:

1. 样式表应用顺序

在 Qt 中,样式表是基于特定优先级来应用的。如果你在其他地方或更高优先级的地方设置了样式,可能会导致它被覆盖。确保没有其他地方影响该组合框的样式。

2. 图片路径问题

检查你的图片路径是否正确。特别是在Windows系统上,如果图片路径包含空格或特殊字符,可能会导致无法找到资源。试着将路径中的反斜杠换成双反斜杠,例如:

  1. "image: url(E:\\YZYEdu\\WhiteBoard\\img\\back_click.png);"

3. !important 的使用

在你的代码中,对于按下状态使用了 !important,这通常用于确保该样式优先于其他样式,但如果浏览器(Qt)已经处理完某个事件,它可能不会触发重新绘制。因此可以尝试去掉 !important

4. 调用更新方法

如果控件未能及时更新,可以手动调用更新方法,以强制重绘。例如,在槽函数中添加如下行:

  1. ui->comboBox->update();

5. 检查逻辑错误

确认一下程序逻辑是否有问题,例如按钮事件是否正常触发以及没有意外地更改控件状态。

示例修改

这里是一个略微修改后的例子,供你参考:

  1. QString comboBoxStyle = QString(
  2. "QComboBox {"
  3. " border: 1px solid #668ade;"
  4. " background-color: white;"
  5. " color: #668ade;"
  6. " text-align: center;"
  7. "}"
  8. "QComboBox::drop-down {"
  9. " subcontrol-origin: padding;"
  10. " subcontrol-position: right center;"
  11. " width: 20px;"
  12. " border-left: none;"
  13. "}"
  14. // 默认状态下的下拉箭头图标
  15. "QComboBox::down-arrow {"
  16. " image: url(E:/YZYEdu/WhiteBoard/img/back_click.png);"
  17. // 确保路径正确且文件存在
  18. "}"
  19. // 按下状态下的下拉箭头图标 - 不使用 !important
  20. "QComboBox::down-arrow:pressed {"
  21. " image: url(E:/YZYEdu/WhiteBoard/img/next_click.png);"
  22. // 确保路径正确且文件存在
  23. "}"
  24. // 下拉列表风格设置...
  25. );

小结

  • 请逐步调试以上几个方面,从根本上解决这个问题。
  • 尝试简化样式表并逐步增加内容,以找出引起问题的部分。
  • 如果问题仍然存在,请考虑在Qt官方文档和社区寻求进一步帮助,并提供更多上下文以便进行深入分析。


    内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=22186

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?