установить фоновую картинку для qframe - PullRequest
1 голос
/ 20 марта 2020

На самом деле у меня есть 2 вопроса ... Я пытаюсь установить фоновое изображение для окна и дать ему полный размер окна, даже когда я максимизирую его, и у меня есть qframe, в котором я пытаюсь установить другое изображение в качестве фона для этого. я сталкиваюсь с тем, что фон окна pi c не принимает размер окна при максимизации, и изображение для qframe вообще не отображается, вот мой код и изображение результата

QPixmap bkgnd("./Qt_logo_2016.svg.png");
bkgnd = bkgnd.scaled(this->size(), Qt::IgnoreAspectRatio);
QPalette palette;
palette.setBrush(QPalette::Background, bkgnd);
this->setPalette(palette);

QPixmap bkgnd1("./Background.png");
bkgnd1 = bkgnd1.scaled(this->size(), Qt::IgnoreAspectRatio);
palette.setBrush(QPalette::Background, bkgnd1);
ui->widget->setPalette(palette);

enter image description here

1 Ответ

0 голосов
/ 21 марта 2020

Лучший способ сделать это: для окна (или виджета) лучше переопределить функцию события рисования, таким образом вам не нужно будет изменять масштаб изображения.

void MainWindow::paintEvent(QPaintEvent *e)
{
    QPainter painter(this);
    painter.drawImage(this->rect(),QImage("windowImage.png"));

    QMainWindow::paintEvent(e);

}

то же самое для Frame, создайте класс, который наследует от QFrame, и переопределите функцию события рисования

Заголовочный файл:

#pragma once

#include <QFrame>
#include <QPainter>

class CFrame : public QFrame
{
    Q_OBJECT

public:
    explicit CFrame(QWidget *parent = nullptr);
    void paintEvent(QPaintEvent *) override;


};

cpp:

#include "cframe.h"

CFrame::CFrame(QWidget *parent) : QFrame(parent)
{

}

void CFrame::paintEvent(QPaintEvent *e)
{
    QPainter painter(this);

    painter.drawImage(this->rect(),QImage("frameImage.png"));

    QFrame::paintEvent(e);

}

для продвижения QFrame, который вы используете для CFrame;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...