Qt 设置窗口背景

这篇具有很好参考价值的文章主要介绍了Qt 设置窗口背景。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

窗口背景无非两种:背景色、背景图片。Qt中窗口背景如何设置?

一、QPalette设置背景

二、实现paintEvent,使用QPainter来绘制背景

三、使用QSS来设置背景

 关于QSS的使用不想多说,一般我不用QSS设置窗口背景,也不建议使用。(注意:这里是对于窗口而言)。如果是子部件当然可以。因为窗口使用QSS设置背景之后,若子部件不使用同样的方式来设置,默认则会继承父窗口的样式。子部件一般情况下也不需要设置背景图片,即使需要使用QSS也完全可以满足。设置较多的是背景色与图标,QSS中使用background或者background-color的方式可以实现背景色的设置,图标则可以使用setPixmap或者setIcon来设置!

下面介绍QPalette以及paintEvent文章来源地址https://www.toymoban.com/news/detail-670414.html

一、QPalette设置背景
构造函数中可以使用如下方式:
(1)设置背景色
QPalette palette(this->palette());
palette.setColor(QPalette::Background, Qt::black);
this->setPalette(palette);
 或:
QPalette palette;
palette.setBrush(this->backgroundRole(), Qt::black);
this->setPalette(palette); 
这里setColor和setBrush都可以使用!
(2)设置背景图片
QPixmap pixmap = QPixmap(":/qm/safe").scaled(this->size());
QPalette palette(this->palette());
palette.setBrush(QPalette::Background, QBrush(pixmap));
this->setPalette(palette);
  上面方式无论设置背景色还是背景图片QPalette::Background与this->backgroundRole()是等价的!
二、paintEvent设置背景
(1)设置背景色
void IIIMark::paintEvent(QPaintEvent *)
{
   QPainter painter(this);
   painter.setBrush(Qt::black);
   painter.drawRect(this->rect());
}
(2)设置背景图片
void IIIMark::paintEvent(QPaintEvent *)
{
   QPixmap pixmap = QPixmap(":/qm/safe").scaled(this->size());
   QPainter painter(this);
   painter.drawPixmap(this->rect(), pixmap);
}
   注意:
 (1)以上都是用scaled方式对图片进行了适应窗口大小的设置,因为所给的图片大小不一定满足要求,所以采用此方式!当然图片经过拉伸或者压缩之后会变形(纯色图片除外),所以对图片采用此方式时需要注意。
 (2)设置背景范围的时候如果需要充满整个窗口最好使用this->rect(),因为我看到很多人在使用QRect(0, 0, 400, 400)之类的语句,那么如果窗口大小改变了呢?此句是不是要跟着变呢?
 (3)如果需要背景图片或者背景色随可以发生改变时,也就是所谓的换肤功能,则采用paintEvent的方式,在需要改变的时候使用update()来进行更新。
 (4)this->setAutoFillBackground(true)又让我想起了tr(),被很多人滥用。这句话在什么时候使用呢?不妨采用QPalette设置背景的方式加上与去掉这句话对比一下(在有父窗口的情况下使用)。如果这个QWidget直接show,则有背景色,如果放到一个父窗口中,就没有效果。添加该句即可!

