当前位置: 首页 > article >正文

Qt 学习第十天:小项目:QListWidget的使用

一、页面布局

二、命名按钮

双击按钮可以修改显示中的文字(例如:改成“全选”),objectName是要改成程序员所熟悉的名字(英文,符合代码规范)方便修改和书写代码,一看就能看懂的

三、icon(图标)的导入

右击项目文件夹 >> 选择一个模板 >> Qt >> Qt Resource File >> 文件名命名为res或者resource

创建后出现这个界面: 把prefix改成/

资源文件将被映射到根目录。这意味着在程序中使用资源(icon)时,不需要再添加前缀路径,可以直接使用资源文件的名称来访问


icon-32图标

右键就可以复制资源路径

四、往QListWidget添加课程

    //添加科目
    QStringList list = {"语文", "数学", "英语", "物理", "化学", "生物", "历史", "地理" };
    for(int i=0; i<list.size(); i++)
    {
        //QListWidgeItem就是列表项,我们可以对其添加文本
        QListWidgetItem *item = new QListWidgetItem(); //列表项
        item->setText(list[i]);
        //添加图标
        QIcon icon1;
        icon1.addFile("://icon-32.png");
        item->setIcon(icon1);
        //添加复选框
        item->setCheckState(Qt::Unchecked);
        //设置字体大小
        QFont font;
        font.setPointSize(30);
        item->setFont(font);
        ui->listWidget->addItem(item); //列表项加入listWidget中
        ui->listWidget->setIconSize(QSize(30,30)); //设置图标大小
        ui->listWidget->setSpacing(10); //对四周都会产生留白效果
    }

五、设置图标模式

//设置为图标模式
void MainWindow::on_IconMode_btn_clicked()
{
    ui->listWidget->setViewMode(QListView::IconMode); //设置为图标模式
    ui->listWidget->setSpacing(10); //对四周都会产生留白效果
    ui->listWidget->setResizeMode(QListView::Adjust); //自适应窗口大小
}

六、设置列表模式

//设置为列表模式
void MainWindow::on_TableMode_btn_clicked()
{
    ui->listWidget->setViewMode(QListView::ListMode); //设置为列表模式
}

【运行结果】

七、实现添加课程

会自动生成槽函数

//添加课程
void MainWindow::on_Add_btn_clicked()
{
    //如果文本不为空
    if(ui->lineEdit->text().isEmpty() == false)
    {
        QListWidgetItem *item = new QListWidgetItem(); //列表项
        item->setText(ui->lineEdit->text().trimmed());
        //添加图标
        QIcon icon1;
        icon1.addFile("://icon-32.png");
        item->setIcon(icon1);
        //添加复选框
        item->setCheckState(Qt::Unchecked); //设置为未选中状态
        //设置字体大小
        QFont font;
        font.setPointSize(30);
        item->setFont(font);
        ui->listWidget->addItem(item); //列表项加入listWidget中
        ui->listWidget->setIconSize(QSize(30,30)); //设置图标大小
        ui->lineEdit->clear(); //清除输入框中的文本
    }
}

八、实现删除课程

跟上面一样,代码不同

//删除课程
void MainWindow::on_Delete_btn_clicked()
{
    int count = ui->listWidget->count(); //获取列表项个数
    for(int i=count-1; i>=0; i--) //这个需要从后往前删除,否则会越界崩溃
    {
        if(ui->listWidget->item(i)->checkState() == Qt::Checked)//如果被选中
        {
            auto item = ui->listWidget->takeItem(i); //删除会返回这个值的指针,但是内存没有真正的删除
            delete item;
        }
    }
}

九、实现全选课程

跟上面一样,代码不同

//全选课程
void MainWindow::on_Allchoose_btn_clicked()
{
    int count = ui->listWidget->count(); //获取列表项个数
    for(int i=count-1; i>=0; i--)
    {
        ui->listWidget->item(i)->setCheckState(Qt::Checked); //设置为选中状态
    }
}

【运行结果】

参考文章:【qt】QListWidget 组件-CSDN博客

补充知识点:

vocabulary,启动!

 


http://www.kler.cn/news/315505.html

相关文章:

  • 【基于Spring Boot的汽车租赁系统】
  • 【微信小程序】连续拍照功能实现
  • kafka 消息位移提交几种方式:消息重复消息、消息丢失的关键
  • Docker_基础初识
  • 新能源汽车知识点集萃
  • Python办公自动化教程(003):PDF的加密
  • HarmonyOS Next开发----使用XComponent自定义绘制
  • 【乐企-工具篇】有关乐企发票文件生成- OFD和PDF文件生成
  • 四、JVM原理-4.1、JVM介绍
  • vue中 <template> 与 <template lang=“jade“>的对比,哪个性能好
  • 数据结构之希尔排序
  • 轻代码的概念学习笔记
  • http和https的区别及get和post请求的区别
  • Vue3新组件transition(动画过渡)
  • Java API 之集合框架进阶
  • 软件测试面试题(5)——二面(游戏测试)
  • 【PLW003】设备器材云端管理平台v1.0(SpringBoot+Mybatis+NodeJS+MySQL前后端分离)
  • LeetCode题练习与总结:回文链表--234
  • [JavaEE]———进程、进程的数据结构、进程的调度
  • 【优选算法之二分查找】No.5--- 经典二分查找算法
  • Linux之实战命令03:stat应用实例(三十七)
  • 如何使用 maxwell 同步到 redis?
  • 如何在 CentOS 中管理用户、组和服务状态
  • git pull的merge和rebase模式
  • Spring解决循环依赖的原理
  • RuntimeError: Maximum Recursion Depth Exceeded - 递归深度超限的完美解决方案
  • Spring 源码分析
  • C++独立开发开源大数计算库 CBigNum
  • MySQL之内置函数
  • 【笔记】第三节 组织与性能