将 QListWidgetItem CheckState(toggled on) 上的默认 plastique 小部件样式更改为右勾而不是交叉勾

Posted

技术标签:

【中文标题】将 QListWidgetItem CheckState(toggled on) 上的默认 plastique 小部件样式更改为右勾而不是交叉勾【英文标题】:Change default plastique widget style on QListWidgetItem CheckState(toggled on) as right tick instead cross tick 【发布时间】:2020-03-25 01:35:22 【问题描述】:

我在 Redhat linux 上使用 Qt 4.4。

我使用 QListWidgetItem 在 QListWidget 中添加了复选框,如下所示,

lstObjListGroup1 = new QListWidget( wgtGroup );
//loop 
...
QListWidgetItem *itemChkList = new QListWidgetItem( itValue, lstObjListGroup1 );
itemChkList->setFlags (itemChkList->flags () | Qt::ItemIsUserCheckable ); 
itemChkList->setCheckState (Qt::Unchecked); //initialize check state

当我运行它时,在项目选择时它会显示 cross tick,但我必须在项目 CheckState 上将其显示为 right tick

如何更改此小部件样式选择状态?

谢谢。

【问题讨论】:

【参考方案1】:

使用函数 QWidget::setStyle() 和小部件样式作为“Windows”解决了这个问题。

我发现最简单的方法是创建 QListWidget 的子类。

//header file : echklistwidget.h

#include <qlistwidget.h>
#include <QWidget>

class EChkListWidget : public QListWidget

    Q_OBJECT
    public:
        EChkListWidget( QWidget *parent=0);
;
//source file : echklistwidget.cpp

#include "echklistwidget.h"

#include <qwidget.h>
#include <qstylefactory.h>

class QStyle;

EChkListWidget :: EChkListWidget(QWidget* parent) : QListWidget(parent)

    //setStyle(QStyleFactory::create("Fusion"));
    setStyle(QStyleFactory::create("Windows"));


//using object of subclass EChkListWidget
EChkListWidget *lstObjListGroup1;
lstObjListGroup1 = new EChkListWidget( wgtGroup );
//loop 
...
QListWidgetItem *itemChkList = new QListWidgetItem( itValue, lstObjListGroup1 );
itemChkList->setFlags (itemChkList->flags () | Qt::ItemIsUserCheckable ); 
itemChkList->setCheckState (Qt::Unchecked); //initialize check state

【讨论】:

以上是关于将 QListWidgetItem CheckState(toggled on) 上的默认 plastique 小部件样式更改为右勾而不是交叉勾的主要内容,如果未能解决你的问题,请参考以下文章

使单击的 QListWidgetItem 无边框

在 setupUI 中连接 QListWidgetItem [重复]

如何在线程中为 QListWidgetItem 加载图像?

将 QListWidgetItem CheckState(toggled on) 上的默认 plastique 小部件样式更改为右勾而不是交叉勾

7.5.3 QListWidgetItem条目视图介绍

QListWidgetItem 中不可见的图标