在 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;");

mListwidgetQListWidget

当我运行代码时,我得到了需要的红色边框,但是当我单击 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 项目上绘制边框使文本在单击时消失的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Android 的 MapView 上绘制带边框的文本?

使 QListWidget 调整其项目的大小以填充空间

如何使我的文本字段成为行而不是框?

为 QListWidget 中的特定项目设置不同的颜色

如何在pygame中围绕精灵或图像绘制边框?

QListWidget中字符后的屏蔽文本