将 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 小部件样式更改为右勾而不是交叉勾的主要内容,如果未能解决你的问题,请参考以下文章
在 setupUI 中连接 QListWidgetItem [重复]
将 QListWidgetItem CheckState(toggled on) 上的默认 plastique 小部件样式更改为右勾而不是交叉勾