qt-C++笔记之按行读取文件并切换复选框打印复选框拼接出的字符串

qt-C++笔记之按行读取文件并切换复选框打印复选框拼接出的字符串

code review!

文章目录

  • qt-C++笔记之按行读取文件并切换复选框打印复选框拼接出的字符串
    • 1.运行
    • 2.文件结构
    • 3.main.cc
    • 4.main.pro
    • 5.a.txt
    • 6.b.txt

1.运行

请添加图片描述

2.文件结构

在这里插入图片描述

3.main.cc

在这里插入图片描述

代码

#include <QApplication>
#include <QCheckBox>
#include <QDebug>
#include <QFile>
#include <QPushButton>
#include <QTextStream>
#include <QVBoxLayout>
#include <QWidget>int main(int argc, char *argv[]) {QApplication app(argc, argv);// 创建主窗口QWidget window;window.setWindowTitle("文件读取示例");// 创建按钮1QPushButton button1("读取文件1");// 创建按钮2QPushButton button2("读取文件2");// 创建按钮3(用于拼接并打印选中的复选框内容)QPushButton button3("拼接并打印选中内容");// 创建一个 QVBoxLayout 用于显示 QCheckBoxQVBoxLayout *layout = new QVBoxLayout(&window);window.setLayout(layout);bool layoutIsEmpty = true; // 用于标记布局是否为空// 存储选中的复选框的文本内容QString selectedText;// 连接按钮1的点击事件QObject::connect(&button1, &QPushButton::clicked, [&]() {// 如果布局不为空,清空 QVBoxLayout 中的内容// 方法1:使用QLayout::removeWidget方法if (!layoutIsEmpty) {QLayoutItem *item;while ((item = layout->takeAt(0)) != nullptr) {QCheckBox *checkBox = qobject_cast<QCheckBox *>(item->widget());if (checkBox) {layout->removeWidget(checkBox);delete checkBox;}delete item;}}// 读取文件1内容并添加到 QVBoxLayoutQFile file("/home/user/qt_normal_test/mytest2/a.txt");if (file.open(QIODevice::ReadOnly | QIODevice::Text)) {QTextStream in(&file);for (int i = 0; i < 10 && !in.atEnd(); ++i) {QString line = in.readLine();QCheckBox *checkBox = new QCheckBox(line);layout->addWidget(checkBox);}file.close();} else {qDebug() << "Error opening file 1: " << file.errorString();}layoutIsEmpty = false; // 布局不再为空});// 连接按钮2的点击事件QObject::connect(&button2, &QPushButton::clicked, [&]() {// 如果布局不为空,清空 QVBoxLayout 中的内容// 方法1:使用QLayout::removeWidget方法if (!layoutIsEmpty) {QLayoutItem *item;while ((item = layout->takeAt(0)) != nullptr) {QCheckBox *checkBox = qobject_cast<QCheckBox *>(item->widget());if (checkBox) {layout->removeWidget(checkBox);delete checkBox;}delete item;}}// 读取文件2内容并添加到 QVBoxLayoutQFile file("/home/user/qt_normal_test/mytest2/b.txt");if (file.open(QIODevice::ReadOnly | QIODevice::Text)) {QTextStream in(&file);for (int i = 0; i < 10 && !in.atEnd(); ++i) {QString line = in.readLine();QCheckBox *checkBox = new QCheckBox(line);layout->addWidget(checkBox);}file.close();} else {qDebug() << "Error opening file 2: " << file.errorString();}layoutIsEmpty = false; // 布局不再为空});// 连接按钮3的点击事件QObject::connect(&button3, &QPushButton::clicked, [&]() {// 遍历 QVBoxLayout 中的复选框,拼接选中的文本内容selectedText.clear(); // 清空已存储的选中文本内容for (int i = 0; i < layout->count(); ++i) {QCheckBox *checkBox = qobject_cast<QCheckBox *>(layout->itemAt(i)->widget());if (checkBox && checkBox->isChecked()) {if (!selectedText.isEmpty()) {selectedText += " "; // 在文本之间插入一个空格}selectedText += checkBox->text();}}// 打印选中的文本内容qDebug() << "选中的内容:" << selectedText;});// 将按钮添加到主窗口layout->addWidget(&button1);layout->addWidget(&button2);layout->addWidget(&button3);window.show();return app.exec();
}

