#include "MyBtnLayout.h"
#include <QtWidgets/QApplication>
#include "QFile"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QFile file(":/MyBtnLayout/dispaly.css");
file.open(QFile::ReadOnly);
if (file.isOpen())
{
QString styleSheet = QLatin1String(file.readAll());
a.setStyleSheet(styleSheet);
}
file.close();
MyBtnLayout w;
w.show();
return a.exec();
}
//下面是重写的paintEvent函数
void MyBtnLayout::paintEvent(QPaintEvent *event)
{
QPainter painter(this);
painter.setPen(QPen(Qt::red));
painter.setBrush(QBrush(Qt::blue));
//painter.drawRect(ui.widget->rect());
painter.drawRect(0,0,50,50);
//painter.drawLine(rect().width(),0,width(),height());
}
可以看到paintEvent中的代码非常简单,只是画个矩形而已,但是程序运行起来之后,却没有效果。其实这里是因为在main函数中对整个应用程序加载了样式表导致的,在样式表文件中,我把整个应用程序的背景设置为白色的了,导致paintEvent画不出来矩形,这里应该是画出了矩形,但之后又被样式表中设置的背景给覆盖掉了。
如何解决?
1.不使用样式表
2.只对部分控件设置样式表,不要在我们重绘的区域设置样式