qt - 将 QListWidgetItem CheckState(toggled on) 上的默认 plastique 小部件样式更改为右勾而不是交叉勾
问题描述
我在 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
}
当我运行它时,在项目选择上它显示交叉勾号,但我必须将它显示为项目 CheckState 上的右勾号。
如何更改此小部件样式选择状态?
谢谢。
解决方案
使用函数 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
}
推荐阅读
- junit - Hamcrest:转储当前类型和值
- .htaccess - 使用 htaccess 和 GeoIP 阻止特殊地址或 URL 的国家/地区
- delphi - mORMot 响应端口 80 而不是 IIS 上的 HTTP 请求
- django - 在 post_save django 之后将用户实例保存到另一个模型
- node.js - 使用 node.js 和 npm ftp 将文件上传到 ftp(来自 GoDaddy 的 ftp)
- javascript - Why isn't the element not interactable when the option's value is existing on the select?
- java - 你能告诉我“videoView.setVideoURI(uri);”、“videoView.start();”有什么问题吗?
- excel - 无法通过 excel vba 自动填充网站的标签
- sql - 修复依赖于其他标志的标题列?
- excel - 当特定列更新为“是”并且电子邮件 ID 从同一工作表中的另一列中获取时,Google 工作表的电子邮件触发器