qlistwidgettest.h
#pragma once
#include <QtWidgets/QWidget>
#include "ui_qlistwidgettest.h"
class QListWidgetTest : public QWidget
{
Q_OBJECT
public:
QListWidgetTest(QWidget *parent = Q_NULLPTR);
public slots:
void Click();
void Sort();
//当前选择变化
void CurChange(QListWidgetItem *cur,QListWidgetItem *pre);
void CurChange(int row);
void CurChange(const QString& txt);
//激活
void ItemAct(QListWidgetItem *item);
//内容改变
void ItemChage(QListWidgetItem *item);
//鼠标事件
void ItemClick(QListWidgetItem *item);
void ItemDoubleClick(QListWidgetItem* item);
void ItemEnterd(QListWidgetItem* item);
void ItemPressed(QListWidgetItem* item);
private:
Ui::QListWidgetTestClass ui;
};
qlistwidgettest.cpp
#include "qlistwidgettest.h"
#include <QDebug>
#include <QLineEdit>
#include <QSpinBox>
QListWidgetTest::QListWidgetTest(QWidget *parent)
: QWidget(parent)
{
ui.setupUi(this);
ui.listWidget->clear();
//插入数据的几种方法
//方法一
QListWidgetItem* item1 = new QListWidgetItem;
item1->setText(QString::fromLocal8Bit("测试数据1"));
ui.listWidget->insertItem(0,item1);
//方法二
new QListWidgetItem("test item 2",ui.listWidget);
//方法三
ui.listWidget->addItem("test item 3");
//插入包含图标的数据
QListWidgetItem* itemIcon = new QListWidgetItem();
itemIcon->setText("test item icon 4");
itemIcon->setIcon(QIcon("qt.PNG"));
ui.listWidget->addItem(itemIcon);
ui.listWidget->addItem("test item 8");
ui.listWidget->addItem("test item 7");
ui.listWidget->addItem("test item 6");
//遍历列表
for (int i = 0; i < ui.listWidget->count(); i++)
{
qDebug() << ui.listWidget->item(i)->text();
}
//设置为可编辑状态
ui.listWidget->setEditTriggers(QAbstractItemView::AllEditTriggers);
//所有事件都激发编辑 双击 选择 选项变化
for (int i = 0; i < ui.listWidget->count(); i++)
{
ui.listWidget->item(i)->setFlags(Qt::ItemIsEditable|Qt::ItemIsSelectable|Qt::ItemIsEnabled); //是否可编辑,是否可选,是否有效
}
ui.listWidget->item(3)->setFlags( Qt::ItemIsSelectable | Qt::ItemIsEnabled);
//选项3不可编辑,双击触发ItemAct信号
ui.listWidget->setMouseTracking(true); //是个坑,设置之后才可以响应槽函数
//添加QLineEdit控件
QLineEdit* e = new QLineEdit("Test Line Edit");
ui.listWidget->setItemWidget(ui.listWidget->item(4),e);
//显示QSpinBox控件
QSpinBox* s = new QSpinBox();
ui.listWidget->setItemWidget(ui.listWidget->item(5), s);
}
void QListWidgetTest::Click()
{
//遍历列表
for (int i = 0; i < ui.listWidget->count(); i++)
{
qDebug() << ui.listWidget->item(i)->text();
}
}
void QListWidgetTest::Sort()
{
static bool isDesc = false;
if (!isDesc)
{
ui.listWidget->sortItems(Qt::DescendingOrder); //降序排列
}
else
{
ui.listWidget->sortItems(Qt::AscendingOrder);
}
isDesc = !isDesc;
}
void QListWidgetTest::CurChange(QListWidgetItem* cur, QListWidgetItem* pre)
{
qDebug() << "CurChange QListWidgetItem" << cur->text();
if (pre)
{
qDebug() << "pre is "<< pre->text();
}
}
void QListWidgetTest::CurChange(int row)
{
qDebug() << "CurChange row " << row;
}
void QListWidgetTest::CurChange(const QString& txt)
{
qDebug() << "CurChange QString " << txt;
}
//激活
void QListWidgetTest::ItemAct(QListWidgetItem* item)
{
qDebug() << "ItemAct " << item->text();
}
//内容改变
void QListWidgetTest::ItemChage(QListWidgetItem* item)
{
qDebug() << "ItemChage " << item->text();
}
//鼠标事件
void QListWidgetTest::ItemClick(QListWidgetItem* item)
{
qDebug() << "ItemClick " << item->text();
}
void QListWidgetTest::ItemDoubleClick(QListWidgetItem* item)
{
qDebug() << "ItemDoubleClick " << item->text();
}
void QListWidgetTest::ItemEnterd(QListWidgetItem* item)
{
qDebug() << "ItemEnterd " << item->text();
}
void QListWidgetTest::ItemPressed(QListWidgetItem* item)
{
qDebug() << "ItemPressed " << item->text();
}