标题:qt5如何让背景随窗口大小变化而缩放
只看楼主
纯蓝之刃
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:76
帖 子:554
专家分:3690
注 册:2019-7-29
结帖率:93.75%
 问题点数:0 回复次数:2 
qt5如何让背景随窗口大小变化而缩放
程序代码:
InstructionHelp::InstructionHelp(QWidget *parent):QDialog(parent)
{
    setWindowFlags(Qt::Window|Qt::WindowTitleHint|Qt::CustomizeWindowHint|Qt::WindowCloseButtonHint);
    //setFixedSize(400,350);
    resize(QSize(300,250));
    setWindowTitle(tr("帮助"));

    //设置背景图案
    QPixmap pixmap_background=QPixmap(":/res/background_sub2.jpg").scaled(this->size());
    QPalette palette(this->palette());
    palette.setBrush(QPalette::Background, QBrush(pixmap_background));
    this->setPalette(palette);
}

如何让背景随窗口大小变化而缩放。
程序代码:
//重载resizeEvent
void InstructionHelp::resizeEvent(QResizeEvent *)
{
    QPixmap pixmap_background=QPixmap(":/res/background_sub2.jpg").scaled(this->size());
    QPalette palette(this->palette());
    palette.setBrush(QPalette::Background, QBrush(pixmap_background));
    this->setPalette(palette);
}

重载resizeEvent不会被触发,或者有没有其他的实现方法
搜索更多相关主题的帖子: 缩放 Qt 背景 窗口 变化 
2020-05-22 13:30
fulltimelink
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:7
帖 子:171
专家分:752
注 册:2020-4-1
得分:0 
我这测试是可以的, 构造函数不需要单独设置背景图案,程序启动显示时会自动调用resizeEvent

程序代码:

#ifndef INSTRUCTIONHELP_H
#define INSTRUCTIONHELP_H

#include <QDialog>

class InstructionHelp : public QDialog
{
        Q_OBJECT

    public:
        InstructionHelp(QWidget *parent = nullptr);
        ~InstructionHelp();
    protected:
        void resizeEvent(QResizeEvent *);
};
#endif // INSTRUCTIONHELP_H







#include "instructionhelp.h"

InstructionHelp::InstructionHelp(QWidget *parent)
    : QDialog(parent)
{
    setWindowFlags(Qt::Window|Qt::WindowTitleHint|Qt::CustomizeWindowHint|Qt::WindowCloseButtonHint);
        //setFixedSize(400,350);
        resize(QSize(300,250));
        setWindowTitle(tr("帮助"));
}

InstructionHelp::~InstructionHelp()
{
}

void InstructionHelp::resizeEvent(QResizeEvent *event)
{
    QPixmap pixmap_background=QPixmap(":/img/banner_ly.png").scaled(this->size());
       QPalette palette(this->palette());
       palette.setBrush(QPalette::Background, QBrush(pixmap_background));
       this->setPalette(palette);
    QDialog::resizeEvent(event);
}
2020-06-11 17:22
fulltimelink
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:7
帖 子:171
专家分:752
注 册:2020-4-1
得分:0 
如果你的res是resource的名字,且你运行是黑屏的话,  你把 :/res/background_sub2.jpg  改为 :/background_sub2.jpg
2020-06-11 17:24



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-501742-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.337013 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved