QListWidget 应用笔记

06 11月
作者:cinjep|分类:应用笔记

本文多年前发表于 csdn.net,现将其迁移回来,同时删除原文

最近因为项目改版,需要将原来用QTableView展示的数据改为ListWidget展示,下面内容是部分listwidget相关操作,记录下来以备后用。


QListWidget.png


mainwindow.h.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
  QMainWindow(parent),
  ui(new Ui::MainWindow)
{

  ui->setupUi(this);

  ui->listWidget->setViewMode(QListWidget::IconMode);  // 设置内容为图片
  ui->listWidget->setIconSize(QSize(41, 55));          // 设置图片的大小
  ui->listWidget->setSpacing(5);                      // 设置每个item之间的间隔大小
  //ui->listWidget->setMovement(QListWidget::Static); //设置item不可拖动
  ui->listWidget->setMovement(QListWidget::Free);     // 设置item不可拖动
  ui->listWidget->setDragDropMode(QAbstractItemView::InternalMove);
  ui->listWidget->setMaximumHeight(500);
  ui->listWidget->setSelectionMode(QAbstractItemView::MultiSelection);
  //ui->listWidget->setSelectionMode(QAbstractItemView::ContiguousSelection);
  //QAbstractItemView::ExtendedSelection: 按住ctrl多选
  //QAbstractItemView::SingleSelection: 单选, 默认
  //QAbstractItemView::MultiSelection:点击多选
  //ContiguousSelection 鼠标拖拉多选


  ui->getItemBtn->setEnabled(false);
  ui->IconBtn->setEnabled(false);

  ui->listWidget->setContextMenuPolicy(Qt::CustomContextMenu);
  connect(ui->listWidget, SIGNAL(customContextMenuRequested(const QPoint &)),this, SLOT(on_listWidget_customContextMenuRequested(const QPoint &)));

}

MainWindow::~MainWindow()
{
  delete ui;
}


//增加item
void MainWindow::on_addBtn_clicked()
{
  QTime current_time = QTime::currentTime();
  QListWidgetItem* item = new QListWidgetItem;
  item->setText("C307教室\n255.255.255.255\n"+current_time.toString());    // item文字换行
  item->setIcon(QIcon(":/icon/computer_1.png"));      // item图片
  item->setSizeHint(QSize(120, 90));   // item大小width height
  ui->listWidget->addItem(item);       // 增加item
}


//获取item总数
void MainWindow::on_getCountBtn_clicked()
{
    int itemCount = ui->listWidget->count();
    ui->label->setText(QString::number(itemCount));
}


//删除所有项
void MainWindow::on_delAllBtn_clicked()
{
    ui->listWidget->clear();
}

//获取选中项
void MainWindow::on_getItemBtn_clicked()
{
    QListWidgetItem *item = ui->listWidget->currentItem();
        ui->label->setText(item->text());
}

//删除选中项
void MainWindow::on_removeItemBtn_clicked()
{

    QList<QListWidgetItem*> list = ui->listWidget->selectedItems();
     if(list.size() == 0)
      return;
     for(int i=0;i<list.count();i++){
         QListWidgetItem *sel = list[i];
         if (sel)
         {
          //ui->listWidget->takeItem(i);
          ui->listWidget->removeItemWidget(sel);
          delete sel;
         }
     }
}


void MainWindow::on_listWidget_customContextMenuRequested(const QPoint &pos)
{
  QListWidgetItem* curItem = ui->listWidget->itemAt(pos);
      if( curItem == NULL )
          return;

      QIcon icon1 = QIcon(":/icon/close.png");
      QIcon icon2 = QIcon(":/icon/restart.png");
      QIcon icon3 = QIcon(":/icon/check.png");
      QIcon icon4 = QIcon(":/icon/image.png");
      
      QMenu *popMenu = new QMenu(ui->listWidget);

      QAction *Menu1 = new QAction(icon1,"关机");
      QAction *Menu2 = new QAction(icon2,"重启");
      QAction *Menu3 = new QAction(icon3,"检测");
      QAction *Menu4 = new QAction(icon4,"截屏");

      popMenu->addAction(Menu1);
      popMenu->addAction(Menu2);
      popMenu->addAction(Menu3);
      popMenu->addAction(Menu4);

      connect(Menu1, SIGNAL(triggered(bool)), this, SLOT(slot1()));
      connect(Menu2, SIGNAL(triggered(bool)), this, SLOT(slot2()));
      connect(Menu3, SIGNAL(triggered(bool)), this, SLOT(slot3()));
      connect(Menu4, SIGNAL(triggered(bool)), this, SLOT(slot4()));

      popMenu->exec( QCursor::pos() );
}

void MainWindow::on_listWidget_itemSelectionChanged()
{
    ui->getItemBtn->setEnabled(true);
    ui->IconBtn->setEnabled(true);
}

//更换图标
void MainWindow::on_IconBtn_clicked()
{
    QListWidgetItem *item = ui->listWidget->currentItem();
    item->setIcon(QIcon(":/icon/computer_0.png"));      //更换item图片
}



mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QTime>
#include <QPixmap>
#include <QDebug>

#include <QListWidget>
#include <QCheckBox>

namespace Ui {
  class MainWindow;
}

class MainWindow : public QMainWindow
{
  Q_OBJECT

public:
  explicit MainWindow(QWidget *parent = 0);
  ~MainWindow();

private slots:
  void on_addBtn_clicked();
  void on_getCountBtn_clicked();
  void on_delAllBtn_clicked();
  void on_getItemBtn_clicked();
  void on_removeItemBtn_clicked();
  void on_listWidget_customContextMenuRequested(const QPoint &pos);
  void on_listWidget_itemSelectionChanged();
  void on_IconBtn_clicked();

private:
  Ui::MainWindow *ui;
};

#endif // MAINWINDOW_H


浏览156
返回
目录
返回
首页
正弦与余弦函数教学演示-探索函数正余弦函数的参数影响 网络唤醒魔术包构建和应用