我正在使用QGraphicsDropShadowEffect
使我的GUI更加美观。最少的工作样本:
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QGraphicsDropShadowEffect>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
QGraphicsDropShadowEffect *g = new QGraphicsDropShadowEffect(this);
ui->pushButton->setGraphicsEffect(g);
ui->pushButton_2->setGraphicsEffect(g);
ui->pushButton_3->setGraphicsEffect(g);
}
MainWindow::~MainWindow()
{
delete ui;
}
如您所见,我有3个按钮,并且希望每个按钮的顶部都有一个漂亮的阴影。尽管我在每个按钮上都设置了图形效果,但只能在最后一个按钮上看到它,以下是图像:
我如何改善它,原因是什么?
这有效:
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QGraphicsDropShadowEffect>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
QGraphicsDropShadowEffect *g1 = new QGraphicsDropShadowEffect(this);
QGraphicsDropShadowEffect *g2 = new QGraphicsDropShadowEffect(this);
QGraphicsDropShadowEffect *g3 = new QGraphicsDropShadowEffect(this);
ui->pushButton->setGraphicsEffect(g1);
ui->pushButton_2->setGraphicsEffect(g2);
ui->pushButton_3->setGraphicsEffect(g3);
}
MainWindow::~MainWindow()
{
delete ui;
}
但似乎不是我能拥有的最佳解决方案。
最佳答案
这是您正在调用的函数的正常行为
参见文档
http://qt-project.org/doc/qt-4.8/qgraphicsitem.html#setGraphicsEffect
如果effect安装在其他项目上,请设置setGraphicsEffect()
将从项目中移除效果并将其安装在该项目上。