相关文章推荐
淡定的核桃  ·  vue如何在页面写代码自定义变量 - CSDN文库·  11 月前    · 
无聊的刺猬  ·  NT ...·  1 年前    · 
有腹肌的警车  ·  Java------抽象类不能被实例化_抽象 ...·  1 年前    · 
细心的荔枝  ·  服务器部署nodejs项目访问出现Inval ...·  2 年前    · 
欢快的电池  ·  瑞典皇家工学院的朱斌教授来访·  2 年前    · 
Code  ›  Qt QListWidget详解开发者社区
qstring qlistwidget
https://cloud.tencent.com/developer/article/2095841
忐忑的保温杯
1 年前
作者头像
全栈程序员站长
0 篇文章

Qt QListWidget详解

前往专栏
腾讯云
开发者社区
文档 意见反馈 控制台
首页
学习
活动
专区
工具
TVP
文章/答案/技术大牛
发布
首页
学习
活动
专区
工具
TVP
返回腾讯云官网
社区首页 > 专栏 > 全栈程序员必看 > Qt QListWidget详解

Qt QListWidget详解

作者头像
全栈程序员站长
发布 于 2022-09-06 11:51:10
720 0
发布 于 2022-09-06 11:51:10
举报

大家好,又见面了,我是你们的朋友全栈君。

1.QListWidget和QListView

QListWidget是继承QListView,QListView是基于Model的,需要自己来建模(如建立QStringListModel,QSqlTableModel等),保存数据,这样就大大降低了数据冗余,提高了程序的效率,但是需要我们对数据建模有一定的了解,而QListWidget是一个升级版本的QListView,它已经为我们建立了一个数据存储模型QListWidgetItem,操作方便,直接调用addItem即可添加Item项。

2.常用API

void addItem (const QString &label) //添加一项标签

void addItem (QListWidgetItem *item) //添加一项item

void insertItem (int row, QListWidgetItem *item) //在row行后添加一项item

QListWidgetItem * item (int row) //在row行的项

QListWidgetItem *takeItem(int row) //删除第row行的项,注意qt不会给你释放内存,需要手动释放,只会从界面上删除该项

void clear() //清空界面

void setAlternatingRowColors(bool) //设置是否开启交替颜色显示

以下信号都会常用signals:

void currentItemChanged(QListWidgetItem *current, QListWidgetItem *previous) //当前项改变发出信号

void currentRowChanged(int currentRow) //当前行改变发出信号

void currentTextChanged(const QString &currentText) //当前项改变发出信号

void itemClicked(QListWidgetItem *item) //点击项时发出信号

void itemDoubleClicked(QListWidgetItem *item) //双击发出信号

void itemEntered(QListWidgetItem *item) //鼠标进入某项发出信号

void itemPressed(QListWidgetItem *item) //鼠标按住某项发出信号

void itemSelectionChanged() //改变选择项时发出信号

3.示例

①添加标签

ui.listWidget->addItem(QString("张三"));
ui.listWidget->addItem(QString("李四"));
ui.listWidget->addItem(QString("王二"));
Qt QListWidget详解
Qt QListWidget详解

②添加自定义界面(一个下载客户端界面)

Qt QListWidget详解
Qt QListWidget详解
QListWidgetItem *item1 = new QListWidgetItem(ui.listWidget);
item1->setSizeHint(QSize(100, 60));
ListItem *list1 = new ListItem(ui.listWidget);
ui.listWidget->addItem(item1);
ui.listWidget->setItemWidget(item1, list1);
QListWidgetItem *item2 = new QListWidgetItem(ui.listWidget);
item2->setSizeHint(QSize(100, 60));
ListItem *list2 = new ListItem(ui.listWidget);
ui.listWidget->addItem(item2);
ui.listWidget->setItemWidget(item2, list2);
QListWidgetItem *item3 = new QListWidgetItem(ui.listWidget);
item3->setSizeHint(QSize(100, 60));
ListItem *list3 = new ListItem(ui.listWidget);
ui.listWidget->addItem(item3);
ui.listWidget->setItemWidget(item3, list3);
QListWidgetItem *item4 = new QListWidgetItem(ui.listWidget);
item4->setSizeHint(QSize(100, 60));
ListItem *list4 = new ListItem(ui.listWidget);
ui.listWidget->addItem(item4);
ui.listWidget->setItemWidget(item4, list4);
//删除当前项
//int row=ui->listWidget->currentRow();//当前行
//QListWidgetItem* aItem=ui.listWidget->takeItem(row); //移除指定行的项,但不delete
//delete aItem; //需要手工删除对象
//takeItem() 函数只是移除一个项,并不删除项对象,所以还需要用 delete 从内存中删除它。要清空列表框的所有项,只需调用 QListWidget::clear() 函数即可。

4.添加样式表

简单添加一些选中项的颜色,仅供参考。

Qt QListWidget详解
Qt QListWidget详解
QListView 
      show-decoration-selected: 1; /* make the selection span the entire width of the view */
QListView::item:alternate 
      background: #EEEEEE;
QListView::item:selected 
      border: 1px solid #6a6ea9;
QListView::item:selected:!active 
      background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
                                  stop: 0 #ABAFE5, stop: 1 #8588B2);
QListView::item:selected:active
      background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
                                  stop: 0 #6a6ea9, stop: 1 #888dd9);
QListView::item:hover
      background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
                                  stop: 0 #FAFBFE, stop: 1 #DCDEF1);
 
推荐文章
淡定的核桃  ·  vue如何在页面写代码自定义变量 - CSDN文库
11 月前
无聊的刺猬  ·  NT AUTHORITY\ANONYMOUS LOGON what does thjs mean? - Microsoft Community
1 年前
有腹肌的警车  ·  Java------抽象类不能被实例化_抽象方法无法实例化_王学纯的博客-CSDN博客
1 年前
细心的荔枝  ·  服务器部署nodejs项目访问出现Invalid Host header_node invalid host header_AI创世纪的博客-CSDN博客
2 年前
欢快的电池  ·  瑞典皇家工学院的朱斌教授来访
2 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号