我正在使用Qt 5.11.1和Qt Creator创建一个项目。我的代码在我覆盖的paintEvent函数中绘制了几个省略号。但是由于paintEvent函数的工作方式,我在省略号下面的按钮正在被擦除。我想有一个窗口,有椭圆在顶部和按钮在窗口的底部。它大致看起来是这样的:
有没有办法做到这一点。现在,按钮正在被删除,而我只有省略号。如果有人能指导我,我会很高兴的。
提前谢谢。
注:我的椭圆是绿色的,背景是黑色的,但我尝试过将背景改为白色或更改按钮的样式表,但都不起作用。
这是我的.h文件:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private:
Ui::MainWindow *ui;
protected:
void paintEvent(QPaintEvent *e);
void setBackGroundColorToBlack();
};
#endif // MAINWINDOW_H
这是我的.cpp文件:
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QtGui>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
setBackGroundColorToBlack();
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::paintEvent(QPaintEvent *event) {
setUpdatesEnabled(false);
QPainter painterObj;
painterObj.begin(this);
painterObj.setPen(QPen(Qt::green, 2, Qt::SolidLine, Qt::RoundCap));
painterObj.drawEllipse(0, 0, 318, 390);//456
painterObj.drawEllipse(53, 65, 212, 260);//304
painterObj.drawEllipse(106, 130, 106, 130);//152
painterObj.end();
}
void MainWindow::setBackGroundColorToBlack() {
QPalette pal = palette();
// set black background
pal.setColor(QPalette::Background, Qt::black);
this->setAutoFillBackground(true); // This enables the qt to fill the background before the paint event.
this->setPalette(pal);
//update();
}
这是我得到的:
我的ui文件如下所示:
https://stackoverflow.com/questions/51498155
复制相似问题