常用界面设计组件 —— 字符串与输入输出组件(QT)

    • 2.2 字符串与输入输出组件
      • 2.2.1 字符串与数值之间的转换
      • 2.2.2 QString的常用功能

2.2 字符串与输入输出组件

2.2.1 字符串与数值之间的转换

界面设计时使用最多的组件恐怕就是QLabel和 QLineEdit了,QLabel用于显示字符串,QLineEdit用于 显示和输入字符串。这两个类都有如下两个成员函数用 于读取和设置显示文字。

QString text() const;
void setText(const QString &text);

这两个函数都涉及到了QString类。QString类是Qt程序 中经常使用的类,用于处理字符串。QString类可以进行 字符串与数字之间的转换,使用QLineEdit就可以实现数 字量的输入输出。

下图为基于QWidget创建的可视化窗体。

在这里插入图片描述

选中"=",右键快捷菜单中单击“转到槽…”,并在对话 框里选择 clicked() 信号创建槽函数,在自动生成的函数 体编写如下代码,实现从界面中读取用户输入的数量和 单价,相乘计算后将结果显示到总价对应的文本框里。

/* mainwindow.cpp */#include "mainwindow.h"
#include "ui_mainwindow.h"MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);
}MainWindow::~MainWindow()
{delete ui;
}void MainWindow::on_pushButton_clicked()
{//获取用户输入数量字符串QString text = ui->le_num->text();int num = text.toInt();//获取用户输入的单价字符串text = ui->le_price->text();double price = text.toDouble();double sum = num * price;//double ----------> QStringtext = text.asprintf("%.2f", sum);ui->le_sum->setText(text);
}

小结:

  • 字符串转数字

    int toInt(bool *ok = nullptr, int base =10) const
    long toLong(bool *ok = nullptr, int base= 10) const
    short toShort(bool *ok = nullptr, intbase = 10) const
    uint toUInt(bool *ok = nullptr, int base= 10) const
    ulong toULong(bool *ok = nullptr, int base = 10) const
    ushort toUShort(bool *ok = nullptr, int base = 10) const
    double toDouble(bool *ok = nullptr) const
    float toFloat(bool *ok = nullptr) const
    
  • 数字转字符串

    // 将double类型的sum转换为字符串,保留2位小数
    text = QString::number(double(sum), 'f', 2);
    text = QString::asprintf("%.2f", double(sum));// 这个和C语法一致建议重点记忆
    text = text.sprintf("%.2f", double(sum));
    text = text.setNum(sum, 'f', 2);
    

    QString提供了大量的功能,可以通过查看QT帮助手 册得到。例如字符串拼接

    // QString的成员函数,将char数组str追加到当前字符串的末尾
    QString &append(const char *str)// QString的成员函数,格式化字符串并返回新的字符串,类似于C语言中的printf
    QString QString::arg(const QString &a, int fieldWidth = 0, QChar fillChar = QLatin1Char(' ')) const// 使用QString::arg的示例,将i、total和fileName按照给定的格式插入到字符串中
    QString status = QString("Processing file %1 of %2: %3").arg(i).arg(total).arg(fileName);
    

2.2.2 QString的常用功能

QString提供了大量的功能,有助于灵活实现字符串处理 功能,可以可以通过查看QT帮助手册得到。下面举几个 例子。

  • append()和prepend()

     QString x = "free";QString y = "dom";x.append(y);// x == "freedom"
    
    QString str1 = "World";
    QString str2 = "Hello ";
    str1.prepend(str2);  // 将 str2 插入到 str1 的开头
    qDebug() << str1;    // 输出:Hello World
    
  • toUpper() 和toLower()

     QString str = "TeXt"; //转大写str = str.toUpper();        // str == "TEXT"
    
    QString str = "Hello World";//转小写
    QString lowerStr = str.toLower();
    qDebug() << lowerStr;  // 输出:hello world
    
  • count() 、size() 和 length()

    /*字符串中如果有汉字 每个汉字算一个字符*/
    text = "NI 好啊";
    num = text.size(); // 5
    
  • trimmed() 和simplified()

     QString str = "  lots\t of\nwhitespace\r\n ";str = str.trimmed();// str == "lots\t of\nwhitespace"
    
    //去除字符串中连续重复的空白字符,同时将字符串两端的空白字符去除。
    QString str = "   Hello    World   ";
    QString simplifiedStr = str.simplified();
    qDebug() << simplifiedStr;  // 输出:Hello World
    
  • indexOf()和lastIndexOf()

    //在字符串中查找第一次出现子字符串的位置。 
    QString x = "sticky question";QString y = "sti";x.indexOf(y);               // returns 0x.indexOf(y, 1);            // returns 10x.indexOf(y, 10);           // returns 10x.indexOf(y, 11);           // returns -1
    
    //在字符串中查找最后一次出现子字符串的位置。
    QString str = "Hello World Hello";
    int lastIndex = str.lastIndexOf("Hello");
    qDebug() << "Last Index of 'Hello': " << lastIndex;  // 输出:Last Index of 'Hello': 12
  • append()和arg()

    //将一个字符串或字符追加到当前字符串的末尾 
    QString x = "free";QString y = "dom";x.append(y);// x == "freedom"
    
    //将占位符替换为字符串或其他数据
    QString str = "My name is %1 and I am %2 years old.";
    QString formattedStr = str.arg("John").arg(25);
    qDebug() << formattedStr;  // 输出:My name is John and I am 25 years old.
  • section()

     QString str;QString csv = "forename,middlename,surname,phone";QString path = "/usr/local/bin/myapp"; // First field is emptyQString::SectionFlag flag = QString::SectionSkipEmpty;str = csv.section(',', 2, 2);   // str == "surname"str = path.section('/', 3, 4);  // str == "bin/myapp"str = path.section('/', 3, 3, flag); // str == "myapp"
    
  • endsWith()和startsWith()

    //判断字符串是否以指定的后缀结束。 
    QString str = "Bananas";str.endsWith("anas");         // returns truestr.endsWith("pple");         // returns false
    
    //判断字符串是否以指定的前缀开始。
    QString str = "Hello World";
    bool startsWithHello = str.startsWith("Hello");
    qDebug() << "Starts with 'Hello': " << startsWithHello;  // 输出:Starts with 'Hello': true
  • isNull()和isEmpty()

    /* 如果此字符串为空,则返回true;否则返回false。 */QString().isNull();             // returns trueQString("").isNull();           // returns falseQString("abc").isNull();        // returns false
    //判断字符串是否为空(长度为 0)。
    QString str = "Hello";
    bool isEmpty = str.isEmpty();
    qDebug() << "Is Empty: " << isEmpty;  // 输出:Is Empty: false

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

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

