QT5笔记: 15. 其他显示组件的常用功能

其他显示组件的常用功能

其他显示组件

  • 代码
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
	//设置rgba的修改信号和槽
    connect(ui->horizontalSliderG, SIGNAL(valueChanged(int)), this, SLOT(on_horizontalSliderR_valueChanged(int)));
    connect(ui->horizontalSliderB, SIGNAL(valueChanged(int)), this, SLOT(on_horizontalSliderR_valueChanged(int)));
    connect(ui->horizontalSliderA, SIGNAL(valueChanged(int)), this, SLOT(on_horizontalSliderR_valueChanged(int)));
	//修改lcd进制的信号和槽
    connect(ui->radioBin, SIGNAL(clicked()), this, SLOT(on_radioHex_clicked()));
    connect(ui->radioOct, SIGNAL(clicked()), this, SLOT(on_radioHex_clicked()));
    connect(ui->radioDec, SIGNAL(clicked()), this, SLOT(on_radioHex_clicked()));
}

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

/**
 * @brief Widget::on_horizontalSliderR_valueChanged
 * @param value 未使用
 * @note 主要是通过滑块滑动的值对控件背景色的更改
 */
void Widget::on_horizontalSliderR_valueChanged(int value)
{
    Q_UNUSED(value);
    QPalette palette = ui->editColor->palette();
    int r = ui->horizontalSliderR->value();
    int g = ui->horizontalSliderG->value();
    int b = ui->horizontalSliderB->value();
    int a = ui->horizontalSliderA->value();
    QColor color;
    color.setRgba(qRgba(r, g, b, a));
    palette.setColor(QPalette::Base, color);
    ui->editColor->setPalette(palette);
}

void Widget::on_horizontalSliderH_valueChanged(int value)
{
    ui->progressBarH->setValue(value);
    ui->horizontalScrollBarH->setValue(value);
}

/**
 * @brief Widget::on_dial_valueChanged
 * @param value 设置给LCD控件的值
 */
void Widget::on_dial_valueChanged(int value)
{
    ui->lcdNumber->display(value);
}

/**
 * @brief Widget::on_radioHex_clicked
 * @note 设置LCD字的进制,0,8,10,16进制以及显示的位数
 * @note 当超过了显示的最大数,将无法正确显示,比如2进制5位最大显示0--31,所以设置的值为32,它将无法正确显示32的2进制,显示的是32的十进制
 */
void Widget::on_radioHex_clicked()
{
    QRadioButton * btn = qobject_cast<QRadioButton *>(sender());
    ui->lcdNumber->setDigitCount(5);

    if(btn->text().contains("Hex"))
    {
        ui->lcdNumber->setHexMode();
    }
    else if(btn->text().contains("Bin"))
    {
        ui->lcdNumber->setBinMode();
    }
    else if(btn->text().contains("Oct"))
    {
        ui->lcdNumber->setOctMode();
    }
    else
    {
        ui->lcdNumber->setDecMode();
    }
}
  • 界面
    最终界面
posted @ 2023-03-15 18:10  echo_lovely  阅读(36)  评论(0编辑  收藏  举报