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

04-1_Qt 5.9 C++开发指南_常用界面设计组件_字符串QString

本章主要介绍Qt中的常用界面设计组件,因为更多的是涉及如何使用,因此会强调使用,也就是更多针对实例,而对于一些细节问题,需要参考《Qt5.9 c++开发指南》进行学习。

文章目录

  • 1. 字符串与普通转换、进制转换
    • 1.1 可视化UI设计
    • 1.2 widget.h
    • 1.3 widget.cpp
  • 2. QString 的常用功能
    • 2.1 可视化UI设计
    • 2.2 widget.h
    • 2.3 widget.cpp

1. 字符串与普通转换、进制转换

图4-1是实例samp4_1 设计时的窗体,是基于QWidget 创建的可视化窗体。界面设计使用了布局管理,窗体上组件的布局是:上方的几个组件是一个 GridLayout,下方的9 个组件也是一个GridLayout,两个 GridLayout 和中间一个 VerticalSpacer又组成一个 VerticalLayout。

在这里插入图片描述

在布局设计时,要巧妙运用 VerticalSpacer 和 HorizontalSpacer,还要会设置组件的MaximumSize 和MinimumSize 属性,以取得期望的布局效果。例如,在图 4-1 中,两个 GridLayout 之间放了一个垂直方向的分隔,当窗体变大时,两个 GridLayout 的高度并不会发生变化;而如果不放置这个垂直分隔,两个 GridLayout的高度都会发生变化,GridLayout 内部组件的垂直距离会发生变化。

1.1 可视化UI设计

在这里插入图片描述

1.2 widget.h

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>namespace Ui {
class Widget;
}class Widget : public QWidget
{Q_OBJECTpublic:explicit Widget(QWidget *parent = 0);~Widget();private slots:void on_btnCal_clicked();  //计算 按键单击响应void on_btnDec_clicked();   //十进制转换为其他进制void on_btnBin_clicked();   //二进制转换为其他进制void on_btnHex_clicked();   //十六进制转换为其他进制private:Ui::Widget *ui;
};#endif // WIDGET_H

1.3 widget.cpp

#include "widget.h"
#include "ui_widget.h"
#include    <QString>Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget)
{ui->setupUi(this);
}Widget::~Widget()
{delete ui;
}void Widget::on_btnCal_clicked()
{ //计算 按键单击响应int num=ui->editNum->text().toInt(); //读取字符串为整数float price=ui->editPrice->text().toFloat();//读取字符串为浮点数float total=num*price;//相乘计算QString str;
//    str=str.setNum(total,'f',2); //浮点数2位小数str=str.sprintf("%.2f",total); //格式化输出浮点数ui->editTotal->setText(str);//在文本框里显示
}void Widget::on_btnDec_clicked()
{ //读取十进制数,转换为其他进制int val=ui->editDec->text().toInt();//读取十进制数QString str=QString::number(val,16);// 显示为16进制 的字符串str=str.toUpper(); //转换为全大写字母ui->editHex->setText(str);//显示16进制字符串str=QString::number(val,2);// 显示2进制的字符串ui->editBin->setText(str);//显示二进制字符串
}void Widget::on_btnBin_clicked()
{ //读取二进制数,转换为其他进制的数bool ok;int val=ui->editBin->text().toInt(&ok,2);//以二进制数读入QString str=QString::number(val,10);//数字显示为10进制字符串ui->editDec->setText(str);//显示10进制数字符串str=QString::number(val,16);//显示为十六进制字符串str=str.toUpper(); //全大写字母ui->editHex->setText(str);//显示十六进制字符串
}void Widget::on_btnHex_clicked()
{//读取16进制数,转换为其他进制的数bool ok;int val=ui->editHex->text().toInt(&ok,16);//以十六进制数读入QString str=QString::number(val,10);// 显示为10进制字符串ui->editDec->setText(str);//显示为10进制字符串str=QString::number(val,2);// 显示二进制字符串ui->editBin->setText(str);//显示二进制字符串
}

2. QString 的常用功能

QString 是 Qt 编程中常用的类,除了用作数字量的输入输出之外,QString 还有很多其他功能,熟悉这些常见的功能,有助于灵活地实现字符串处理功能。
QString 存储字符串采用的是 Unicode 码,每一个字符是一个 16 位的 QChar,而不是8 位的char,所以 QString 处理中文字符没有问题,而且一个汉字算作是一个字符。

