1.失去焦点背景颜色,代码设置全选的时候,背景会是白色,需要设置失去焦点背景颜色。(设置焦点,会出现白转化成设置背景色,效果不好)

QPalette p;

    p.setColor(QPalette::Inactive,QPalette::Highlight,QColor(51,153,255));
    p.setColor(QPalette::Inactive,QPalette::HighlightedText,QColor(Qt::white));
    p.setColor(QPalette::Inactive,QPalette::Text,QColor(Qt::white));
    lwItems->setPalette(p);

去掉选择虚线框
 MyListWidgetDelegate *listWidgetDelegate=new MyListWidgetDelegate(lwItems);
 lwItems->setItemDelegate(listWidgetDelegate);

void DataDlg::createMiddleListView()
{ lwItems=new QListWidget();
lwItems->setSelectionMode(QAbstractItemView::MultiSelection);
lwItems->setEditTriggers(QAbstractItemView::SelectedClicked);
QPalette p;
p.setColor(QPalette::Inactive,QPalette::Highlight,QColor(,,));
p.setColor(QPalette::Inactive,QPalette::HighlightedText,QColor(Qt::white));
p.setColor(QPalette::Inactive,QPalette::Text,QColor(Qt::white));
lwItems->setPalette(p);
lwItems->setIconSize(QSize(,));
lwItems->setObjectName("lwItems");
MyListWidgetDelegate *listWidgetDelegate=new MyListWidgetDelegate(lwItems);
lwItems->setItemDelegate(listWidgetDelegate);
addExportItems();
contentLayout->addWidget(lwItems); }

添加数据

void DataDlg::addExportItems()
{
isExportData=true;
lwItems->clear();
btnImportExport->setText(exportText);
for(int i=;i<ExportFieldsCount;i++)
{
lwItems->addItem(ExportFields[i].fields);
setListWidgetIcon(i,false);
} }

选择触发事件

void DataDlg::listWidgetEvent(QListWidgetItem *clickedItem)
{ bool isSeleced=clickedItem->isSelected(); if(isSeleced==true)
{
clickedItem->setIcon(QIcon(":/res/icons/images/checkbox_checked.png")); }
else
{
clickedItem->setIcon(QIcon(":/res/icons/images/checkbox_unchecked.png")); } }

设置全选或者取消全选

void DataDlg::onSelectAll()
{
isSelectAll=!isSelectAll; int itemCount=lwItems->count();
for(int i=;i<itemCount;i++)
{
lwItems->item(i)->setSelected(isSelectAll); setListWidgetIcon(i,isSelectAll);
} }

添加图标

void DataDlg::setListWidgetIcon(int row,bool isChecked)
{
if(isChecked)
{
lwItems->item(row)->setIcon(QIcon(":/res/icons/images/checkbox_checked.png"));
}
else
{
lwItems->item(row)->setIcon(QIcon(":/res/icons/images/checkbox_unchecked.png")); } }

取出选中的值

int selectedCount=lwItems->selectedItems().count();
if(selectedCount==)
{
return;
} QString selectedText="";
for(int i=;i<selectedCount;i++)
{ selectedText=lwItems->selectedItems().at(i)->text();
}

2. 去掉选择虚线框

#ifndef MYLISTWIDGETDELEGATE_H
#define MYLISTWIDGETDELEGATE_H #include <QObject>
#include<QItemDelegate>
#include<QPen>
#include<QPainter>
#include<QBrush>
#include<QStyledItemDelegate> #include<QDebug> class MyListWidgetDelegate : public QStyledItemDelegate
{
Q_OBJECT
public:
explicit MyListWidgetDelegate(QObject *parent = ); protected:
void paint(QPainter *painter,const QStyleOptionViewItem &option, const QModelIndex &index) const; private: signals: public slots:
}; #endif // MYLISTWIDGETDELEGATE_H
#include "mylistwidgetdelegate.h"

MyListWidgetDelegate::MyListWidgetDelegate(QObject *parent) : QStyledItemDelegate(parent)
{ }
void MyListWidgetDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
{ QStyleOptionViewItem itemOption(option);
if(itemOption.state & QStyle::State_HasFocus)
{
itemOption.state = itemOption.state ^ QStyle::State_HasFocus;
} //调用默认委托
QStyledItemDelegate::paint(painter,itemOption,index); QPen pen;
pen.setColor(QColor(,,));
pen.setStyle(Qt::DotLine);
painter->setPen(pen);
painter->drawLine(itemOption.rect.bottomLeft(),itemOption.rect.bottomRight()); }

qss

QListWidget#lwItems{

    color:#FFFFFF;
