0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Qt这四种设置窗体背景的方法,都知道吗?

嵌入式小生 来源:嵌入式小生 2023-02-01 11:41 次阅读

一、导读

哇,一个软件界面的颜值是引人注目的焦点,这些“超凡脱俗”的东西是开发人员的杰作吗?说是但也不是,首先软件界面会由专业的人员迸发灵感的去设计和美化,接着才是开发人员的场地,如果没有美化的步骤,放几个按钮和文本就搞定啦,这也太...。

对于Qt来说,所有的可视小部件的基类都是QWidget:

f591abe6-a1e1-11ed-bfe3-dac502259ad0.png

如何为一个界面加入设计好的背景图则是界面美化的核心操作之一,实现的方法有多种,本文将总结几种常使用的方法。对于如何“挖框贴图”则需要根据具体的界面内容来定,没有统一的方法了。

二、方法实现

(2-1)使用paintEvent()实现

paintEvent()是QWidget的一个虚函数:

voidQWidget::paintEvent(QPaintEvent*event)

则可以重载这个函数,然后在这个函数中使用QPainter设置背景图片。如下代码:

voidWidget::paintEvent(QPaintEvent*event)
{
Q_UNUSED(event)

QPainterpainter(this);

painter.setRenderHint(QPainter::Antialiasing);

painter.drawPixmap(rect(),QPixmap(":/images/bk.png"));
}

效果如下:

f5b37ece-a1e1-11ed-bfe3-dac502259ad0.png

该种方式本质上是利用绘制事件来完成的,绘制事件是一个请求,用于重新绘制全部或部分小部件。发生在以下几种情况下:

1、repaint()或update()被调用。

2、小部件由遮挡变为显示的情况。

3、一些未知的情况,哈哈。

为了提高性能,可以使用QPixmap提前将待绘制的图片加载进来,然后进行绘制。

(2-2)使用样式表实现

样式表是Qt的一大亮点,可以使用setStyleSheet()设置样式表来设置窗体的背景图,代码如下:

Widget::Widget(QWidget*parent)
:QWidget(parent),
ui(newUi::Widget)
{
ui->setupUi(this);

setAttribute(Qt::WA_StyledBackground);

this->setStyleSheet("border-image/images/bk.png)");
}

(2-3)使用QLabel实现

在QLabel这个标签类中有一个void setPixmap(const QPixmap &)可用于为QLabel设置一个Pixmap,所以可以使用这种方法设置背景图:把QLabel的大小设置成与窗体的大小一样,然后使用setPixmap设置背景图片即可,这样QLabel的背景图就会完全填充整个窗体的背景。

这种方法在需要拼接的窗体背景中较为常用。例如下图是一个由五个QLabel拼接的界面:

f5c00cc0-a1e1-11ed-bfe3-dac502259ad0.png

如果想要设置背景图片(此处准备了一张背景图top_bk.png),使用下述代码即可(此处设置一个QLabel,其他的一样):

ui->label->setPixmap(QPixmap(":/images/top_bk.png"));

效果如下:

f5f3b0d4-a1e1-11ed-bfe3-dac502259ad0.png

注意:使用QLabel进行背景图片拼接时,必须要保证QLabel的大小与待拼接的图片的大小一样,才能显示出完整的效果。

(2-4)使用QPalette实现

可以直接在构造函数中使用QPalette设置背景图片,如下代码:

QPalettepalette=this->palette();
palette.setBrush(QPalette::Window,QBrush(QPixmap(":/images/bk.png")));
this->setPalette(palette);

效果如下图所示:

f6199dda-a1e1-11ed-bfe3-dac502259ad0.png

三、小生总结

文本总结了四种设置窗体背景图片的方法,在实际项目开发过程中,小生对QPainter情有独钟,感觉万物皆可QPainter,所以特别喜欢使用paintEvent()来设置背景图片:对于完整的背景图片,可以直接在代码中使用这种方法来实现;对于需要拼接的背景图片,小生习惯使用paintEvent()+QLabel来实现。用样式表设置背景图片的方法也会使用到,对于QPlalette设置背景图这种方式较少使用。