到了这里,关于Qt 设置窗口背景的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • QT界面中再添加界面窗口

    目录 使用场景: 教程: 1.首先创建一个qt设计师界面类 2.现在你有界面了,但是没有创建 3.创建了界面,但是没有容纳该界面的地方,这个时候就要选择容纳的界面, 4.创建完成控件以后开始添加界面,大体的方法基本都是这个 首先说一下使用场景,很多时候一个界面会包含很多不

    2024年02月16日
    浏览(29)
  • 【Visual Studio】使用 C++ 语言,配合 Qt,开发了一个串口通信界面

    知识不是单独的,一定是成体系的。更多我的个人总结和相关经验可查阅这个专栏:Visual Studio。 我要使用的功能比较简单,主要包含扫描串口、打开串口、发送数据、接收数据、暂停按钮、停止按钮,因此接下里将围绕这几个功能依次更新。 我的工程项目名字叫 “GUI”。

    2024年02月11日
    浏览(57)
  • 【Visual Studio】报错 C2653,使用 C++ 语言,配合 Qt 开发串口通信界面

    知识不是单独的,一定是成体系的。更多我的个人总结和相关经验可查阅这个专栏:Visual Studio。 这个 Bug 是我做这个工程时遇到的:【Visual Studio】Qt 的实时绘图曲线功能,使用 C++ 语言,配合 Qt 开发串口通信界面。 使用 C++ 语言,配合 Qt 开发串口通信界面,在添加 Widget 做

    2024年02月11日
    浏览(40)
  • 16-3_Qt 5.9 C++开发指南_使用QStyle 设置界面外观_实现不同系统下的界面效果的匹配

    Qt 是一个跨平台的类库,相同的界面组件在不同的操作系统上显示效果是不一样的。QStyle是封装了 GUI 界面组件外观的抽象类,Qt 定义了 QStyle 类的一些子类,应用于不同的操作系统如QWindowsStyle和QMacStyle 等。这些样式是 QtGUI 模块自带的,在不同的平台上编译运行的程序具有缺

    2024年02月13日
    浏览(39)
  • QT 多界面跳转以及窗口之间参数传递

    之前一直用的是c#,由于最近要使用CC来二次开发,所以先熟悉一下QT。 1、从一个界面跳到另外一个界面不需要返回 2、从一个界面跳到另外一个界面需要返回 1、新增主窗口 主窗口 第二个窗口: 原理:  注意点: 1、必须在新的窗口中传入当前的窗口的指针   本质上是类和

    2024年02月10日
    浏览(35)
  • 【QT 网络云盘客户端】——主窗口界面的设计

    目录 1.设计主窗口界面   2.设置窗口的背景图片 3. 自定义标题栏  3.1 设置toolbutton按钮的图片  3.2 设置按钮的大小 3.3 将自定义标题栏添加设置到主页面中  3.4 去除窗口的原标题栏  3.5 设置按钮颜色 3.6 切换页面功能实现 4.我的文件页面的设计 4.1 菜单栏的设计 4.2 自定义

    2024年02月15日
    浏览(24)
  • qt 系列(二)---qt designer通过设置控件样式表进行背景颜色设置

    1. 前言 一般Layouts不可以进行改变样式表,当我们想修改背景样式表,同时又不改变其他控件的颜色时,可以选择List View 控件改变背景颜色。 2. 设置背景 (1)配置 .qrc 文件 新建mypicture.qrc文件,记事本打开 (2)右键选择项目–添加–现有项,选择建立的.qrc文件,此时,项

    2024年02月06日
    浏览(34)
  • QT qlineargradient 设置背景渐变

    作为一名初级开发,开发之初UI设计师给了我客户端的设计图纸,其中就有设计背景渐变 要求是从上的蓝往下渐变成白 刚开始我直接把UI写的代码考到widget的stylesheet发现根本不行,必须要使用QT的qlineargradient 所有我重写了样式表的代码如下:  效果:  渐变过程:x代表左右

    2024年01月16日
    浏览(25)
  • QT--文字输入及背景设置

             效果如图所示: 使用的QT版本为QT5.15.2         代码:maindow.cpp  

    2024年02月13日
    浏览(33)
  • Qt:QWidget设置半透明背景

    设置窗体QWidget半透明背景 首先前提条件是设置: setAttribute(Qt::WA_TranslucentBackground); 方法一:重写QPaintEvent 方法二:自定义qss样式 方法三:使用QGraphicsOpacityEffect ,不过这种方法会影响子控件的透明度 效果参考如下:

    2024年02月15日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包