qt编写一段程序,实现导入图片,可以用滑动条对图片进行亮度调节
时间: 2023-08-07 21:04:15 浏览: 159
以下是一个简单的 Qt 图像亮度调节程序,可以通过滑动条来调节图片的亮度。
首先需要在 Qt Creator 中创建一个新的 Qt Widgets Application 项目,然后在主窗口中添加一个 QLabel 和一个 QSlider 控件。在 QLabel 控件中显示图片,QSlider 控件用于调节亮度。
在主窗口类中,我们需要定义一个 QImage 对象用于保存图片,并且定义一个函数来更新显示图片的 QLabel 控件。还需要定义一个槽函数,用于响应 QSlider 控件的 valueChanged 信号,该函数将根据滑动条的值来调整图片的亮度,并更新显示。
下面是完整的代码示例:
```cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QFileDialog>
#include <QImage>
#include <QPixmap>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
// 初始化滑动条
ui->slider->setMinimum(-255);
ui->slider->setMaximum(255);
ui->slider->setValue(0);
// 连接滑动条的 valueChanged 信号到槽函数
connect(ui->slider, SIGNAL(valueChanged(int)), this, SLOT(onSliderValueChanged(int)));
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_actionOpen_triggered()
{
// 打开文件对话框选择图片文件
QString fileName = QFileDialog::getOpenFileName(this, tr("Open Image"), "", tr("Image Files (*.png *.jpg *.bmp)"));
// 如果用户取消选择,则返回
if (fileName.isEmpty()) {
return;
}
// 加载图片
QImage image(fileName);
// 如果图片加载失败,则返回
if (image.isNull()) {
return;
}
// 保存图片并显示到 QLabel 控件中
m_image = image;
updateImageLabel();
}
void MainWindow::onSliderValueChanged(int value)
{
// 计算调整后的亮度值
float brightness = (float)value / 255.0;
// 调整图片亮度
QImage adjustedImage = m_image;
for (int y = 0; y < adjustedImage.height(); y++) {
for (int x = 0; x < adjustedImage.width(); x++) {
QRgb color = adjustedImage.pixel(x, y);
int red = qRed(color) * brightness;
int green = qGreen(color) * brightness;
int blue = qBlue(color) * brightness;
adjustedImage.setPixel(x, y, qRgb(red, green, blue));
}
}
// 显示调整后的图片
m_adjustedImage = adjustedImage;
updateImageLabel();
}
void MainWindow::updateImageLabel()
{
// 根据当前图片或调整后的图片,更新 QLabel 控件的显示
QImage image = m_adjustedImage.isNull() ? m_image : m_adjustedImage;
QPixmap pixmap = QPixmap::fromImage(image);
ui->label->setPixmap(pixmap);
}
```
在主窗口的头文件中需要添加以下成员变量:
```cpp
private:
QImage m_image; // 原始图片
QImage m_adjustedImage; // 调整后的图片
```
在主窗口的界面文件中,将 QLabel 控件和 QSlider 控件放置在合适的位置,并设置它们的 objectName 和其他属性。
最后,在主窗口的菜单栏中添加一个 Open 操作,连接到 on_actionOpen_triggered() 槽函数即可。
参考文献:[Qt - Image Brightness Adjustment using Slider](https://www.geeksforgeeks.org/qt-image-brightness-adjustment-using-slider/)
阅读全文