QT实现屏幕亮度调节

最近又写了一个调屏幕亮度的小工具,很简单,但是找资料花了很多时间…
还是先看一下最终界面:
QT实现屏幕亮度调节_第1张图片
然后是框架:
QT实现屏幕亮度调节_第2张图片
其中,gdi32.dll可以在自己电脑找,一般在C:\Windows\System32目录下。gammaramp.h和gammaramp.cpp参照:http://www.nirsoft.net/vc/change_screen_brightness.html
一般初学者才会看这篇博客吧,还是直接放原码的实在:
mainwindow.h:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include 
#include 

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

private slots:
    //定义接收的槽函数
    void onSpinValueChanged(int i);

    void on_pushButton_clicked();

private:
    Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H

mainwidow.cpp:

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "gammaramp.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    ui->spinBox->setRange(0, 255);
    ui->Slider->setRange(0, 255);

    //使spinbox和slider数据同步
    QObject::connect(ui->spinBox,SIGNAL(valueChanged(int)),ui->Slider,SLOT(setValue(int)));
    QObject::connect(ui->Slider,SIGNAL(valueChanged(int)),ui->spinBox,SLOT(setValue(int)));
    //设初值
    ui->spinBox->setValue(128);

    setWindowTitle(tr("屏幕亮度工具"));

    //关联槽函数,把spinbox值传到onspinvaluechanged
    QObject::connect(ui->spinBox, SIGNAL(valueChanged(int)), this, SLOT(onSpinValueChanged(int)));
}

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

//获取spinbox的值
void MainWindow::onSpinValueChanged(int i)
{
    int gamma = i;
    CGammaRamp GammaRamp;
    GammaRamp.SetBrightness(NULL, gamma);
}

//假装还原到屏幕正常亮度,这个还可以写得更好,有兴趣的可以试试
void MainWindow::on_pushButton_clicked()
{
    CGammaRamp GammaRamp;
    GammaRamp.SetBrightness(NULL, 128);//手动赋的值...
}

注意事项:
1、gammaramp.cpp里可能会出现宽字符问题,加上TEXT就可以了。
QT实现屏幕亮度调节_第3张图片
2、有问题欢迎指出,大家共同进步!

你可能感兴趣的:(Qt)