font:16pt "DejaVu Sans";
background-color:#;
margin:2px;
padding-left:10px;
padding-right:10px;
border: 1px solid #32435E; } QListWidget#scaleItemsList,QListWidget#connectedIPList{ color:#FFFFFF;
font:16pt "DejaVu Sans";
background-color:#;
margin:20px;
border: 1px solid #32435E; }
QListWidget::item{ border:solid #;
border-width:0px 0px 1px 0px;
padding:10px 0px 10px 15px;
margin:0px 5px 0px 5px; } QListWidget::item:selected { background: qlineargradient(x1: , y1: , x2: , y2: ,
stop: #6A848C, stop: 1.0 #0F9EAF); } QListWidget::item:selected:!active {
border-width: 0px ; }
QListWidget::item:selected:active {
border-width: 0px; }

QListWidget的更多相关文章

  1. Pyqt QListWidget之缩略图列表

    QListWidget 可以设置模型setViewMode  当setViewMode值为QListView.IconMode 表示Icon模式 以下代码来自Pyqt Example #!/usr/b ...

  2. Pyqt QListWidget 展示系统环境变量

    今天学习了下Pyqt的 QListWidget 控件 我们先看下这个图片 这张图片就是典型的listWidget效果,我们今天就仿这样布局新建个ListWidget 在网上找了个关于QListWidg ...

  3. 列表框QListWidget类

    QListWidget类也是GUI中常用的类,它从QListView下派生: class Q_GUI_EXPORT QListWidget : public QListView { Q_OBJECT ...

  4. Pyqt在QListWidget中添加右键菜单

    Pyqt 的资料奇少, 攻破难点之后, 就在这里记一下笔记. QListWidget 是继承 QWidget 的, 所以 QListWidget 是有右键菜单的, 从文档上可以找到 QWidget 上 ...

  5. QPushButton 与 QListWidget 的按键响应

    在Qt中添加按钮或表格控件时需要添加其按键响应,一般来说有两种方法,一种是直接实现其响应函数,第二种是自己写一个响应函数,然后用Qt的信号槽将它们连接起来.愚以为第一种方法更为简单一些. 声明这些控件 ...

  6. QListWidget特别简单,但有两种添加item的方式

    虽然特别简单,但是对于小白来说,还是有必要过一下脑子和眼睛,当然还得过手(江湖传言:眼过千变,不如手过一遍),所以记录在此: #include "tablewidgetxxx.h" ...

  7. QListWidget代码刷新界面

    我有一个特殊效果要求实现(其实很弱智,也变成特殊效果,汗一下自己):两个QRadioButton切换的时候,让旁边的QListWidget自动变化不同的背景色.想了很多办法: 1. 控件自己刷新,不行 ...

  8. QListWidget方式显示缩略图

    最近在工作中经常遇到了一个问题就是把把文件夹中的图片全部以缩略图的形式显示出来,刚开始的时候一头雾水,不知道怎么办,经过在网上查资料,发现QListWidget控件可以实现图片的缩略图显示,但是不知道 ...

  9. qt model/view 架构基础介绍之QListWidget

    # -*- coding: utf-8 -*- # python:2.x __author__ = 'Administrator' from PyQt4.QtGui import  * from Py ...

随机推荐

  1. 【8-20】java学习笔记02

    others 初始化块在构造器前执行: 静态初始化块和实例变量显示初始化执行顺序为各自定义的位置: final类不能派生子类,final方法不可覆盖,final变量不可重新赋值: 判定值相等,Stri ...

  2. Java Programming Test Question 4

    What will be the boolean flag value to reach the finally block? public class JPTQuestion4 { public s ...

  3. C# web api返回类型设置为json的两种方法

    web api写api接口时默认返回的是把你的对象序列化后以XML形式返回,那么怎样才能让其返回为json呢,下面就介绍两种方法: 方法一:(改配置法) 找到Global.asax文件,在Applic ...

  4. vim 配置,我本机的配置[windows]

    set nocompatible source $VIMRUNTIME/vimrc_example.vim source $VIMRUNTIME/mswin.vim behave mswin set ...

  5. protobuf

    1.下载地址:https://code.google.com/p/protobuf/downloads/list 安装 ./configure && make && m ...

  6. GOF业务场景的设计模式-----工厂模式

    定义:定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法使一个类的实例化延迟到其子类. 工厂方法模式 基本代码 interface IProduct { public void produ ...

  7. 怎样更改wordpress登陆 URL防止恶意注册

    WP 默认的登陆 URL 是 wp-login.php或wp-admin.php,许多spamer会根据这些footprint来收集可注册的wordpress站点,然后你的站内就多出许多垃圾评论.如果 ...

  8. brew gradle

    cat /usr/local/Library/Taps/homebrew/homebrew-versions/gradle221.rb GRADLE_HOME=/Users/temp/gradle22 ...

  9. shell简单使用

    最近需要用到shell脚本实现关机保护作用,总结下语法 要点: 1.linux下编写的shell脚本不能在window下编写,否则会出现^M的错误,用window编写保存,在linux用vim打开,每 ...

  10. Keepalived高可用集群介绍

    1.Keepalived服务介绍 Keepalived起初是专为LVS设计的,专门用来监控LVS集群系统中各个服务节点的状态,后来又加入了VRRP的功能,因此除了配合LVS服务外,也可以为其他服务(n ...