殊途同归,选择一种喜欢的方法使用即可,目前硬件性能对于软件来说,还是有极强的支持性和剩余性能,故个人认为一般情况下不必过多考虑性能方面的影响。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 界面
    +关注

    关注

    0

    文章

    58

    浏览量

    15401
  • 函数
    +关注

    关注

    3

    文章

    3882

    浏览量

    61310
  • 代码
    +关注

    关注

    30

    文章

    4556

    浏览量

    66784
  • Qt
    Qt
    +关注

    关注

    1

    文章

    299

    浏览量

    37340
  • 窗体
    +关注

    关注

    0

    文章

    10

    浏览量

    1452

原文标题:Qt这四种设置窗体背景的方法,都知道吗?

文章出处:【微信号:嵌入式小生,微信公众号:嵌入式小生】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    FPGA 设计的四种常用思想与技巧

    FPGA 设计的四种常用思想与技巧FPGA设计的四种常用思想与技巧 讨论的四种常用FPGA/CPLD设计思想与技巧:乒乓操作、串并转换、流水线操作、数据接口同步化,都是FPGA/CPLD 逻辑设计
    发表于 08-11 10:30

    dsp,单片机,pcld,fpja,四种集成电路的各种应用

    dsp,单片机,pcld,fpja,四种集成电路的各种应用,那些是可以一起使用的,哪些是不能一起使用问什么?
    发表于 11-25 11:56

    四种无线充电技术简单原理

    详细介绍了电场耦合 电磁感应 磁共振无线电波 四种方式
    发表于 07-28 11:12

    Qt5 背景透明显示问题

    qt程序在arm linux上面跑qt4 可以通过 QWSServer::setBackground(QColor(0, 0, 0, 0)) 设置背景透明,但是
    发表于 08-29 15:45

    SPI究竟为什么要搞出四种模式呢?

    小弟最近在学习SPI协议,知道了根据CPOL和CPHA的不同,SPI有4模式,可是没有想通究竟为什么要搞出四种模式呢?大家都统一成其中的一
    发表于 03-07 15:10

    IO口的四种使用方法

    IO口的四种使用方法高阻态的典型应用
    发表于 01-12 07:16

    IO口的四种使用方法

    IO口的四种使用方法高阻态的典型应用
    发表于 02-02 06:58

    IO口的四种使用方法

    IO口的四种使用方法高阻态的典型应用
    发表于 02-19 07:23

    关于线路板的常用术语你知道吗

    关于线路板的常用术语你知道吗
    发表于 04-23 06:05

    单片机四种输入模式

    单片机四种输入模式 MCU输入模式有浮空、上拉、下拉、模拟输入四种模式,如果采用上拉或者下拉模式输入,岂不是把真实的信号强行变成电源VCC或者GND了?
    发表于 08-24 16:19

    红外遥控的收发原理你知道吗

    红外遥控的收发原理你知道吗?红外收发解码有哪些差异?
    发表于 01-24 06:37

    VB的窗体

    实验十  VB的窗体一、实验目的(1)掌握VB6.0窗体的常用属性、常用事件和重要方法。(2)掌握在Visual Basic6.0窗体上生成控件的
    发表于 09-23 19:31 2871次阅读

    给MDI主窗体增加背景_Delphi教程

    Delphi教程给MDI主窗体增加背景,很好的Delphi的学习资料。
    发表于 03-16 14:55 9次下载

    Qt5主窗体的详细中文资料免费下载

    本文档的主要内容详细介绍的是Qt5主窗体的详细中文资料免费下载内容包括了:Qt 5主窗体构成,Qt 5文件操作功能,
    发表于 08-01 08:00 0次下载
    <b class='flag-5'>Qt</b>5主<b class='flag-5'>窗体</b>的详细中文资料免费下载

    MIUI的这10个小设置你都知道吗

    其实在MIUI里,藏着很多个性化的选择,接下来的这10个小设置,你都知道吗
    的头像 发表于 05-08 16:53 4067次阅读