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

    文章

    59

    浏览量

    15620
  • 函数
    +关注

    关注

    3

    文章

    4326

    浏览量

    62555
  • 代码
    +关注

    关注

    30

    文章

    4774

    浏览量

    68504
  • Qt
    Qt
    +关注

    关注

    1

    文章

    302

    浏览量

    37895
  • 窗体
    +关注

    关注

    0

    文章

    10

    浏览量

    1463

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

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

收藏 人收藏

    评论

    相关推荐

    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

    教你四种神奇的电脑开机方法

    教你四种神奇的电脑开机方法 如果有人问你,你的电脑怎么开机?回答不外乎是:“直接按电脑机箱上的电源开关按钮不就得了”。当然是最简
    发表于 02-23 15:20 994次阅读

    电池的危害有哪些,你知道吗

    电池的危害有哪些,你知道吗?,学习资料,感兴趣的可以瞧一瞧。
    发表于 10-26 17:00 0次下载

    无线充电IC你知道吗

    无线充电IC你知道吗
    发表于 01-22 19:37 47次下载

    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 4300次阅读

    基于STM32的多种printf用法 你知道吗

    基于STM32的多种printf用法,你知道吗
    的头像 发表于 02-29 17:02 4463次阅读

    热敏电阻的四种常见作用,你知道吗资料下载

    电子发烧友网为你提供热敏电阻的四种常见作用,你知道吗资料下载的电子资料下载,更有其他相关的电路图、源代码、课件教程、中文资料、英文资料、参考设计、用户指南、解决方案等资料,希望可以帮助到广大的电子工程师们。
    发表于 04-02 08:49 6次下载
    热敏电阻的<b class='flag-5'>四种</b>常见作用,你<b class='flag-5'>都</b><b class='flag-5'>知道吗</b>资料下载

    四种方法实现LED点亮

    四种方法实现LED点亮程序分享
    发表于 12-28 10:03 3次下载

    干货 | 数字万用表四种妙用方法,你知道么?

    干货 | 数字万用表四种妙用方法,你知道么?
    的头像 发表于 01-05 09:52 1125次阅读

    无源与有源器件的这些区别你知道吗

    无源与有源器件的这些区别你知道吗
    的头像 发表于 10-26 15:27 4760次阅读
    无源与有源器件的这些区别你<b class='flag-5'>都</b><b class='flag-5'>知道吗</b>?

    pcb菲林是什么?5个作用你知道吗

    pcb菲林是什么?5个作用你知道吗
    的头像 发表于 11-22 11:14 8133次阅读