0
点赞
收藏
分享

微信扫一扫

Day35QListWidget基本使用-2022-03-18

m逆光生长 2022-03-18 阅读 32
qtuic++

QListWidget基本使用

Qt提供了QListWidget类,是一种常见的界面组织数据的形式,在开发桌面应用中常常会用到,下面用一个小程序说明QListWidget的基本使用。

小场景

在Qt设计师界面中拖入一个ListWidget,并利用GUI工具添加默认项和其对应的图标。设计“add”按钮以实现添加项的功能,设计“delete”按钮以实现删除项的功能,设计“deleteAll”按钮以实现删除全部项的功能,添加“显示目录”按钮将当前目录中的文件名字添加进listwidget。加入对lineedit的回车响应,使之实现添加功能,加入item的单击事件响应,使之打印item的文本。程序编写完毕,执行效果正确,代码粘贴如下。

代码

ui界面
在这里插入图片描述
main文件保持不变
.h文件

#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QListWidget>
#include <QListWidgetItem>
#include <QDir>
#include <QStringList>
#include <QMessageBox>
#include <QDebug>
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE
class Widget : public QWidget
{
    Q_OBJECT
public:
    Widget(QWidget *parent = nullptr);
    ~Widget();
private slots:
    void doProcessAddItem();
    void doProcessClickItem(QListWidgetItem *);
    void on_deleteBtn_clicked();
    void on_deleteAllBtn_clicked();
    void on_showDirBtn_clicked();
private:
    Ui::Widget *ui;
};
#endif // WIDGET_H

.cpp文件

#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    ui->listWidget->setViewMode(QListWidget::IconMode);//设置为图标显示方式
    connect(ui->addBtn,SIGNAL(clicked()),this,SLOT(doProcessAddItem()));
    connect(ui->lineEdit,SIGNAL(returnPressed()),this,SLOT(doProcessAddItem()));//回车信号
    connect(ui->listWidget,SIGNAL(itemClicked(QListWidgetItem *)),this,SLOT(doProcessClickItem(QListWidgetItem *)));
}
Widget::~Widget()
{
    delete ui;
}
void Widget::doProcessAddItem()
{
    //按回车健或者单击add按钮均会添加Item
    QString str = ui->lineEdit->text();
    if(str.isEmpty()){
        qApp->beep();
        return;
    }
    QListWidgetItem *myItem = new QListWidgetItem;
    myItem->setText(str);//设置项的文本
    ui->listWidget->addItem(myItem);//添加项
    ui->lineEdit->clear();
}

void Widget::doProcessClickItem(QListWidgetItem * item)
{
    qDebug()<<"??"<<item->text();
}

void Widget::on_deleteBtn_clicked()
{
    //takeItem返回第n个item   currentRow获得当前所在行
    QListWidgetItem *delItem = ui->listWidget->takeItem(ui->listWidget->currentRow());
    delete delItem;//执行删除项操作
}
void Widget::on_deleteAllBtn_clicked()
{
    int count = ui->listWidget->count();
    for (int i = 0;i<count;i++ ) {
        QListWidgetItem *delItem = ui->listWidget->takeItem(0);
        delete delItem;//执行删除项操作
    }
}
void Widget::on_showDirBtn_clicked()
{
    ui->listWidget->clear();
    QDir myDir= QDir::current();//获取当前工程目录
    QStringList list = myDir.entryList();//获取目录中文件名字
    if(list.size()==0){
        QMessageBox::information(this,"错误提示","目录为空");
        return;
    }
    else{
        for (int i = 0;i<list.size() ;i++ ) {//循环添加当前目录中文件名
            if(list.at(i)=="."||list.at(i)==".."){
                continue;
            }
            QListWidgetItem *myItem = new QListWidgetItem;
            myItem->setText(list.at(i));
            ui->listWidget->addItem(myItem);
        }
    }
}

举报

相关推荐

0 条评论