zoukankan      html  css  js  c++  java
  • QListWidget

    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(51,153,255));
        p.setColor(QPalette::Inactive,QPalette::HighlightedText,QColor(Qt::white));
        p.setColor(QPalette::Inactive,QPalette::Text,QColor(Qt::white));
        lwItems->setPalette(p);
        lwItems->setIconSize(QSize(15,15));
        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=0;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=0;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==0)
        {
            return;
        }
        
        QString selectedText="";
        for(int i=0;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 = 0);
    
    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(255,255,255));
          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:#190101;
        margin:2px;
        padding-left:10px;
        padding-right:10px;
        border: 1px solid #32435E;
    
    }
    
    QListWidget#scaleItemsList,QListWidget#connectedIPList{
    
        color:#FFFFFF;
        font:16pt "DejaVu Sans";
        background-color:#190101;
        margin:20px;
        border: 1px solid #32435E;
    
    }
    QListWidget::item{
    
         border:solid #656565;
         border-0px 0px 1px 0px;
         padding:10px 0px 10px 15px;
         margin:0px 5px 0px 5px;
    
    }
    
    QListWidget::item:selected {
    
         background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
                                     stop: 0 #6A848C,  stop: 1.0 #0F9EAF);
    
    }
    
    QListWidget::item:selected:!active {
         border- 0px ;
    
    }
    QListWidget::item:selected:active {
         border- 0px;
    
    }
  • 相关阅读:
    项目前期
    酒店平台预订管理系统
    毕业论文管理系统化————面向对象方法
    项目前期
    打印出10道四则运算
    软件工程
    酒店预定管理系统
    毕业论文管理系统
    酒店预定管理系统
    android
  • 原文地址:https://www.cnblogs.com/ike_li/p/5090732.html
Copyright © 2011-2022 走看看