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

devtools/2024/9/24 2:22:44/

一、页面布局

二、命名按钮

双击按钮可以修改显示中的文字(例如:改成“全选”),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.ppmy.cn/devtools/116273.html

相关文章

linux-系统备份与恢复-备份工具

Linux 系统备份与恢复&#xff1a;备份工具 备份和恢复是 Linux 系统管理中的关键任务之一。有效的备份策略可以在数据丢失、系统崩溃或硬件故障时&#xff0c;帮助管理员快速恢复系统&#xff0c;避免数据丢失带来的严重后果。Linux 提供了多种备份工具&#xff0c;支持不同的…

乐观锁、悲观锁及死锁

乐观锁、悲观锁 1.概念 悲观锁(悲观锁定)&#xff1a;具有强烈的独占和排他特性。在整个执行过程中&#xff0c;将处于锁定状态。悲观锁在持有数据的时候总会把资源或者数据锁住&#xff0c;这样其他线程想要请求这个资源的时候就会阻塞&#xff0c;直到等到悲观锁把资源释放为…

828华为云征文 | 将Vue项目部署到Flexus云服务器X实例并实现公网访问

一、Flexus云服务器X实例简介 1.1 概述 华为云Flexus X实例是华为云推出的一款创新云服务器产品&#xff0c;它主要面向中小企业和开发者&#xff0c;旨在解决传统云服务中的痛点&#xff0c;提供更加灵活、高效的云服务体验。 华为深刻洞察了中小企业和开发者在云服务应用中遇…

思维商业篇(5)—发展趋势分析

思维商业篇(5)—发展趋势分析 核心理论 巴菲特曾在《滚雪球》一书中提到他的投资之道其实非常简单&#xff0c;可以总结为两句话&#xff1a;找到足够长的雪道&#xff0c;找到足够湿的雪球。 而发展趋势的分析&#xff0c;正好可以借助巴菲特的这个滚雪球理论。 足够长的雪…

vue3 axios ant-design-vue cdn的方式使用

1、vue3 快速上手 | Vue.js <script src"https://unpkg.com/vue3/dist/vue.global.js"></script><div id"app">{{ message }}</div><script>const { createApp, ref } VuecreateApp({setup() {const message ref(Hello …

PCIe进阶之TL:Request Handling Rules

1 Handling of Received TLPs 本节介绍接收到的 TLP 在数据链路层经过完整性验证之后,这些 TLP 在事务处理层时的处理方式。这些规则如下图所示: 接收侧会忽略保留字段。如果 Fmt 字段显示存在至少一个 TLP Prefix : (1)通过检查后续 DWORD 的第一个字节中的 Fmt 字段,…

408算法题leetcode--第七天

283. 移动零 283. 移动零思路&#xff1a;代码中注释阐述时间&#xff1a;O(n)&#xff1b;空间&#xff1a;O(1) class Solution { public:void moveZeroes(vector<int>& nums) {// 简单思路&#xff1a;用一个辅助数组&#xff0c;将非0元素复制到里面// 双指针&…

設置Android設備全局代理

全局代理是指在設備上設置一個代理伺服器&#xff0c;使所有的網路請求都通過這個代理伺服器進行轉發。這樣&#xff0c;無論你使用的是哪款應用&#xff0c;所有的網路流量都會經過代理伺服器&#xff0c;從而實現統一的網路訪問控制和隱私保護。 配置Wi-Fi網路代理 在Andro…