Qt字符串与数字之间的转换方法详解
Qt 界面设计时使用最多的组件恐怕就是 QLabel 和 QLineEdit 了,QLabel 用于显示字符串,QLineEdit 用于显示和输入字符串。这两个类都有如下的两个函数用于读取和设置显示文字。
图 1 编辑状态的界面
图 1 是实例设计时的窗体,是基于 QWidget 创建的可视化窗体。界面设计使用了布局管理,窗体上组件的布局是:上方的几个组件是一个 GridLayout,下方的 9 个组件也是一个 GridLayout,两个 GridLayout 和中间一个 Vertical Spacer 又组成一个 VerticalLayout。
在布局设计时,要巧妙运用 VerticalSpacer 和 HorizontalSpacer,还要会设置组件的 MaximumSize 和 MinimumSize 属性,以取得期望的布局效果。例如,在图 1 中,两个 GridLayout 之间放了一个垂直方向的分隔,当窗体变大时,两个 GridLayout 的高度并不会发生变化;而如果不放置这个垂直分隔,两个 GridLayout 的高度都会发生变化,GridLayout 内部组件的垂直距离会发生变化。
在 UI 设计器里,选中图 1 中的“计算”按钮,在右键快捷菜单里单击“Go to slot…”,并在出现的对话框里选择 clicked() 信号创建槽函数,在自动生成的函数体里编写如下的代码,实现从界面上分别读取数量和单价,相乘计算后将结果再显示到文本框里。
QString 将字符串转换为浮点数的函数有:
QString text() const
void setText(const QString &)
图 1 编辑状态的界面
图 1 是实例设计时的窗体,是基于 QWidget 创建的可视化窗体。界面设计使用了布局管理,窗体上组件的布局是:上方的几个组件是一个 GridLayout,下方的 9 个组件也是一个 GridLayout,两个 GridLayout 和中间一个 Vertical Spacer 又组成一个 VerticalLayout。
在布局设计时,要巧妙运用 VerticalSpacer 和 HorizontalSpacer,还要会设置组件的 MaximumSize 和 MinimumSize 属性,以取得期望的布局效果。例如,在图 1 中,两个 GridLayout 之间放了一个垂直方向的分隔,当窗体变大时,两个 GridLayout 的高度并不会发生变化;而如果不放置这个垂直分隔,两个 GridLayout 的高度都会发生变化,GridLayout 内部组件的垂直距离会发生变化。
在 UI 设计器里,选中图 1 中的“计算”按钮,在右键快捷菜单里单击“Go to slot…”,并在出现的对话框里选择 clicked() 信号创建槽函数,在自动生成的函数体里编写如下的代码,实现从界面上分别读取数量和单价,相乘计算后将结果再显示到文本框里。
void Widget::on_btnCal_clicked() { QString str=ui->editNum->text () ;//读取n数量n int num=str.toInt(); str=ui->editPrice->text (); //读取"单价" float price=str.toFloat(); float total=num*price; str=str.sprintf ("%.2f",total); ui->editTotal->setText(str); }QString 类从字符串转换为整数的函数有:
int toInt(bool * ok = Q_NULLPTR, int base = 10) const
long toLong (bool * ok = Q_NULLPTR, int base = 10) const
short toShort (bool * ok = Q_NULLPTR, int base = 10) const
uint toUInt (bool *ok = Q_NULLPTR, int base = 10) const
ulong toULong (bool *ok = Q_NULLPTR, int base = 10) const
QString 将字符串转换为浮点数的函数有:
double toDouble(bool *ok = Q_NULLPTR) const
float toFloat (bool * ok = Q_NULLPTR) const
str=QString::number(total,'f',2);
str=QString::asprintf ("%.2f", total);
str=str.setNum(total,'f',2);
str=str.sprintf ("%.2f,total);
进制转换
以下是读取十进制数转换为二进制和十六进制字符串的按钮的槽函数代码:void Widget::on_btnDec_clicked() { //读取十进制数,转换为其他进制 QString str=ui->editDec->text(); int val=str.toInt;//缺省为十进制 // str=QString::number(val, 16);//转换为十六进制的字符串 str=str.setNum (val, 16); //十六进制 str=str.toUpper(); ui->editHex->setText(str); str=str.setNum (val, 2) ; //二进制 // str=QString::number(val,2); ui->editBin->setText(str); }将一个整数转换为不同进制的字符串,可以使用 QString 的函数 setNum() 或静态函数 number(),它们的函数原型是:
Qstring &setNum (int n, int base = 10)
QString number (int n, int base = 10)
void Widget::on_btnBin_clicked() { //读取二进制数,转换为其他进制的数 QString str=ui->editBin->text () ; //读取二进制字符串 bool ok; int val=str.tolnt (&ok, 2) ; //以二进制数读入 str=QString::number (val, 10) ;//数字显示为十进制字符串 ui->editDec->setText(str); str=str.setNum (val, 16) ; //显示为十六进制 str=str.toUpper(); ui->editHex->setText(str); }
所有教程
- C语言入门
- C语言编译器
- C语言项目案例
- 数据结构
- C++
- STL
- C++11
- socket
- GCC
- GDB
- Makefile
- OpenCV
- Qt教程
- Unity 3D
- UE4
- 游戏引擎
- Python
- Python并发编程
- TensorFlow
- Django
- NumPy
- Linux
- Shell
- Java教程
- 设计模式
- Java Swing
- Servlet
- JSP教程
- Struts2
- Maven
- Spring
- Spring MVC
- Spring Boot
- Spring Cloud
- Hibernate
- Mybatis
- MySQL教程
- MySQL函数
- NoSQL
- Redis
- MongoDB
- HBase
- Go语言
- C#
- MATLAB
- JavaScript
- Bootstrap
- HTML
- CSS教程
- PHP
- 汇编语言
- TCP/IP
- vi命令
- Android教程
- 区块链
- Docker
- 大数据
- 云计算