通过设置样式,来调节透明度
最重要一行代码: "background-color: rgba(255, 0, 0,50%)”,前3个参数是rgb颜色,第4位是透明度,范围[0%-%100]
mainwindow.h代码如下
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QLabel>
#include <QSlider>
#include <QPushButton>
class MainWindow : public QMainWindow
{
Q_OBJECT
private:
QLabel *pLabBgSta;
QSlider *pSlider;
private slots:
void SliderValueChanged(int value);
public:
MainWindow(QWidget *parent = 0);
~MainWindow();
};
#endif // MAINWINDOW_H
mainwindow.cpp代码如下
#include "mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
this->resize(542,900);
//创建一个QLabel用来显示图片
QLabel *pLabPic = new QLabel(this);
pLabPic->setGeometry(0,0,542,841);
pLabPic->setStyleSheet("border-image: url(./pic.png)");
//创建一个QLabel用来透明使用,大小与图片一致
pLabBgSta = new QLabel(this);
pLabBgSta->setGeometry(0,0,542,841);
//创建一个QSlider用来改变透明度
pSlider = new QSlider(Qt::Horizontal,this);
pSlider->setGeometry(20,850,502,25);
//设置滑动条的最小值、最大值
pSlider->setMinimum(10);
pSlider->setMaximum(100);
//关联信号槽
connect(pSlider,SIGNAL(valueChanged(int)),this,SLOT(SliderValueChanged(int)));
}
MainWindow::~MainWindow()
{
}
void MainWindow::SliderValueChanged(int value)
{
//根据滑动条的值设置透明度,可使用不同颜色
QString str;
str.sprintf("background-color: rgba(255, 0, 0,%d%%);",value);
//str.sprintf("background-color: rgba(0, 0, 0,%d%%);",value);
pLabBgSta->setStyleSheet(str);
}
main.cpp代码如下
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
最终效果图