图4-2 是对 QString 常用函数的测试实例 samp4_2 的运行界面。下面在说明函数功能时,对于同名不同参数的函数,只说明某种参数下的使用实例。QString 还有很多功能函数没有在此介绍,在使用中如果遇到,可查询 Qt 的帮助文件。

在这里插入图片描述

2.1 可视化UI设计

在这里插入图片描述

2.2 widget.h

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>namespace Ui {
class Widget;
}class Widget : public QWidget
{Q_OBJECTpublic:explicit Widget(QWidget *parent = 0);~Widget();private slots:void on_pushButton_clicked();void on_pushButton_2_clicked();void on_pushButton_3_clicked();void on_pushButton_4_clicked();void on_pushButton_5_clicked();void on_pushButton_6_clicked();void on_pushButton_7_clicked();void on_pushButton_8_clicked();void on_pushButton_9_clicked();void on_pushButton_10_clicked();void on_pushButton_11_clicked();void on_pushButton_12_clicked();void on_pushButton_13_clicked();void on_pushButton_14_clicked();void on_pushButton_15_clicked();void on_pushButton_16_clicked();void on_pushButton_17_clicked();void on_pushButton_18_clicked();private:Ui::Widget *ui;
};#endif // WIDGET_H

2.3 widget.cpp

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget)
{ui->setupUi(this);
}Widget::~Widget()
{delete ui;
}void Widget::on_pushButton_clicked()
{//append()函数QString str1,str2;str1=ui->comboBox1->currentText();str2=ui->comboBox2->currentText();str1.append(str2);ui->edtResult->setText(str1);
}void Widget::on_pushButton_2_clicked()
{//prepend()函数QString str1,str2;str1=ui->comboBox1->currentText();str2=ui->comboBox2->currentText();str1.prepend(str2);ui->edtResult->setText(str1);
}void Widget::on_pushButton_3_clicked()
{//contains()函数QString str1,str2;str1=ui->comboBox1->currentText();str2=ui->comboBox2->currentText();bool chk;chk=str1.contains(str2);ui->checkBox->setChecked(chk);ui->checkBox->setText("contains()");ui->checkBox->sizeHint();
}void Widget::on_pushButton_4_clicked()
{//count()函数QString str1=ui->comboBox1->currentText();int i=str1.count();
//    int i=str1.length();ui->spinBox->setValue(i);ui->LabSpin->setText("count()");
}void Widget::on_pushButton_5_clicked()
{//size()函数QString str1;str1=ui->comboBox1->currentText();int i=str1.size();ui->spinBox->setValue(i);ui->LabSpin->setText("size()");}void Widget::on_pushButton_6_clicked()
{//endsWith()函数QString str1,str2;str1=ui->comboBox1->currentText();str2=ui->comboBox2->currentText();bool chk;chk=str1.endsWith(str2);ui->checkBox->setChecked(chk);ui->checkBox->setText("endsWith()");ui->checkBox->sizeHint();
}void Widget::on_pushButton_7_clicked()
{//indexOf()函数QString str1,str2;str1=ui->comboBox1->currentText();str2=ui->comboBox2->currentText();int i;i=str1.indexOf(str2);ui->spinBox->setValue(i);ui->LabSpin->setText("indexOf()");
}void Widget::on_pushButton_8_clicked()
{//isEmpty()函数QString str1;str1=ui->comboBox1->currentText();bool chk;chk=str1.isEmpty();ui->checkBox->setChecked(chk);ui->checkBox->setText("isEmpty()");ui->checkBox->sizeHint();
}void Widget::on_pushButton_9_clicked()
{//lastIndexOf()函数QString str1,str2;str1=ui->comboBox1->currentText();str2=ui->comboBox2->currentText();int i;i=str1.lastIndexOf(str2);ui->spinBox->setValue(i);ui->LabSpin->setText("lastIndexOf()");
}void Widget::on_pushButton_10_clicked()
{//startsWith()函数QString str1,str2;str1=ui->comboBox1->currentText();str2=ui->comboBox2->currentText();bool chk;chk=str1.startsWith(str2);ui->checkBox->setChecked(chk);ui->checkBox->setText("startsWith()");ui->checkBox->sizeHint();
}void Widget::on_pushButton_11_clicked()
{//toUpper()函数QString str1,str2;str1=ui->comboBox1->currentText();str2=str1.toUpper();ui->edtResult->setText(str2);
}void Widget::on_pushButton_12_clicked()
{//toLower()函数QString str1,str2;str1=ui->comboBox1->currentText();str2=str1.toLower();ui->edtResult->setText(str2);
}void Widget::on_pushButton_13_clicked()
{//trimmed()函数QString str1;str1=ui->comboBox1->currentText();str1=str1.trimmed();ui->edtResult->setText(str1);}void Widget::on_pushButton_14_clicked()
{//section()函数int i;QString str1,str2,str3;str1=ui->comboBox1->currentText();i=ui->spinBox->value();
//    str2=str1.section('\\',2,2);str3=ui->comboBox2->currentText();if (QString::compare(str3,"\\",Qt::CaseInsensitive)==0)str2=str1.section('\\',i,i+1); //elsestr2=str1.section(str3,i,i+1); //ui->edtResult->setText(str2);
}void Widget::on_pushButton_15_clicked()
{//left()函数QString str1,str2;str1=ui->comboBox1->currentText();int v=ui->spinBox->value();str2=str1.left(v);ui->edtResult->setText(str2);
}void Widget::on_pushButton_16_clicked()
{//right()函数QString str1,str2;str1=ui->comboBox1->currentText();int cnt=str1.size();int v=ui->spinBox->value();str2=str1.right(cnt-v-1);ui->edtResult->setText(str2);
}void Widget::on_pushButton_17_clicked()
{//simplified()函数QString str1;str1=ui->comboBox1->currentText();str1=str1.simplified();ui->edtResult->setText(str1);
}void Widget::on_pushButton_18_clicked()
{//isNull()函数QString str1;str1=ui->comboBox1->currentText();bool chk;chk=str1.isNull();ui->checkBox->setChecked(chk);ui->checkBox->setText("isNull()");ui->checkBox->sizeHint();
}

相关文章:

04-1_Qt 5.9 C++开发指南_常用界面设计组件_字符串QString

本章主要介绍Qt中的常用界面设计组件&#xff0c;因为更多的是涉及如何使用&#xff0c;因此会强调使用&#xff0c;也就是更多针对实例&#xff0c;而对于一些细节问题&#xff0c;需要参考《Qt5.9 c开发指南》进行学习。 文章目录 1. 字符串与普通转换、进制转换1.1 可视化U…...

Centos 从0搭建grafana和Prometheus 服务以及问题解决

下载 虚拟机下载 https://customerconnect.vmware.com/en/downloads/info/slug/desktop_end_user_computing/vmware_workstation_player/17_0 cenos 镜像下载 https://www.centos.org/download/ grafana 服务下载 https://grafana.com/grafana/download/7.4.0?platformlinux …...

【代码解读】RRNet: A Hybrid Detector for Object Detection in Drone-captured Images

文章目录 1. train.py2. DistributedWrapper类2.1 init函数2.2 train函数2.3 dist_training_process函数 3. RRNetOperator类3.1 init函数3.1.1 make_dataloader函数 3.2 training_process函数3.2.1 criterion函数 4. RRNet类&#xff08;网络模型类&#xff09;4.1 init函数4.…...

python人工智能可以干什么,python人工智能能干什么

大家好&#xff0c;给大家分享一下python做人工智能需要什么水平&#xff0c;很多人还不知道这一点。下面详细解释一下。现在让我们来看看&#xff01; 人工智能包含常用机器学习和深度学习两个很重要的模块&#xff0c;而python拥有matplotlib、Numpy、sklearn、keras等大量的…...

K8s工作原理

K8s title: Kubernetes之初探 subtitle: K8s的工作原理 date: 2018-09-18 18:26:37K8s概述 我清晰地记得曾经读到过的一篇博文&#xff0c;上面是这样写的&#xff0c; “云端教父AWS云端架构策略副总裁Adrian Cockcroft曾指出&#xff0c;两者虽然都是运用容器技术&#xff0…...

go错误集(持续更新)

1.提示以下报错 Build Error: go build -o c:\Users\Administrator\Desktop__debug_bin2343731882.exe -gcflags all-N -l . go: go.mod file not found in current directory or any parent directory; see ‘go help modules’ (exit status 1) 解决办法&#xff1a; go …...

【Docker】Docker中network的概要、常用命令、网络模式以及底层ip和容器映射变化的详细讲解

&#x1f680;欢迎来到本文&#x1f680; &#x1f349;个人简介&#xff1a;陈童学哦&#xff0c;目前学习C/C、算法、Python、Java等方向&#xff0c;一个正在慢慢前行的普通人。 &#x1f3c0;系列专栏&#xff1a;陈童学的日记 &#x1f4a1;其他专栏&#xff1a;CSTL&…...

arcgis栅格数据之最佳路径分析

1、打开arcmap&#xff0c;加载数据&#xff0c;需要对影像进行监督分类&#xff0c;如下&#xff1a; 这里任选一种监督分类的方法&#xff08;最大似然法&#xff09;&#xff0c;如下&#xff1a; 这里会先生成一个.ecd文件&#xff0c;然后再利用.ecd文件对影像进行分类。如…...

docker服务器部署Django

Django是一个广泛使用的Python Web框架&#xff0c;而Docker是一个增强应用程序部署的流行容器平台。结合这两个技术&#xff0c;可以轻松地部署和维护Django应用程序。在本文中&#xff0c;我们将探讨如何使用Docker在服务器上部署Django应用程序。 1、安装Docker和Docker Co…...

SpringBoot集成百度人脸识别实现登陆注册功能Demo(二)

前言 上一篇SpringBoot集成百度人脸demo中我使用的是调用本机摄像头完成人脸注册&#xff0c;本次demo根据业务需求的不同我采用文件上传的方式实现人脸注册。 效果演示 首页 注册 后端响应数据&#xff1a; 登录 后端响应数据&#xff1a; 项目结构 后端代码实现 1、Bai…...

FPGA纯verilog实现 LZMA 数据压缩,提供工程源码和技术支持

目录 1、前言2、我这儿已有的FPGA压缩算法方案3、FPGA LZMA数据压缩功能和性能4、FPGA LZMA 数据压缩设计方案输入输出接口描述数据处理流程LZ检索器数据同步LZMA 压缩器 为输出LZMA压缩流添加文件头 5、vivado仿真6、福利&#xff1a;工程代码的获取 1、前言 说到FPGA的应用&…...

C++实现一个链栈

C实现一个链栈 什么是链栈如何实现链栈链栈的实现开发环境代码实现运行结果 什么是链栈 链栈不名思意&#xff0c;就是既具有链表的特性&#xff0c;又具有栈的特性。 即&#xff1a; 链栈中的元素由指针域和数据域组成&#xff0c;通过指针指向下一个元素&#xff1b;2.链栈同…...

Vue电商项目--VUE插件的使用及原理

图片懒加载 图片懒加载&#xff0c;就是图片延迟加载。只加载页面可视区域上的图片&#xff0c;等滚动到页面下面时&#xff0c;再加载对应视口上的图片 而在vue中有一个插件 vue-lazyload - npm (npmjs.com) npm i vue-lazyload 去使用他&#xff0c;这里我们引入了一张图片…...

2.部署kubernetes的组件

文章目录 部署kubernetes单master的K8S集群Linux初始化部署etcd证书环境etcd软件备份还原etcd 部署master组件部署apiserver部署controller-manager部署scheduler部署kubectl 部署node组件部署dockernode01节点node02节点部署kube-proxy K8S 二进制搭建总结 部署kubernetes 常见…...

后端开发4.Elasticsearch的搭建

使用docker安装 安装elasticsearch 拉取镜像 docker pull elasticsearch:7.17.0容器间建立通信,创建 elastic的网关 docker network create elastic 创建es容器【自启动】【虚拟机处理器数量至少两个】 docker run --restart=always -p 9200:9200 -p 9300:9300 -e "…...

嵌入式该往哪个方向发展?

1. 你所在的城市嵌入式Linux岗位多吗&#xff1f;我觉得这是影响你做决定的另一个大问题。我们学嵌入式Linux这门技术&#xff0c;绝大部分人是为了从事相关的工作&#xff0c;而不是陶冶情操。但是根据火哥统计来看&#xff0c;嵌入式Linux的普遍薪资虽然高于单片机&#xff0…...

非凸科技受邀参加中科大线上量化分享

7月30日&#xff0c;非凸科技受邀参加由中国科学技术大学管理学院学生会、超级量化共同组织的“打开量化私募的黑箱”线上活动&#xff0c;分享量化前沿以及求职经验&#xff0c;助力同学们拿到心仪的offer。 活动上&#xff0c;非凸科技量化策略负责人陆一洲从多个角度分享了如…...

Linux 命令之 - chown(改变文件拥有者及所属组)

基本语法&#xff1a; chown [-R] 账号名称 文件或目录 chown [-R] 账号名称:用户组名称 文件或目录 参数&#xff1a; -R : 进行递归( recursive )的持续更改&#xff0c;即连同子目录下的所有文件、目录 都更新成为这个用户组。常常用在更改某一目录的情况。 参考&…...

【基于openharmony的多路摄像头功能:USB设备插拔检测】

前言 最近项目接触的模块比较繁多而杂&#xff0c;因此开始写文章记录下用以总结。 目前在做的是基于openharmony3.2的多camera功能主要涉及HDF(HAL)层与framework层。 本文章涉及多路摄像头功能的第一步&#xff1a;支持USB摄像头插拔检测。 内容 目前openharmony在HDF层…...

uni-app:实现数字文本框,以及左右加减按钮

效果 代码 <template><view><view classline3><view classline3_position><view classleft>数量<text>*</text></view> <view class"right"><view class"quantity_btn"><view class"…...

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…...

ES6从入门到精通:前言

ES6简介 ES6&#xff08;ECMAScript 2015&#xff09;是JavaScript语言的重大更新&#xff0c;引入了许多新特性&#xff0c;包括语法糖、新数据类型、模块化支持等&#xff0c;显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var&#xf…...

在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能

下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能&#xff0c;包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...

【磁盘】每天掌握一个Linux命令 - iostat

目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat&#xff08;I/O Statistics&#xff09;是Linux系统下用于监视系统输入输出设备和CPU使…...

1.3 VSCode安装与环境配置

进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件&#xff0c;然后打开终端&#xff0c;进入下载文件夹&#xff0c;键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...

Cinnamon修改面板小工具图标

Cinnamon开始菜单-CSDN博客 设置模块都是做好的&#xff0c;比GNOME简单得多&#xff01; 在 applet.js 里增加 const Settings imports.ui.settings;this.settings new Settings.AppletSettings(this, HTYMenusonichy, instance_id); this.settings.bind(menu-icon, menu…...

零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)

本期内容并不是很难&#xff0c;相信大家会学的很愉快&#xff0c;当然对于有后端基础的朋友来说&#xff0c;本期内容更加容易了解&#xff0c;当然没有基础的也别担心&#xff0c;本期内容会详细解释有关内容 本期用到的软件&#xff1a;yakit&#xff08;因为经过之前好多期…...

JAVA后端开发——多租户

数据隔离是多租户系统中的核心概念&#xff0c;确保一个租户&#xff08;在这个系统中可能是一个公司或一个独立的客户&#xff09;的数据对其他租户是不可见的。在 RuoYi 框架&#xff08;您当前项目所使用的基础框架&#xff09;中&#xff0c;这通常是通过在数据表中增加一个…...

HarmonyOS运动开发:如何用mpchart绘制运动配速图表

##鸿蒙核心技术##运动开发##Sensor Service Kit&#xff08;传感器服务&#xff09;# 前言 在运动类应用中&#xff0c;运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据&#xff0c;如配速、距离、卡路里消耗等&#xff0c;用户可以更清晰…...

安宝特案例丨Vuzix AR智能眼镜集成专业软件,助力卢森堡医院药房转型,赢得辉瑞创新奖

在Vuzix M400 AR智能眼镜的助力下&#xff0c;卢森堡罗伯特舒曼医院&#xff08;the Robert Schuman Hospitals, HRS&#xff09;凭借在无菌制剂生产流程中引入增强现实技术&#xff08;AR&#xff09;创新项目&#xff0c;荣获了2024年6月7日由卢森堡医院药剂师协会&#xff0…...