相关文章

ioDraw在线图表工具 - 轻松制作专业图表,只需3步!

还在花大量时间手动画图表&#xff1f;还在为图表样式而烦恼&#xff1f;ioDraw为你提供一站式解决方案&#xff01;ioDraw在线图表工具实现了AI自动生成图表&#xff0c;让你轻松制作专业图表&#xff0c;只需3步&#xff01; 1. 录入数据 只需将你的数据告诉ioDraw AI助手&…

[Docker] Dockerfile

文章目录 什么是 Dockerfile&#xff1f;使用 Dockerfile 定制镜像开始构建镜像上下文路径 指令详解COPYADDCMDENTRYPOINTENVARGVOLUMEEXPOSEWORKDIRUSERHEALTHCHECKONBUILD 什么是 Dockerfile&#xff1f; Dockerfile 是一个用来构建镜像的文本文件&#xff0c;文本内容包含了…

Spring Boot异常处理!!!

SpringBoot默认的处理异常的机制&#xff1a;SpringBoot 默认的已经提供了一套处理异常的机制。一旦程序中出现了异常 SpringBoot 会向/error 的 url 发送请求。在 springBoot 中提供了一个叫 BasicErrorController 来处理/error 请求&#xff0c;然后跳转到默认显示异常的页面…

用Pytorch实现线性回归模型

目录 回顾Pytorch实现步骤1. 准备数据2. 设计模型class LinearModel代码 3. 构造损失函数和优化器4. 训练过程5. 输出和测试完整代码 练习 回顾 前面已经学习过线性模型相关的内容&#xff0c;实现线性模型的过程并没有使用到Pytorch。 这节课主要是利用Pytorch实现线性模型。…

(1)(1.13) SiK无线电高级配置(六)

文章目录 前言 15 使用FTDI转USB调试线配置SiK无线电设备 16 强制启动加载程序模式 17 名词解释 前言 本文提供 SiK 遥测无线电(SiK Telemetry Radio)的高级配置信息。它面向"高级用户"和希望更好地了解无线电如何运行的用户。 15 使用FTDI转USB调试线配置SiK无线…

vue3 锚点定位 点击滚动高亮

功能描述 点击导航跳到对应模块的起始位置&#xff0c;并且高亮点击的导航&#xff1b; 滚动到相应的模块时&#xff0c;对应的导航也自动高亮&#xff1b; 效果展示 注意事项 一定要明确哪个是要滚动的盒子&#xff1b;滚动的高度要减去导航栏的高度&#xff1b;当前在导航1…

【发票识别】支持pdf、ofd、图片格式(orc、信息提取)的发票

背景 为了能够满足识别各种发票的功能&#xff0c;特地开发了当前发票识别的功能&#xff0c;当前的功能支持pdf、ofd、图片格式的发票识别&#xff0c;使用到的技术包括文本提取匹配、ocr识别和信息提取等相关的技术&#xff0c;用到机器学习和深度学习的相关技术。 体验 体…

vue知识-06

es6导入导出语法 # 做项目&#xff1a;肯定要写模块--导入使用 # 如果包下有个 index.js 直接导到index.js上一次即可 默认导出和导入 : export default name // 只导出变量 export default add // 只导出函数 export default {name,add} // 导出对象 export defau…

