30/09/2018, 16:35

Add an image to background of QMainWindow?

Sau khi add file logo.png vào resource xong, em cho nó làm background bằng cách như sau:

File mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QPixmap>
#include <QPalette>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    QPixmap pm(":/logo.png");
    pm.scaled(this->size());
    QPalette pl;
    pl.setBrush(QPalette::Background,pm);
    this->setPalette(pl);
}

MainWindow::~MainWindow()
{
    delete ui;
}

Nhưng nó lại ra như vầy:

Làm thế nào để logo Qt nó tỉ lệ theo cái form ạ? Chỉ ra một hình và nó co giãn theo form như khi setcentralwidget ấy.
Và add logo vào 1 góc của form thôi thì làm như thế nào?

... viết 18:39 ngày 30/09/2018

Đã làm được cái add logo vào label rồi:

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QPixmap>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    QPixmap pix(":/logo.png");
    ui->label->setPixmap(pix);
    ui->label->setScaledContents(true);
    ui->label->setSizePolicy(QSizePolicy::Ignored,QSizePolicy::Ignored);
}

MainWindow::~MainWindow()
{
    delete ui;
}
... viết 18:40 ngày 30/09/2018

Về phần set image background thì em làm thế này: @ltd

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    QPixmap pix(":/logo.png");
    pix.scaled(this->size(),Qt::IgnoreAspectRatio);
    QPalette pal;
    pal.setBrush(QPalette::Background,pix);
    this->setPalette(pal);
    QSize size;
    size.setHeight(pix.height());
    size.setWidth(pix.width());
    this->resize(size);
}

Nhưng nó chỉ set chiều rộng vào chiều cao ban đầu đúng với kích thước của image thôi, image nó không tỉ lệ với form khi thay đổi.

Bài liên quan
0