4.main.pro

代码

QT += widgetsTARGET = FileContentReader
TEMPLATE = appSOURCES += main.cppHEADERS +=FORMS +=DISTFILES += \

5.a.txt

代码

66666666
77777777
88888888
99999999
10101010

6.b.txt

代码

111111111111
222222222222
333333333333

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/109809.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Arduino+ESP32+腾讯云+sg90】强制门户+腾讯云控制开关灯

作者有话说 博主对于Arduino开发并没有基础&#xff0c;但是为了实现更加方便的配网&#xff0c;这几天一直在尝试用ESP32-12F&#xff08;因为手头刚好有一个&#xff0c;其他的也可以&#xff09;来做远程开关灯&#xff01;不知道大家是否注意到&#xff0c;上一篇利用STM32…

iOS——JSONModel的使用与JSONModel的嵌套

什么是JSONModel JSONModel是一个解析JSON数据的开源库&#xff0c;可以将JSON数据直接解析成自定义的model 使用 JSONModel 非常简单,只需要将你的 model 类继承自 JSONModel ,而同时 model 中的属性名又恰巧可以和 JSON 数据中的 key 名字一样的话,那么非常恭喜你,你的工作…

“滑动窗口”算法专项训练

目录 题目链接&#xff1a;长度最小的子数组 题目描述 思路分析&#xff1a;滑动窗口(利用单调性&#xff0c;使用"同向双指针来优化) 细节处理 画图解析 代码 题目链接&#xff1a;最大连续1的个数 III 题目描述 思路分析&#xff1a;滑动窗口(同向双指针) 细节…

【SA8295P 源码分析 (一)】13 - Android GVM 虚拟机 QUPv3 UART / SPI / I2C功能配置及透传配置

【SA8295P 源码分析】13 - Android GVM 虚拟机 QUPv3 UART / SPI / I2C功能配置及透传配置 一、QUP v3 介绍二、QUP v3 UART 功能配置2.1 TrustZone 域 Uart 资源权限配置:以 QUPV3_0_SE2 为例2.2 QNX Host 域关闭 Uart 资源:以 QUPV3_0_SE2 为例2.3 Android Kernel 域使能 U…

基于openHarmony实现本地UDP通信

知识补充 简介 套接字(Socket)&#xff0c;就是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象。一个套接字就是网络上进程通信的一端&#xff0c;提供了应用层进程利用网络协议交换数据的机制。从所处的地位来讲&#xff0c;套接字上联应用进程&#xff0c;下联…

数据挖掘(5)分类数据挖掘:基于距离的分类方法

一、分类挖掘的基本流程 最常用的就是客户评估 1.1分类器概念 1.2分类方法 基于距离的分类方法决策树分类方法贝叶斯分类方法 1.3分类的基本流程 步骤 建立分类模型 通过分类算法对训练集训练&#xff0c;得到有指导的学习、有监督的学习预定义的类&#xff1a;类标号属性确定…

【软考】6.2 网络安全技术

《网络安全技术》 防火墙 一道大门&#xff0c;隔离内网和外网主要分隔外网的威胁&#xff0c;对内网的直接攻击无能为力 入侵检测系统&#xff08;IDS&#xff09; 位于防火墙后的第二道屏障监听设备&#xff1a;监控当前系统 / 用户行为&#xff0c;无需网络流量即可工作尽…

MySQL中如何进行分库分表的设计和实现?

分库分表是一种常用的数据库扩展方式&#xff0c;可以提高数据库的并发处理能力和扩展性&#xff0c;下面是分库分表的设计和实现的一般步骤&#xff1a; 数据库选择&#xff1a;选择合适的数据库管理系统&#xff08;DBMS&#xff09;&#xff0c;如MySQL&#xff0c;支持分库…

6.7 案例分析与实现

思维导图&#xff1a; 6.7 案例分析与实现 #### 案例6.2: 六度空间理论 【案例分析】 - **背景介绍**&#xff1a; 六度空间理论提及在任意两人之间最多仅有6个人的连接。尽管这一理论被广泛提及并得到了某种程度的验证&#xff0c;但从科学角度看&#xff0c;它仍然只是一…

214. Devu和鲜花

