当前位置:   article > 正文

【QT】——QListWidget的使用

qlistwidget

目录

1.QListWidget和QListWidgetItem

2.外观

2.1列表模式

2.2图标模式

3.常用接口

4.示例

删除列表项

添加列表项


1.QListWidget和QListWidgetItem

QListWidget 是qt中的列表框控件,它用于显示多个列表项,列表项对应的类是QListWidgetItem.

QListWidgetItem可以只包含文字

QListWidgetItem中可以同时包含图片和文字

2.外观

列表框控件,支持两种显示模式:列表模式和图标模式。

2.1列表模式

setViewMode(QListView::ListMode);//设置QListWidget为列表模式

 

2.2图标模式

setViewMode(QListView::IconMode);//设置QListWidget为图标模式

 

3.常用接口

  1. //添加列表项
  2. void addItem(const QString &label)
  3. void addItem(QListWidgetItem *item)
  4. void addItems(const QStringList &labels)
  5. //返回鼠标选中的列表项
  6. QListWidgetItem *QListWidget::currentItem() const;
  7. //删除窗口中的item的列表项
  8. void QListWidget::removeItemWidget(QListWidgetItem *item)
  9. //设置列表项中的图片大小
  10. void QAbstractItemView::setIconSize(const QSize &size);
  11. //设置列表项中的布局的大小
  12. void QListView::setGridSize(const QSize &size)

信号

  1. //单击列表项
  2. void itemClicked(QListWidgetItem *item)
  3. //双击列表项
  4. void itemDoubleClicked(QListWidgetItem *item)

删除列表项

删除列表项的两种方式:

  1. 方式一:
  2. QListWidgetItem* item=ui->lwprovice->currentItem();//获取当前的列表项
  3. ui->lwprovice->removeItemWidget(item);//移除列表项
  4. delete item;//删除列表项
  5. 方式二:
  6. int row =ui->lwprovice->currentRow();//获取第一个列表项
  7. QListWidgetItem* item=ui->lwprovice->takeItem(row);
  8. delete item;

4.示例:

ui界面: 

设置 "列表模式" 和 "图标模式" 转换:

  1. //将两个单选按钮存放到QGroupBox容器中
  2. //保证一次只能选中一个按钮
  3. m_checkBut=new QButtonGroup(this);
  4. m_checkBut->addButton(ui->rbListMode,0);
  5. m_checkBut->addButton(ui->rbiconmode,1);
  6. connect(ui->rbListMode,&QCheckBox::clicked,this,&MainWindow::selectMode);
  7. connect(ui->rbiconmode,&QCheckBox::clicked,this,&MainWindow::selectMode);
  8. //槽函数
  9. void MainWindow::selectMode()
  10. {
  11. int checkedId=m_checkBut->checkedId();
  12. if(checkedId==0)
  13. {
  14. ui->lwprovice->setViewMode(QListView::ListMode);
  15. }else{
  16. ui->lwprovice->setViewMode(QListView::IconMode);
  17. }
  18. }

 

删除列表项

  1. connect(ui->del_but,&QToolButton::clicked,this,[=](){
  2. #if 0
  3. QListWidgetItem* item=ui->lwprovice->currentItem();
  4. ui->lwprovice->removeItemWidget(item);
  5. delete item;
  6. #else
  7. int row =ui->lwprovice->currentRow();
  8. QListWidgetItem* item=ui->lwprovice->takeItem(row);
  9. delete item;
  10. });

添加列表项

  1. //图片的路径
  2. QList<QString> paths={":/1",":/2",":/3"};
  3. connect(ui->insert_but,&QToolButton::clicked,this,[=](){
  4. //获取随机值
  5. int pos=QRandomGenerator::global()->generate()%3;
  6. //获取图片的值
  7. QString name=ui->leInput->text();
  8. QIcon icon(paths[pos]);//设置图片
  9. QListWidgetItem* item=new QListWidgetItem(icon,name);
  10. int row =ui->lwprovice->currentRow();
  11. ui->lwprovice->insertItem(row+1,item);//将列表 设置 进当前鼠标的后面
  12. });
  13. //将列表项添加到最后一个位置
  14. connect(ui->add_but,&QToolButton::clicked,this,[=](){
  15. qDebug()<<"插入item";
  16. //插入按钮
  17. int pos=QRandomGenerator::global()->generate()%3;
  18. QString name=ui->leInput->text();
  19. QIcon icon(paths[pos]);//设置图片
  20. QListWidgetItem* item=new QListWidgetItem(icon,name);
  21. ui->lwprovice->addItem(item);
  22. });

