Qt(六)数值与字符串转换

一、UI设计

新建项目,主要选项如下图:一个QWidget,带ui文件,并初步Ui设计
拖动组件:QLable,QPushButton,QlineEdit。
在这里插入图片描述
详情ui文件

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>Widget</class>
 <widget class="QWidget" name="Widget">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>511</width>
    <height>203</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>Widget</string>
  </property>
  <layout class="QGridLayout" name="gridLayout_3">
   <item row="0" column="0">
    <layout class="QGridLayout" name="gridLayout">
     <item row="0" column="0">
      <widget class="QLabel" name="label">
       <property name="text">
        <string>数量:</string>
       </property>
      </widget>
     </item>
     <item row="0" column="1">
      <widget class="QLineEdit" name="lineEditNum">
       <property name="text">
        <string>12</string>
       </property>
      </widget>
     </item>
     <item row="0" column="2" rowspan="2">
      <spacer name="horizontalSpacer">
       <property name="orientation">
        <enum>Qt::Horizontal</enum>
       </property>
       <property name="sizeHint" stdset="0">
        <size>
         <width>17</width>
         <height>20</height>
        </size>
       </property>
      </spacer>
     </item>
     <item row="0" column="3">
      <widget class="QLabel" name="label_2">
       <property name="text">
        <string>单价:</string>
       </property>
      </widget>
     </item>
     <item row="0" column="4">
      <widget class="QLineEdit" name="lineEditPrice">
       <property name="text">
        <string>5.0</string>
       </property>
      </widget>
     </item>
     <item row="1" column="1">
      <widget class="QPushButton" name="pushButton">
       <property name="text">
        <string>计算</string>
       </property>
      </widget>
     </item>
     <item row="1" column="3">
      <widget class="QLabel" name="label_3">
       <property name="text">
        <string>总价:</string>
       </property>
      </widget>
     </item>
     <item row="1" column="4">
      <widget class="QLineEdit" name="lineEditTotal"/>
     </item>
    </layout>
   </item>
   <item row="1" column="0">
    <spacer name="verticalSpacer">
     <property name="orientation">
      <enum>Qt::Vertical</enum>
     </property>
     <property name="sizeHint" stdset="0">
      <size>
       <width>20</width>
       <height>9</height>
      </size>
     </property>
    </spacer>
   </item>
   <item row="2" column="0">
    <layout class="QGridLayout" name="gridLayout_2">
     <item row="0" column="1">
      <widget class="QLineEdit" name="lineEditTen">
       <property name="text">
        <string>15</string>
       </property>
      </widget>
     </item>
     <item row="2" column="2">
      <widget class="QPushButton" name="pushButton_4">
       <property name="text">
        <string>转换成其他进制</string>
       </property>
      </widget>
     </item>
     <item row="0" column="2">
      <widget class="QPushButton" name="pushButton_2">
       <property name="text">
        <string>转换成其他进制</string>
       </property>
      </widget>
     </item>
     <item row="1" column="0">
      <widget class="QLabel" name="label_5">
       <property name="text">
        <string>二进制:</string>
       </property>
      </widget>
     </item>
     <item row="2" column="1">
      <widget class="QLineEdit" name="lineEditHex"/>
     </item>
     <item row="2" column="0">
      <widget class="QLabel" name="label_6">
       <property name="text">
        <string>十六进制:</string>
       </property>
      </widget>
     </item>
     <item row="1" column="2">
      <widget class="QPushButton" name="pushButton_3">
       <property name="text">
        <string>转换成其他进制</string>
       </property>
      </widget>
     </item>
     <item row="1" column="1">
      <widget class="QLineEdit" name="lineEditSec"/>
     </item>
     <item row="0" column="0">
      <widget class="QLabel" name="label_4">
       <property name="text">
        <string>十进制:</string>
       </property>
      </widget>
     </item>
    </layout>
   </item>
  </layout>
 </widget>
 <resources/>
 <connections/>
</ui>

二、代码开发

代码使用“转到槽“生成代码
widget.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>

QT_BEGIN_NAMESPACE
namespace Ui {
    
     class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    
    
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

private slots:
    void on_pushButton_clicked();
    void on_pushButton_2_clicked();
    void on_pushButton_3_clicked();

private:
    Ui::Widget *ui;
};
#endif // WIDGET_H

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()
{
    
    
    QString str = ui->lineEditNum->text();
    int num = str.toInt();

    str = ui->lineEditPrice->text();
    float price = str.toFloat();
    float total = num * price;

    str = str.setNum(total,'f', 2);
    ui->lineEditTotal->setText(str);
}

void Widget::on_pushButton_2_clicked()
{
    
    
    QString str = ui->lineEditTen->text();
    int value = str.toInt();
    str = str.setNum(value,2);
    ui->lineEditSec->setText(str);

    str = str.setNum(value,16);
    ui->lineEditHex->setText(str.toUpper());
}

void Widget::on_pushButton_3_clicked()
{
    
    
    QString str = ui->lineEditSec->text();
    bool ok;
    int value = str.toInt(&ok, 2);  // 以二进制方式读入
    ui->lineEditTen->setText(QString::number(value));
    ui->lineEditHex->setText(QString::number(value,16).toUpper());
}

void Widget::on_pushButton_4_clicked()
{
    
    
    QString str = ui->lineEditHex->text();
    bool ok;
    int value = str.toInt(&ok, 16);  // 以十六进制方式读入
    ui->lineEditTen->setText(QString::number(value));
    ui->lineEditSec->setText(QString::number(value, 2));
}

三、演示效果

这里没有做容错处理,在输入字符时特别是:二进制只能是:01,十六进制只能是:0-9A-F。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/wsp_1138886114/article/details/122835465
今日推荐