gpt4 book ai didi

qt - 如何更改(删除)QListWidget 的选择/事件颜色

转载 作者:行者123 更新时间:2023-12-01 14:51:22 31 4
gpt4 key购买 nike

在我的 QListWidget ,有些项目有非默认背景颜色,我在自定义 QListWidget 中设置它们类(class):

item->setBackgroundColor(qcolor); // item is of type QListWidgetItem*

我设置的那些非默认颜色被 QListWidget 扭曲了。的选择颜色。看一个例子:

enter image description here

项目 threefour应该是相同的颜色,但它们不是因为项目 four被选中,因此结果颜色是原始颜色和 QListWidget 的总和的选择(事件项目?)颜色。

我的问题是如何编辑或删除该选择颜色?

我在我的 QListWidget里面试过了(当我想更改项目的背景颜色时,在特殊插槽中):
QPalette pal = this->palette();
pal.setColor(QPalette::Highlight, QColor(255,255,255,0));
this->setPalette(pal); // updated

但它没有产生任何效果。我究竟做错了什么?设置的变量是否正确?我是否在 QListWidget 内设置它?还是在其代表内部?

更新 :我尝试使用注释/答案所指出的样式表,但是,无法将它们用于我的应用程序,因为我的行中的项目有 3 种状态(所以我需要使用三种颜色)。例如,对应于三种颜色的 3 种状态:粉红色表示事件,绿色表示不活动,灰色表示其余部分。使用样式表时,我无法将自定义属性(比如说 QListWidget::item[Inactive="true"])设置为单个 QListWidgetItem , 但对于完整的 QListWidget ,因此它将所有行着色为相同的颜色。

样式表已尝试解决类似问题 here ,并且没有工作,因此我得出结论使用样式表不是要走的路。

我最初使用的背景更改方法适用于我的目的,但我无法弄清楚如何摆脱添加到背景颜色并产生混合颜色的默认选择颜色(透明浅蓝色)。

最佳答案

我认为您最好使用样式表来执行此操作。这是一个例子

QListWidget::item
{
background: rgb(255,255,255);
}
QListWidget::item:selected
{
background: rgb(128,128,255);
}
::item表示 QListWidget 中的各个项目,而 :selected表示当前选中的 QListWidgetItems。

然后获取特定小部件的自定义背景,您可以使用自定义样式表属性。在您的代码中,在您要应用自定义样式的小部件上调用类似的内容:
myList->setProperty( "Custom", "true" );

// Updates the style.
style->unpolish( myList );
style->polish( myList );

然后在您的样式表中,为您的自定义属性定义样式,如下所示。
QListWidget::item[Custom="true"]
{
background: rgb(128,255,128);
}

关于qt - 如何更改(删除)QListWidget 的选择/事件颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36018010/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com