Qt:用QPalette做背景和透明效果
(项目需要做效果,参考了其他帖子顺便做下笔记,避免自己忘记~~)
1 比如在mainwindow做背景
1 可以用调色板QPalette
//利用调色板QPalette制作背景,放大界面会有显示问题
QPixmap pixmap = QPixmap(":/photo/background1.jpg").scaled(this->size());
QPalette palette;
palette.setBrush(QPalette::Background, QBrush(pixmap));
this->setPalette(palette);
2 也可以重写paintEvent
//设置背景,重写paintEvent方式,重写自动执行
void MainWindow::paintEvent(QPaintEvent *)
{
//重写自动执行
QPixmap pixmap = QPixmap(":/photo/background1.jpg").scaled(this->size());
QPainter painter(this);
painter.drawPixmap(this->rect(), pixmap); //画家画图片
}
3 背景的需求不同可以继续参考
前辈的链接: https://blog.csdn.net/qq_25800311/article/details/80874757.
2 比如给Widget设置透明
//插入以下
QPalette palette_mainMenu;
palette_mainMenu.setColor(QPalette::Background, QColor(0,0,0,100)); // 最后一项为透明度
//palette_mainMenu.setBrush(QPalette::Background, QBrush(QPixmap(":/photo/background1.jpg")));
ui->widget->setPalette(palette_mainMenu);
ui->widget->setAutoFillBackground(true);