Qt中,通过QSlider进行拖动、QLineEdit进行数值设置,联动设置QColor颜色值。并通过QTextEdit文本框进行设置颜色的显示。
1、创建工程并进行界面设计。创建基于QWidget基类的Qt界面应用程序,并在主界面添加相关控件如下:
界面控件依次为:QLabel、QSlider、QLineEdit、QLabel、QSlider、QLineEdit、QLabel、QSlider、QLineEdit、QTextEdit。
2、创建创建槽函数及类私有函数
.h头文件创建槽函数及类私有函数:
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = 0);
~Widget();
protected slots:
void sliderValueChanged(int);
void lineEditTextChanged(QString);
private:
Ui::Widget *ui;
};
#endif // WIDGET_H
.cpp源文件构造函数内绑定槽函数,并实现槽函数
#include "widget.h"
#include "ui_widget.h"
#include <QColorDialog>
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
ui->horizontalSlider_alpha->setValue(255);
QColor color;
color.setRgb(0,0,0,255);
QPalette palette = ui->textEdit->palette();
palette.setColor(QPalette::Base,color);
ui->textEdit->setPalette(palette);
connect(ui->horizontalSlider_red,SIGNAL(valueChanged(int)),this,SLOT(sliderValueChanged(int)));
connect(ui->horizontalSlider_green,SIGNAL(valueChanged(int)),this,SLOT(sliderValueChanged(int)));
connect(ui->horizontalSlider_blue,SIGNAL(valueChanged(int)),this,SLOT(sliderValueChanged(int)));
connect(ui->horizontalSlider_alpha,SIGNAL(valueChanged(int)),this,SLOT(sliderValueChanged(int)));
connect(ui->lineEdit_red,SIGNAL(textChanged(QString)),this,SLOT(lineEditTextChanged(QString)));
connect(ui->lineEdit_green,SIGNAL(textChanged(QString)),this,SLOT(lineEditTextChanged(QString)));
connect(ui->lineEdit_blue,SIGNAL(textChanged(QString)),this,SLOT(lineEditTextChanged(QString)));
connect(ui->lineEdit_alpha,SIGNAL(textChanged(QString)),this,SLOT(lineEditTextChanged(QString)));
}
Widget::~Widget()
{
delete ui;
}
void Widget::sliderValueChanged(int value)
{
int Red = ui->horizontalSlider_red->value();
ui->lineEdit_red->setText(QString::number(Red));
int Green = ui->horizontalSlider_green->value();
ui->lineEdit_green->setText(QString::number(Green));
int Blue = ui->horizontalSlider_blue->value();
ui->lineEdit_blue->setText(QString::number(Blue));
int Alpha = ui->horizontalSlider_alpha->value();
ui->lineEdit_alpha->setText(QString::number(Alpha));
QColor color;
color.setRgb(Red,Green,Blue,Alpha);
QPalette palette = ui->textEdit->palette();
palette.setColor(QPalette::Base,color);
ui->textEdit->setPalette(palette);
}
void Widget::lineEditTextChanged(QString text)
{
int Red = ui->lineEdit_red->text().toInt();
ui->horizontalSlider_red->setValue(Red);
int Green = ui->lineEdit_green->text().toInt();
ui->horizontalSlider_green->setValue(Green);
int Blue = ui->lineEdit_blue->text().toInt();
ui->horizontalSlider_blue->setValue(Blue);
int Alpha = ui->lineEdit_alpha->text().toInt();
ui->horizontalSlider_alpha->setValue(Alpha);
QColor color;
color.setRgb(Red,Green,Blue,Alpha);
QPalette palette = ui->textEdit->palette();
palette.setColor(QPalette::Base,color);
ui->textEdit->setPalette(palette);
}
3、点击【运行】或【Ctrl+R】运行程序。可以通过拖动QSlider或在QLineEdit控件输入数值进行颜色设置。
后续公众号会发布系列教程,更多内容请关注公众号:程序猿学习日记