QListWidget 应用笔记
本文多年前发表于 csdn.net,现将其迁移回来,同时删除原文
最近因为项目改版,需要将原来用QTableView展示的数据改为ListWidget展示,下面内容是部分listwidget相关操作,记录下来以备后用。

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目录 返回
首页