QListWidget

 

ui->listWidget->setViewMode(QListView::ListMode);   //设置显示模式为列表模式
//设置列表
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进行排序。

 

posted @ 2021-03-06 15:44  liuyj_vv  阅读(1122)  评论(0编辑  收藏  举报