在 QListWidget 项目上绘制边框使文本在单击时消失
Posted
技术标签:
【中文标题】在 QListWidget 项目上绘制边框使文本在单击时消失【英文标题】:Drawing Border on a QListWidget item makes the text disappear on clicking 【发布时间】:2016-03-30 11:57:47 【问题描述】:我尝试使用以下行为 QListWidget
项目设置边框:
mListwidget->setStyleSheet("QListWidget:itemheight: 40px;border-left: 2px solid red;");
mListwidget
是 QListWidget
。
当我运行代码时,我得到了需要的红色边框,但是当我单击 QListWidgetItem 时,它上面的文本消失了。
我附上图片以供参考。 这就是before clicking the QListWidget Item 的样子,这就是after clicking an item 发生的事情。
【问题讨论】:
【参考方案1】:文本消失是因为你忘记定义选中的样式:QListWidget::item:selected
请看下面的代码:
mListwidget->setStyleSheet("QListWidget:itemheight: 40px;border-left: 2px solid red;QListWidget::item:selected background-color: white; color: black");
示例和其他信息here。
【讨论】:
我曾尝试过这样做,但问题是当我们这样做时它不会显示默认选择颜色。我在 Mac 上也有这个问题,当我设置选择颜色时,它工作得很好,但我希望它根据系统设置进行更改。 然后你可以实现一个插槽 on_listWidget_itemClicked ,当调用它时,它会将 QListWidgetItem 样式表更改为系统默认值或您想要的任何其他样式表。 我尝试通过插槽将其设置为系统默认值,但随后我丢失了所做的更改。主要问题是,当我在列表小部件项目的右侧添加一个图标时,当它被选中并处于活动状态时,文本会向左移动。为了解决这个问题,我使用了这个: QListWidget:item[/* property*]border: 2px solid red;(也尝试了活动条件)当我这样做时,它解决了文本移位问题,但后来我没有t 获取默认选择颜色 & 在调用默认样式表时,我得到了选择颜色,但不幸的是,文本移位问题再次出现以上是关于在 QListWidget 项目上绘制边框使文本在单击时消失的主要内容,如果未能解决你的问题,请参考以下文章