QT学习_string转换和显示组件

QT例子

string转换

在这里插入图片描述

创建一个btnCal(pushbutton),三个lineEdit,计算购买水果价钱
右键btnCal,选择"go to slot…" -> “clicked()”,编写下列代码

void Widget::on_btnCal_clicked()
{
    QString str = ui->editNum->text();
    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);
}

进制转换

void Widget::on_btnDec_clicked()
{
    QString str = ui->editDec->text();
    int val = str.toInt();

    str = str.setNum(val,16);//to hex
    str = str.toUpper();
    ui->editHex->setText(str);

    str = str.setNum(val,2);
    ui->editBin->setText(str);
}

void Widget::on_btnBin_clicked()
{
    QString str = ui->editBin->text();
    bool ok;
    int val = str.toInt(&ok,2);

    str = str.setNum(val,16);//to hex
    str = str.toUpper();
    ui->editHex->setText(str);

    str = QString::number(val,10);
    ui->editDec->setText(str);
}

void Widget::on_btnHex_clicked()
{
    QString str = ui->editHex->text();
    bool ok;
    int val = str.toInt(&ok,16);

    str = str.setNum(val,10);
    ui->editDec->setText(str);

    str = str.setNum(val,2);
    ui->editBin->setText(str);
}

各种组件及其属性

  • QGroupBox
  • QAbstractSlider
    • QSlider
    • QScrollBar
    • QDial
  • QProgressBar
  • QLCDNumber
    在这里插入图片描述

源文件:

  1. 滑动RGB颜色滑动条设置textEdit底色
#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
    //将其他滑动条的valueChanged信号与槽函数相关联
    //则当4个滑动条任一滑动时,都调用这个槽函数
    QObject::connect(ui->SliderBlue,SIGNAL(valueChanged(int)),
                     this,SLOT(on_SliderRed_valueChanged(int)));
    QObject::connect(ui->SliderGreen,SIGNAL(valueChanged(int)),
                     this,SLOT(on_SliderRed_valueChanged(int)));
    QObject::connect(ui->SliderAlpha,SIGNAL(valueChanged(int)),
                     this,SLOT(on_SliderRed_valueChanged(int)));
}

Widget::~Widget()
{
    delete ui;
}

void Widget::on_SliderRed_valueChanged(int value)
{
    Q_UNUSED(value);
    QColor color;
    int R = ui->SliderRed->value();
    int G = ui->SliderGreen->value();
    int B = ui->SliderBlue->value();
    int alpha = ui->SliderAlpha->value();

    color.setRgb(R,G,B,alpha); //use setRgb to get color

    QPalette pal = ui->textEdit->palette();
    pal.setColor(QPalette::Base,color);
    ui->textEdit->setPalette(pal);
}

拖动dial组件,在LCD组件显示,旁边radio按钮选择数据的进制模式

void Widget::on_dial_valueChanged(int value)
{
    ui->lcdNumber->display(value);
}

void Widget::on_radioBtnDec_clicked()
{
    ui->lcdNumber->setDigitCount(3);
    ui->lcdNumber->setDecMode();
}

void Widget::on_radioBtnBin_clicked()
{
    ui->lcdNumber->setDigitCount(8);
    ui->lcdNumber->setBinMode();
}

void Widget::on_radioBtnOct_clicked()
{
    ui->lcdNumber->setDigitCount(4);
    ui->lcdNumber->setOctMode();
}

void Widget::on_radioBtnHex_clicked()
{
    ui->lcdNumber->setDigitCount(3);
    ui->lcdNumber->setHexMode();
}

头文件

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>

namespace Ui {
class Widget;
}

class Widget : public QWidget
{
    Q_OBJECT

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

private slots:
    void on_SliderRed_valueChanged(int value);

    void on_dial_valueChanged(int value);

    void on_radioBtnDec_clicked();

    void on_radioBtnBin_clicked();

     void on_radioBtnOct_clicked();

     void on_radioBtnHex_clicked();

private:
    Ui::Widget *ui;
};

#endif // WIDGET_H

这段程序涉及到几个不同的编程概念,包括字符串转换和图形界面中矩形区域的使用。程序的主要目的是将一个整数转换字符串,并将其赋值给一个 `QString` 对象,然后使用一个矩形区域。不过,代码中有几个需要注意的地方: 1. `std::to_string` 是 C++11 引入的函数,用于将数值类型转换字符串。这意味着 `countdown` 应该是某个数值类型(如 `int`、`long` 等)。 2. `QString` 是 Qt 框架中用于处理 Unicode 字符串的类。 3. `QRect` 是 Qt 框架中用于表示矩形区域的类。 如果你的目的是在 Qt 框架中使用这段代码,确保你已经包含了必要的头文件,例如 `<QString>` 和 `<QRect>`。接下来,考虑你可能想要将字符串显示在某个图形界面组件上,比如一个 `QLabel`。如果你想要设置标签的文本和位置,你可以这样做: ```cpp #include <QString> #include <QRect> #include <QLabel> #include <sstream> // 假设 countdown 是一个整数类型,比如 int int countdown = 10; // 示例值 // 将整数转换字符串 QString a = QString::number(countdown); // 创建一个 QLabel 对象并设置其文本 QLabel* label = new QLabel(); label->setText(a); // 创建一个 QRect 对象并设置其位置和大小 QRect textRect = QRect(10, 20, 100, 50); // 示例位置和大小 // 将矩形区域设置为标签的几何位置 label->setGeometry(textRect); ``` 请注意,`setText` 和 `setGeometry` 是 `QLabel` 类的方法,用于设置显示的文本和控件的位置及大小。此外,我使用了 `QString::number` 来替换 `std::to_string`,因为这样可以直接将数值转换为 `QString` 对象。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值