请问在使窗口透明之后,怎么取消透明设置

在执行
this->setAttribute(Qt::WA_TranslucentBackground);
this->setWindowOpacity(1);
this->setWindowFlags(Qt::FramelessWindowHint | Qt::Tool | Qt::X11BypassWindowManagerHint);
使窗口透明了,怎么才能取消这个透明设置呢

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

this->setAttribute(Qt::WA_TranslucentBackground);
this->setWindowOpacity(1);
this->setWindowFlags(Qt::FramelessWindowHint|Qt::Tool | Qt::X11BypassWindowManagerHint);

}

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

void MainWindow::on_pushButton_clicked()
{
//即使不撤销这个attribute,也可以
// this->setAttribute(Qt::WA_TranslucentBackground,false);

this->centralWidget()->setAutoFillBackground(true);
this->statusBar()->setAutoFillBackground(true);

this->update();

}

试一下这样

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

this->setAttribute(Qt::WA_WState_WindowOpacitySet,true);
this->setWindowOpacity(0.8);
this->setWindowFlags(Qt::FramelessWindowHint | Qt::Tool | Qt::X11BypassWindowManagerHint);

}

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

void MainWindow::on_pushButton_clicked()
{
qDebug() << "Opacity";
this->setWindowOpacity(1.0);
}
改成这样试试。