Qt-QListWidget

20 篇文章 0 订阅

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();
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值