214. Devu和鲜花 - AcWing题库 如果每个盒子里的花的数量是无限的&#xff0c;用隔板法可以得出答案是 现在每个盒子中区的花数要满足n个条件 我们可以求答案的补集&#xff0c;用全部方案数减去补集方案数 每一个不符合条件的要求为&#xff0c;设为Bi 补集方案数为就成了…

24、Flink 的table api与sql之Catalogs(java api操作视图)-3

Flink 系列文章 1、Flink 部署、概念介绍、source、transformation、sink使用示例、四大基石介绍和示例等系列综合文章链接 13、Flink 的table api与sql的基本概念、通用api介绍及入门示例 14、Flink 的table api与sql之数据类型: 内置数据类型以及它们的属性 15、Flink 的ta…

7.MidBook项目经验之阿里OSS,微信支付(退款),定时任务,图表数据处理

1.阿里云实名认证 阿里云对象存储oss,标准高频率访问, 低频访问存储,归档存储(根本不经常访问) 冗余存储(备份) 读写权限(所有人还是自己访问) Component public class ConstantOssPropertiesUtils implements InitializingBean {不用注入,由spring创建bean使用流 MultipartFil…

Flask自定义装饰和g的使用

1. 在commons.py文件中新增一个装饰器类: 注&#xff1a;一定要加入wraps进行装饰否则&#xff0c;装饰器在给多个函数进行装饰时会报错 from functools import wraps from flask import session, current_app, g# 定义登陆装饰器&#xff0c;封装用户的登陆数据 def user_log…

软考-认证技术原理与应用

本文为作者学习文章&#xff0c;按作者习惯写成&#xff0c;如有错误或需要追加内容请留言&#xff08;不喜勿喷&#xff09; 本文为追加文章&#xff0c;后期慢慢追加 by 2023年10月 网络安全认证技术是指通过密码、数字证书、生物特征识别等手段&#xff0c;对使用网络的用…

【Mac】时间机器频繁提示磁盘没有正常推出

问题描述 有一次在进行时间机器备份的时候总是提示“磁盘没有正常推出”&#xff0c;并且好几次直接导致系统重启… 估计是 MacOS 系统 bug 解决 看了 Vex 一个帖子之后设置了一个硬盘是否休眠就好了&#xff0c;不要勾选让硬盘处于休眠就可以了&#xff0c;在电池选项界面中…

MySQL 8.0 OCP认证精讲视频、环境和题库之五 事务、缓存

redo log buffer&#xff1a; 缓存与事务有关的redo log ,用来对mysql进行crash恢复&#xff0c;不可禁用&#xff1b; 日志缓冲区是存储要写入磁盘上日志文件的数据的内存区域。日志缓冲区大小由innodb_Log_buffer_size变量定义。 默认大小为16MB。日志缓冲区的内容会定…

2023-10-17 mysql-从库从binlog回放事件-分析

摘要: 2023-10-17 mysql-从库从binlog回放事件-分析 上下文: 2023-10-17 mysql-配置主从-记录-CSDN博客 场景: 两个机器上分别装mysql一个mysql配置成master,另外一个配置成slave, 并建立主从关系配置binlog为row格式在master上insert一条数据在slave的handler接口ha_write…

微信小程序-4

一、使用scss编译wxss文件 1.vscode安装easysass扩展 vscode插件 - - - easysass - - - 安装 2.微信小程序 导入vscode扩展 开发者工具 - - - 视图 - - - 扩展 - - - 右侧三个点 - - - 导入已安装的vscode扩展 3.编辑 打开编辑器扩展目录&#xff0c;找到easysass文件夹&…

spring-statemachine 状态机自定义持久化入库

使用 spring-statemachine 状态机持久化时&#xff0c;可以通过内存、spring-statemachine-redis 或 spring-statemachine-data-jpa 现有方式持久化处理。 因项目审核操作记录频繁&#xff0c;数据量大&#xff0c;使用 内存 或 spring-statemachine-redis 模式不可取&#xf…

QTday02(常用类、UI界面下的开发、信号与槽)

今日任务 1. 使用手动连接&#xff0c;将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中&#xff0c;在自定义的槽函数中调用关闭函数 将登录按钮使用qt5版本的连接到自定义的槽函数中&#xff0c;在槽函数中判断ui界面上输入的账号是否为"admin"&#x…