所有的代码:

  1. // .h文件
  2. #ifndef MAINWINDOW_H
  3. #define MAINWINDOW_H
  4. #include <QMainWindow>
  5. #include<QButtonGroup>
  6. namespace Ui {
  7. class MainWindow;
  8. }
  9. class MainWindow : public QMainWindow
  10. {
  11. Q_OBJECT
  12. public:
  13. explicit MainWindow(QWidget *parent = nullptr);
  14. ~MainWindow();
  15. public slots:
  16. void selectMode();
  17. private:
  18. Ui::MainWindow *ui;
  19. QButtonGroup* m_checkBut;
  20. };
  21. #endif // MAINWINDOW_H
  22. // .pp文件
  23. #include "mainwindow.h"
  24. #include "ui_mainwindow.h"
  25. #include<QCheckBox>
  26. #include<QList>
  27. #include<QString>
  28. #include<QRandomGenerator>
  29. #include<QToolButton>
  30. #include<QDebug>
  31. QList<QString> paths={":/1",":/2",":/3"};
  32. MainWindow::MainWindow(QWidget *parent) :
  33. QMainWindow(parent),
  34. ui(new Ui::MainWindow)
  35. {
  36. ui->setupUi(this);
  37. m_checkBut=new QButtonGroup(this);
  38. m_checkBut->addButton(ui->rbListMode,0);
  39. m_checkBut->addButton(ui->rbiconmode,1);
  40. ui->rbListMode->setEnabled(true);
  41. ui->lwprovice->setViewMode(QListView::ListMode);
  42. connect(ui->rbListMode,&QCheckBox::clicked,this,&MainWindow::selectMode);
  43. connect(ui->rbiconmode,&QCheckBox::clicked,this,&MainWindow::selectMode);
  44. connect(ui->lwprovice,&QListWidget::itemClicked,this,[=](QListWidgetItem *item)
  45. {
  46. //单击列表项
  47. ui->lineEdit->setText(item->text());
  48. });
  49. connect(ui->add_but,&QToolButton::clicked,this,[=](){
  50. qDebug()<<"插入item";
  51. //插入按钮
  52. int pos=QRandomGenerator::global()->generate()%3;
  53. QString name=ui->leInput->text();
  54. QIcon icon(paths[pos]);//设置图片
  55. QListWidgetItem* item=new QListWidgetItem(icon,name);
  56. ui->lwprovice->addItem(item);
  57. });
  58. connect(ui->del_but,&QToolButton::clicked,this,[=](){
  59. #if 0
  60. QListWidgetItem* item=ui->lwprovice->currentItem();
  61. ui->lwprovice->removeItemWidget(item);
  62. delete item;
  63. #else
  64. int row =ui->lwprovice->currentRow();
  65. QListWidgetItem* item=ui->lwprovice->takeItem(row);
  66. delete item;
  67. #endif
  68. });
  69. connect(ui->insert_but,&QToolButton::clicked,this,[=](){
  70. int pos=QRandomGenerator::global()->generate()%3;
  71. QString name=ui->leInput->text();
  72. QIcon icon(paths[pos]);//设置图片
  73. QListWidgetItem* item=new QListWidgetItem(icon,name);
  74. int row =ui->lwprovice->currentRow();
  75. ui->lwprovice->insertItem(row+1,item);
  76. });
  77. }
  78. void MainWindow::selectMode()
  79. {
  80. int checkedId=m_checkBut->checkedId();
  81. if(checkedId==0)
  82. {
  83. ui->lwprovice->setViewMode(QListView::ListMode);
  84. }else{
  85. ui->lwprovice->setViewMode(QListView::IconMode);
  86. }
  87. }
  88. MainWindow::~MainWindow()
  89. {
  90. delete ui;
  91. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Li_阴宅/article/detail/764793
推荐阅读
相关标签
  

闽ICP备14008679号