在执行
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);
}
改成这样试试。