首页 > 技术知识 > 正文

Qt遮罩实现

界面开发过程中有时候需要使得向用户展示一片区域不可用,这时候就需要在这片区域中蒙上一层半透明的灰色遮罩,这样用户就可以直观的看到这片区域是不可用的。

遮罩的原理:

其实实现遮罩的原理非常简单,首先定义一个widget,使得这个widget在遮罩区域的最上层部分,然后设置这个widget的北京颜色是灰色半透明的,这样一个遮罩就完成了。

注意事项:

遮罩widget一定要在遮罩区域的上层

遮罩前:

Qt遮罩实现遮罩后:Qt遮罩实现1代码实现:

#ifndef MAINWINDOW_H

#define MAINWINDOW_H

#include

QT_BEGIN_NAMESPACE

namespace Ui { class MainWindow; }

QT_END_NAMESPACE

class MainWindow : public QMainWindow

{

Q_OBJECT

public:

MainWindow(QWidget *parent = nullptr);

~MainWindow();

private slots:

void on_pushButton_clicked();

private:

Ui::MainWindow *ui;

QWidget *shade = nullptr;

};

#endif // MAINWINDOW_H

#include “mainwindow.h”

#include “ui_mainwindow.h”

MainWindow::MainWindow(QWidget *parent)

: QMainWindow(parent)

, ui(new Ui::MainWindow)

{

ui->setupUi(this);

shade = new QWidget(this);

QPalette palette = shade->palette();

palette.setColor(QPalette::Window,QColor(125,125,125,150));

shade->setAutoFillBackground(true);

shade->setPalette(palette);

shade->hide();

shade->raise();

}

MainWindow::~MainWindow()

{

delete ui;

}

void MainWindow::on_pushButton_clicked()

{

if(shade->isHidden())

{

shade->setGeometry(0,0,this->width(),\

ui->widget->y()+ui->widget->height());

shade->show();

}

else{

shade->hide();

}

}

<

猜你喜欢