【Linux】Git - 新手入门

文章目录 1. git 版本控制器 - 该如何理解&#xff1f;2. git / gitee / github 区别&#xff1f;3. Linux 中 git 的使用3.1 安装 git3.2 使用 github 新建远端仓库3.2.1 账号注册3.2.2 创建代码仓库3.2.3 克隆仓库到本地3.2.4 .gitignore 文件 3.3 使用 git 提交代码到 githu…

LeetCode 0082.删除排序链表中的重复元素 II:模拟

【LetMeFly】82.删除排序链表中的重复元素 II&#xff1a;模拟 力扣题目链接&#xff1a;https://leetcode.cn/problems/remove-duplicates-from-sorted-list-ii/ 给定一个已排序的链表的头 head &#xff0c; 删除原始链表中所有重复数字的节点&#xff0c;只留下不同的数字…

数据结构学习 jz30 包含 min 函数的栈

关键词&#xff1a;排序 题目&#xff1a;最小栈 方法一&#xff1a;在记录这个数的同时&#xff0c;记录目前的最小值。看了提示才写出来的。 方法二&#xff1a;辅助栈。辅助栈保持非严格递减。看了k神的答案。 方法一&#xff1a; 一开始没想到怎么存最小&#xff0c;看…

【野火i.MX6NULL开发板】Linux系统下的Hello World

0、前言 参考资料&#xff1a; 《野火 Linux 基础与应用开发实战指南基于 i.MX6ULL 系列》PDF 第25章 本章比较抽象&#xff0c;涉及理论知识&#xff0c;不明白&#xff0c;可以看看视频讲解&#xff1a; https://www.bilibili.com/video/BV1JK4y1t7io?p29&vd_sourcef…

拼多多今年的校招薪资。。。

拼多多校招情况分析 关于校招情况分析&#xff0c;我们写过了争议巨巨巨巨大的 华为、互联网宇宙厂 字节跳动 以及如今有点高攀不起的新能源车企 比亚迪。 群里收集过小伙伴的意见&#xff0c;除上述大厂以外&#xff0c;大家最感兴趣的还是市值刚超过阿里的砍厂&#xff1a;拼…

transbigdata笔记:其他方法

1 出租车相关 1.1 taxigps_to_od transbigdata.taxigps_to_od(data, col[VehicleNum, Stime, Lng, Lat, OpenStatus]) 输入出租车GPS数据&#xff0c;提取OD信息 data出租车GPS数据col[VehicleNum, Time, Lng, Lat, OpenStatus]五列 比如GPS数据长这样&#xff1a; oddata …

Maven《二》-- Maven的安装与配置(亲测成功版)

目录 &#x1f436;2.1 Maven的安装条件 &#x1f436;2.2 Maven安装步骤 1. 检查本地%JAVA_HOME% 2. 解压maven 3. 配置maven的环境变量 4. 校验maven是否配置成功 5. 配置本地仓库 &#x1f436;2.3 Idea配置本地Maven软件 &#x1f436;2.1 Maven的安装条件 各个工具…

为什么要找实习以及如何更好地度过实习期

前言 在职业发展的旅程中&#xff0c;实习是一个至关重要的阶段。不论是在大学生涯的尾声&#xff0c;还是在职场新人的起步阶段&#xff0c;寻找实习机会都是一项关键任务。然而&#xff0c;为什么要找实习&#xff1f;这个问题背后蕴含着更深层次的意义和价值。在这篇博客中…

java SSM物资采购管理系统myeclipse开发mysql数据库springMVC模式java编程计算机网页设计

一、源码特点 java SSM物资采购管理系统是一套完善的web设计系统&#xff08;系统采用SSM框架进行设计开发&#xff0c;springspringMVCmybatis&#xff09;&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代 码和数据库&#xff0c;系统主要采…

burp靶场-API testing

burp靶场 1.服务端主题 1.API测试 https://portswigger.net/web-security/api-testing#top 1.1 api探测api路径&#xff0c;数据格式&#xff0c;交互方法&#xff0c;参数是否必选&#xff1a; ## 使用Burp Scanner来爬取 API https://portswigger.net/burp/vulnerabilit…

虚幻UE 材质-材质图层、材质图层混合

学习材质图层和材质图层混合的使用&#xff0c;便于节点扫盲。 文章目录 前言一、材质图层混合二、使用步骤总结 前言 材质混合我们之前用Bridge的插件进行混合过 而此次我们的材质混合使用UE自带的材质图层和材质图层混合来实现 一、材质图层混合 材质图层混合是一种允许将…

Github镜像加速器-FastGit

简介 FastGit 是一个对于 GitHub.com 的镜像加速器。使用共享资源为 GitHub 加速。 FastGit中文指南 # 基本使用 关于 FastGit 的使用&#xff0c;本质上与 git 有关。常规的面向 GitHub 的 clone 命令可能如下&#xff1a; git clone https://github.com/author/repo使用 F…