QT开发之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选中的虚线框

1、ui->listWidget->setFocusPolicy(Qt::NoFocus);
2、ui->listwidget->setStyleSheet("QListWidget{outline:0px;}");//QSS

QSS设置
listwidget1->setStyleSheet("QListWidget{background:rgb(39,43,47,1);color: rgba(141,141,141,1);border:30px;text-align: right;}"
                               "QListWidget::item{height:44px;border:0px;padding-top:0px; padding-left:15px;}"//设置行高和文字位置
                               "QListWidget::Item:hover{border-image: url(:/resource/img/list/preset_select_hover.png);color: rgba(255,255,255,1);}"//悬停
                               "QListWidget::Item:pressed{border-image: url(:/resource/img/list/preset_select.png);color: rgba(255,255,255,1);}"//按下
                               "QListWidget::item:selected:!active{border-image: url(:/resource/img/list/preset_select.png);color: rgba(255,255,255,1);}"//按下后当前活动控件不在列表中
                               "QListWidget::item:selected{border-image: url(:/resource/img/list/preset_select.png);color: rgba(255,255,255,1);}");//按下后鼠标移动到其它位置

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&)));

手动添加:QT开发之QListWidget控件增加右键菜单功能_金属服务,美好生活,天网改变世界,华帝量子科技。-CSDN博客

5、响应组合键全选

如果是自绘的话,可以参数:QT开发之自绘控件中获取单个键盘按键和组合键_金属服务,美好生活,天网改变世界,华帝量子科技。-CSDN博客

在响应的组合键中添加:

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);
        }
    }

查询help:

QItemSelectionModel::Select
0x0002
All specified indexes will be selected.

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)
{
//
}

7、设置滚动条

//设置滚动条样式
    listwidget1->verticalScrollBar()->setStyleSheet("QScrollBar:vertical"
                                                       "{"
                                                           "width:18px;"
                                                           "background:rgba(0,0,0,100%);"
                                                           "margin:0px,0px,0px,0px;"
                                                           "padding-top:0px;"//留出9px给上面和下面的箭头
                                                           "padding-bottom:0px;"
                                                           "padding-left:5px;"
                                                           "padding-right:5px;"
                                                       "}"
                                                       "QScrollBar::handle:vertical"
                                                       "{"
                                                           "width:8px;"
                                                           "background:rgba(39,39,39,90%);"//正常时颜色
                                                           " border-radius:4px;"// 滚动条两端变成椭圆
                                                           "min-height:20;"
                                                       "}"
                                                       "QScrollBar::handle:vertical:hover"
                                                       "{"
                                                           "width:8px;"
                                                           "background:rgba(39,39,39,100%);"// 鼠标放到滚动条上的时候,颜色变深
                                                           " border-radius:4px;"
                                                           "min-height:20;"
                                                       "}"
                                                       "QScrollBar::add-line:vertical"// 这个应该是设置下箭头的,3.png就是箭头
                                                       "{"
                                                           "height:9px;width:8px;"
                                                           "border-image:url(:/images/a/3.png);"
                                                           "subcontrol-position:bottom;"
                                                       "}"
                                                       "QScrollBar::sub-line:vertical"// 设置上箭头
                                                       "{"
                                                           "height:9px;width:8px;"
                                                           "border-image:url(:/images/a/1.png);"
                                                           "subcontrol-position:top;"
                                                       "}"
                                                       "QScrollBar::add-line:vertical:hover"// 当鼠标放到下箭头上的时候
                                                       "{"
                                                           "height:9px;width:8px;"
                                                           "border-image:url(:/images/a/4.png);"
                                                           "subcontrol-position:bottom;"
                                                       "}"
                                                       "QScrollBar::sub-line:vertical:hover"// 当鼠标放到下箭头上的时候
                                                       "{"
                                                           "height:9px;width:8px;"
                                                           "border-image:url(:/images/a/2.png);"
                                                           "subcontrol-position:top;"
                                                       "}"
                                                       "QScrollBar::add-page:vertical,QScrollBar::sub-page:vertical"// 当滚动条滚动的时候,上面的部分和下面的部分
                                                       "{"
                                                           "background:rgba(0,0,0,10%);"
                                                           "border-radius:4px;"
                                                       "}"
                                                       );

一些常用函数:

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

listwidget2->setGridSize(QSize(100, 34));//设置行之间间距
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Qt中,QListWidget是一个用于显示列表项的件。可以通过使用addItem()函数向QListWidget中添加项,每一行只存在一个QListWidgetItem对象。可以使用count()函数获取QListWidget中项的数量。可以使用currentItem()函数获取当前选中的项。可以使用text()函数获取项的文本内容。也可以使用foreach循环遍历QListWidget中的所有项。 QListWidget类是继承自QListView类的,头文件为#include<QListWidget>,属于widgets模块。 在使用QListWidget时,可以使用addItem()函数添加标签项,例如ui.listWidget->addItem(QString("张三"))可以添加一个名称为"张三"的标签项。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [【QT基础教程 十二】QListWidget类解析](https://blog.csdn.net/wddkxg/article/details/129238193)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [Qt QListWidget详解](https://blog.csdn.net/wzz953200463/article/details/109648247)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值