QT5 ---按钮 滑动块 进度条等控件背景\文本设置

方式一:
/*============================Qt 调色板 QPalette ==========================*/
ui->progressBar->setStyle(QStyleFactory::create(“windows”));// 注意观察main.cpp 中的style代码

//QPalette 调色板
QPalette pale = ui->pushButton->palette();//获取按钮(pushbutton)调色板

ui->pushButton->setAutoFillBackground(true);//小空间背景自动填充,默认关闭(false)
ui->pushButton->setFlat(true); //小控件周边框线,默认false,设置true后将无框线
//注意颜色填充需将setFlat设置为true,否则只填充框线==》无框线即为整个Button是框线

pale.setColor(QPalette::ButtonText,Qt::red);//设置按钮文本颜色为红色
pale.setColor(QPalette::Button,Qt::red);//设置按钮背景色为绿色,如果设置无效应将setAutoFillBackground(true)开启
ui->pushButton->setPalette(pale); //将更改后的颜色属性重新设置改按钮

方式二

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 好的,具体实现步骤如下: 1. 使用Qt的GUI界面,添加三个滑动进度条控件,分别用于调整亮度、对比度和伽马值。 2. 使用OpenCV的cv::Mat类读取图片数据,并将其显示在GUI界面上。 3. 实现亮度调整功能:将原始图像的每个像素值加上一个亮度值,可使用cv::add()函数实现。 4. 实现对比度调整功能:将原始图像的每个像素值乘上一个对比度值,可使用cv::multiply()函数实现。 5. 实现伽马值调整功能:将原始图像的每个像素值按照公式进行伽马变换,可使用cv::pow()函数实现。 6. 将修改后的图像数据重新显示在GUI界面上。 下面是代码示例: MainWindow.h ```c++ #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include <opencv2/opencv.hpp> namespace Ui { class MainWindow; } class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget *parent = 0); ~MainWindow(); private slots: void on_brightnessSlider_valueChanged(int value); void on_contrastSlider_valueChanged(int value); void on_gammaSlider_valueChanged(int value); private: Ui::MainWindow *ui; cv::Mat m_originalImage; cv::Mat m_modifiedImage; double m_brightness; double m_contrast; double m_gamma; void updateImage(); }; #endif // MAINWINDOW_H ``` MainWindow.cpp ```c++ #include "mainwindow.h" #include "ui_mainwindow.h" #include <QDebug> MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); // load image m_originalImage = cv::imread("image.jpg"); m_originalImage.convertTo(m_modifiedImage, -1, 1, 0); // make a copy // initialize sliders ui->brightnessSlider->setMinimum(-100); ui->brightnessSlider->setMaximum(100); ui->brightnessSlider->setValue(0); ui->contrastSlider->setMinimum(-100); ui->contrastSlider->setMaximum(100); ui->contrastSlider->setValue(0); ui->gammaSlider->setMinimum(1); ui->gammaSlider->setMaximum(100); ui->gammaSlider->setValue(50); // initialize variables m_brightness = 0.0; m_contrast = 1.0; m_gamma = 1.0; // display image updateImage(); } MainWindow::~MainWindow() { delete ui; } void MainWindow::on_brightnessSlider_valueChanged(int value) { m_brightness = (double)value / 100.0; updateImage(); } void MainWindow::on_contrastSlider_valueChanged(int value) { m_contrast = (double)value / 100.0 + 1.0; updateImage(); } void MainWindow::on_gammaSlider_valueChanged(int value) { m_gamma = (double)value / 50.0; updateImage(); } void MainWindow::updateImage() { // adjust brightness and contrast m_modifiedImage = m_originalImage * m_contrast + m_brightness * 255; // adjust gamma cv::Mat lookUpTable(1, 256, CV_8U); uchar* p = lookUpTable.ptr(); for (int i = 0; i < 256; ++i) { p[i] = cv::saturate_cast<uchar>(pow(i / 255.0, m_gamma) * 255.0); } cv::LUT(m_originalImage, lookUpTable, m_modifiedImage); // display image cv::imshow("Image", m_modifiedImage); cv::waitKey(10); } ``` 在这个例子中,我们使用了cv::imread()函数来读取一张图片,然后将其转换为cv::Mat类型。我们还使用了cv::convertTo()函数来创建一个副本,以便在修改图像时不影响原始图像。 我们为每个滑控件设置了最小、最大和初始值。在滑值发生变化时,我们更新对应的变量并调用updateImage()函数来重新生成修改后的图像。 在updateImage()函数中,我们使用了cv::multiply()和cv::add()函数来实现对比度和亮度的调整。我们还使用了cv::LUT()函数来实现伽马值调整。最后,我们使用cv::imshow()函数将修改后的图像显示在窗口中。 注意:在Qt中,我们需要使用cv::waitKey()函数来让OpenCV窗口保持活动状态,否则窗口会立即关闭。 ### 回答2: 使用QT和OpenCV可以实现对一张图片的亮度、对比度和伽马值进行修改,并可以利用滑动进度条来调整参数。 首先,我们需要加载并显示原始图片。可以使用QT的图像控件(QLabel或QGraphicsView)来显示图片。 接下来,我们可以利用OpenCV对原始图片进行处理。通过调整亮度和对比度参数,可以使用下面的公式实现: 新像素 = 旧像素 * 对比度 + 亮度 其中,亮度的范围为[-255, 255],对比度的范围为[-100, 100]。为了确保结果在0-255的合理范围内,可以采用以下方式进行裁剪: 新像素 = min(max(新像素, 0), 255) 另外,伽马值的调整可以通过以下公式实现: 新像素 = 255 * pow(旧像素 / 255, 1 / 伽马值) 在QT中,我们可以使用滑动进度条(QSlider)来调整这些参数。首先,我们需要创建滑动进度条并设定其范围。然后,当滑动条的值发生变化时,我们可以通过获取滑动条的当前值并将其转换为亮度、对比度或伽马值参数的百分比来更新处理后的图像。 最后,我们还需要将处理后的图像显示在QT的图像控件中。 通过这种方式,我们就能够使用QT和OpenCV实现对一张图片的亮度、对比度和伽马值的修改,并利用滑动进度条来进行动态调整。 ### 回答3: 使用Qt和OpenCV实现对一张图片的亮度、对比度和伽马值修改,并用滑动进度条来实现如下: 1. 首先,我们需要在Qt中创建一个窗口界面,并添加一个滑动进度条,用于控制亮度、对比度和伽马值的修改。可以使用Qt Designer工具来创建界面。 2. 在Qt中,将滑动进度条与相关的控件连接起来,以便在滑动进度条发生变化时能够触发相应的操作。 3. 使用OpenCV加载并显示待修改的图片。可以使用`cv::imread()`函数来加载图片,并将其显示在Qt界面上的图片控件中。 4. 当滑动进度条发生变化时,通过信号和槽机制,处理亮度、对比度和伽马值的修改。根据滑动进度条的值,计算相应的系数来修改图像的亮度、对比度和伽马值。 5. 在处理过程中,使用OpenCV的函数来实现图像的亮度、对比度和伽马值的修改。可以使用`cv::convertTo()`函数来调整图像的亮度和对比度,使用`cv::pow()`函数来调整图像的伽马值。 6. 将修改后的图像显示在Qt界面上的图片控件中,以实时显示修改操作的效果。 总结:通过使用Qt和OpenCV,我们可以实现通过滑动进度条来修改一张图片的亮度、对比度和伽马值。这种方法简单易用,可以直观地观察到图像的修改效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值