//设置列表
QListWidgetItem *item=new QListWidgetItem;
item->setSizeHint(QSize(100,35));//
item->setBackgroundColor(RGB(247,247,247));//正常背景颜色,可以用来设置交叉行变色
ui->listWidget->addItem(item);

设置QListWidget中item的背景色,使用QSS

"QListWidget::Item:hover{background:#E8E8E8;}"//悬浮
"QListWidget::Item:pressed{background:#E8E9ED;}"//按下
"QListWidget::item:selected:!active{background:#E8E9ED;}"//按下后,当前活动控件不在列表中
"QListWidget::item:selected{background:#E8E9ED;}"//按下后鼠标移动到其它位置

去掉item选中的虚线框

ui->listWidget->setFocusPolicy(Qt::NoFocus);

1、响应选中行信号

connect(listwidget1,SIGNAL(currentRowChanged(int)),this,SLOT(listwidget1_Selected(int)));
当切换到选中行时响应
void Core::List_Selected1(int row)
if(row >= 0)   
//row要判断,row为当前选中行号

2、响应单击信号connect(listwidget1,SIGNAL(itemClicked(QListWidgetItem*)),this,SLOT(listwidget1_eclicked(QListWidgetItem*)));
每次单击item都会响应

void Core::kit_listwidget1_eclicked(QListWidgetItem*)
  int row = listwidget1->currentRow();//当前点击行序号

3、双击item信号

connect(listwidget1,SIGNAL(itemDoubleClicked(QListWidgetItem*)),this,SLOT(listwidget1_eclicked(QListWidgetItem*)));

每次双击item都会响应

void Core::kit_listwidget1_eclicked(QListWidgetItem*)
  int row = listwidget1->currentRow();//当前点击行序号

4、右键菜单

代码添加:

设置属性:listwidget3->setContextMenuPolicy( Qt::CustomContextMenu );

槽函数::connect(listwidget3, SIGNAL(customContextMenuRequested(const QPoint&)),
this, SLOT(on_listwidget3_customContextMenuRequested(const QPoint&)))

5、在响应的组合键中添加:

//响应组合键全选
if ((event->modifiers() == Qt::ControlModifier) and (event->key() == Qt::Key_A) )
        qDebug()<<"ctrl-a";
        for(int i = 0;i < this->count(); i++)//项目数
            this->setCurrentRow(i,QItemSelectionModel::Select);

6、鼠标移动到Item内的信号

列表->setMouseTracking(true);//true表示鼠标不按下移动到item内就发现信号,false表示鼠标至少按下一个按键后移动到item内,

connect( 列表, SIGNAL(itemEntered(QListWidgetItem*)), this, SLOT(slotOnItemEntered(QListWidgetItem*)) ) ;
然后添加槽函数
void slotOnItemEntered(QListWidgetItem*p);
//根据设置鼠标移动到itme响应
void slotOnItemEntered(QListWidgetItem*p)

一些常用函数:

QListWidget::QListWidget ( QWidget *parent = 0 )       // 构造一个父对象为parent的ListWidget。
void QListWidget::addItem ( const QString & label )     // 添加一个新的项目,在新添加的项目中添加label标签。
void QListWidget::addItem ( QListWidgetItem *item )   // 添加项目item。
void QListWidget::addItems ( const QStringList & labels )   // 添加一列项目。
void QListWidget::clear () [slot]   // 清除该ListWidget中的所有项目。
QListWidgetItem *QListWidget::currentItem () const    //返回当前活动项目。
void QListWidget::editItem ( QListWidgetItem *item )    //如果项目item是可编辑的,开始编辑项目item。
QList QListWidget::findItems( constQString & text, QT::MatchFlags flags ) const  //查找匹配字符串text的项目,并返回查找结果。
void QListWidget::insertItem ( int row, QListWidgetItem *item )    //在行row处插入项目item。
void QListWidget::insertItem ( int row, const QString &label )        //这是一个重载函数,函数功能同9),在行row处插入标签为label的新项目。
void QListWidget::insertItems ( int row, const QStringList & labels )    //在行row处插入一列项目。
QListWidgetItem *QListWidget::item ( int row ) const    //返回行row处的项目,如果行row处没有项目则返回0。
QListWidgetItem*QListWidget::itemAt ( const QPoint & p ) const    //返回点p处的项目。
QListWidgetItem *QListWidget::itemAt ( int x, int y ) const    //返回坐标(x,y)处的项目。
QWidget *QListWidget::itemWidget ( QListWidgetItem *item ) const    //返回项目item处显示的控件。
QListWidgetItem *QListWidget::takeItem ( int row )   // 移除行row处的项目,并返回项目控件。
void QListWidget::removeItemWidget ( QListWidgetItem *item )    //删除项目item处的控件。
int QListWidget::row ( const QListWidgetItem *item ) const    //返回项目item所在的行。
QList QListWidget::selectedItems ()const    //返回所有被选中的项目的控件。
void QListWidget::setCurrentItem ( QListWidgetItem *item )    //设置项目item为当前项目。
void QListWidget::setItemWidget ( QListWidgetItem *item, QWidget*widget )    //设置控件widget为项目item的显示控件。
void QListWidget::sortItems ( QT::SortOrder order = QT::AscendingOrder )    //把项目按照order进行排序。