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进行排序。