`
qingwu
  • 浏览: 11185 次
  • 性别: Icon_minigender_2
  • 来自: 武汉
最近访客 更多访客>>
社区版块
存档分类
最新评论

Qt: 给Widget设置背景图片

    博客分类:
  • Qt
 
阅读更多

转载 :原文出处:http://www.rupeng.com/innersupesite/index.php/1564/viewspace-942

 

Qt: 给Widget设置背景图片

结合网上多篇资料整理如下,给自己和别人一个参考

 

方法一:

1.在要换背景的类的构造函数中装载一个图片,变量要为全局的,接下来会用到

    _image.load("image/image_background");
    setAutoFillBackground(true);   // 这个属性一定要设置
    QPalette pal(palette());
    pal.setBrush(QPalette::Window, QBrush(_image.scaled(size(), Qt::IgnoreAspectRatio, 
                        Qt::SmoothTransformation)));
    setPalette(pal);


2.实现resizeEvent函数,在里面画背景
void Example::resizeEvent(QResizeEvent *event)

{
    QWidget::resizeEvent(event);
    QPalette pal(palette());
    pal.setBrush(QPalette::Window,QBrush(backgroundImage.scaled(event->size(), Qt::IgnoreAspectRatio,Qt::SmoothTransformation)));
    setPalette(pal);
}

 

方法二:利用QPalette

利用QPalette,既可以将背景图设置部分话在paintEvent()函数中,也可以将它放在构造函数中。如下所示我所使用的一个程序片断:

QPalette pal;

  QString filename = QDir::currentPath()+ "/image/1.bmp";

  QPixmap pixmap(filename);

  pal.setBrush(QPalette::Window,QBrush(pixmap));

  setPalette(pal);

 或者

QPixmap pixmap(":/img/aa.bmp");

QPalette palette;

palette.setBrush(backgroundRole(), QBrush(pixmap));

setPalette(palette);

 

首先设置autoFillBackground属性为真

然后定义一个QPalette对象

设置QPalette对象的背景属性(颜色或图片)

最后设置QWidget对象的Palette

QWidget *widget = new QWidget;

widget->setAutoFillBackground(true);

QPalette palette;

palette.setColor(QPalette::Background, QColor(192,253,123));

//palette.setBrush(QPalette::Background, QBrush(QPixmap(":/background.png")));

widget>setPalette(palette);

 

方法三:利用QPainter的drawPixmap函数,这种方法只能用在paintEvent()函数中,

如下所示为我所使用的一个程序片断:

  QPixmap pixmap(":/new/prefix1/image/1.bmp");

  painter.drawPixmap(pixmap.rect(),pixmap);

 

其他参考:

 

给widget设置背景图片
a、for Qt3:
//对于继承QScrollView:
QListView* lv = new QListView();
lv->setStaticBackground( true );
lv->setPaletteBackgroundPixmap( QPixmap("logo.png") );
//对于QTextEdit:
QTextEdit* edit =...
QBrush brush;
brush.setPixmap( QPixmap("logo.png") );
edit->setPaper( brush );
edit->setBackgroundOrigin( QWidget::WindowOrigin );
//对于一般的QLabel等:
QLabel *label = ...
label->setPaletteBackgroundPixmap( QPixmap("logo.png") );
label->setBackgroundOrigin( QWidget::WindowOrigin );

b、for Qt4:
QListWidget* lv = new QListWidget( 0 );
QPalette palette;
palette.setBrush(QPalette::Base, QBrush(QPixmap("logo.png")));
lv->setPalette(palette);

基本上,图片作为背景后,都是平铺的。Qt3、Qt4对于背景图片有不同的处理方式,比较而言,Qt4对于背景图片处理要好的多。

分享到:
评论

相关推荐

    Qt设置背景图片(QT版本,看清楚再下载)

    在本文中,我们将深入探讨如何在Qt环境中设置背景图片,主要参考了名为"Qt设置背景图片"的资源包。这个包是由朱建强提供的,他是一位活跃于IT领域的开发者,其作品常常带有“朱建强”这一标签。该资源包包含了一些...

    Qt使用动态图当背景图片,上边放置各种控件

    本教程将详细介绍如何在Qt中使用动态图(如GIF)作为背景,并在其上放置各种控件。我们将探讨以下几个核心知识点: 1. **QLabel与QMovie类**: Qt提供了QLabel部件来显示文本、图标或HTML内容。要展示动态图像,...

    Qt5背景设置方式

    本文将深入探讨如何在Qt5中设置背景图片和颜色,以帮助新手快速掌握这一技能。 首先,我们需要了解Qt5中的基本概念。Qt5是一个跨平台的应用程序开发框架,它提供了丰富的图形用户界面(GUI)组件和工具,用于创建...

    Qt Openglwidget 显示图片纹理贴图

    在本文中,我们将深入探讨如何在Qt环境中使用QOpenGLWidget显示图片并实现纹理贴图,主要涉及Qt、OpenGL Widget、QImage以及纹理贴图等关键概念。首先,我们需要理解Qt库是一个跨平台的应用程序开发框架,它提供了...

    Qt实现背景画布上的图形绘制

    基于QT5.4实现栅格(png格式)的画图板程序,实现多边形,折线,点的画笔,填充颜色的自定义、放大缩小和图形的保存打开等。 基于QT5.4实现栅格(png格式)的画图板程序,实现多边形,折线,点的画笔,填充颜色的...

    QT连续显示多幅图片看起来像动画

    为了实现这一功能,可以创建一个`QTimer`实例,设置合适的定时间隔,并连接到一个槽函数,该函数负责更换图片: ```cpp QTimer *timer = new QTimer(this); connect(timer, &QTimer::timeout, this, &YourClass::...

    在Qt中正确的设置窗体的背景图片的几种方法总结

    例如,以下代码展示了如何设置窗体的背景图片: ```cpp yourWidget->setStyleSheet("border-image: url(:/HouseRentSystem/Resources/test.png);"); ``` 然而,需要注意的是,这种方法在`QWidget`类中可能无法直接...

    Qt实战案例之利用QPixmap设计图片透明度.zip

    在这个例子中,我们可能看到一个名为Widget的自定义控件,其中包含对QPixmap的操作,比如设置和更新图片的透明度。 `main.cpp`是Qt应用程序的入口点,负责初始化应用程序对象并创建主窗口。在这里,我们可能会看到...

    解决Qt窗口设置背景

    在本篇文章中,我们将深入探讨如何在Qt框架中为QWidget和QMainWindow等组件设置背景图像。这不仅是美化用户界面的有效手段,也是实现特定设计风格的关键技术之一。通过具体实例和详细解析,帮助读者掌握Qt窗口背景...

    Qt视频窗口重叠透明窗口,区域截图代码示例

    在Qt中,可以使用`QWidget::setWindowFlags()`函数设置窗口标志,如`Qt::WindowTransparentForInput`或`Qt::WA_TranslucentBackground`来实现窗口透明。前者使得窗口对输入透明,即点击穿透到下层窗口;后者则使窗口...

    QT下实现图片的自适应显示、缩放(以鼠标位置为中心进行缩放)、拖动、以及重置并截图保存

    在QT框架下,开发图像处理应用时,我们经常会遇到图片的自适应显示、缩放、移动和截图等需求。本文将详细介绍如何实现这些功能,并提供一个名为`EditPic`的示例项目,帮助你理解其背后的原理和实现方法。 首先,...

    Qt 实现被鼠标悬浮的图片放大显示

    在Qt编程环境中,实现鼠标悬浮时图片放大显示的功能,主要涉及到Qt的图形视图框架(Graphics View Framework)和鼠标事件处理。以下将详细介绍这个过程的关键步骤和相关知识点。 首先,你需要创建一个Qt图形视图...

    Qt 窗口叠加透明,上面窗口可写文本和图片,下面窗口可展示图片或播放视频

    这个场景中提到的问题是实现了一个窗口叠加在另一个窗口上,上面的窗口用于显示文本和图片,下面的窗口则用于展示图片或播放视频。然而,遇到的一个挑战是当在上方窗口设置OSD(On-Screen Display)文字为某些特定...

    Qt的一个随框体缩放的图片浏览器

    同时,我们还定义了一个构造函数 `ImageWidget`,用于初始化图片浏览器,并将其设置为窗体的背景图片。 在构造函数中,我们首先加载了图片数据,并将其设置为背景图片。然后,我们使用 `setAutoFillBackground` ...

    Qt4 右键菜单 透明Widget 实例

    - **启用窗口Flag**: 通过设置Qt::WA_TranslucentBackground窗口属性,可以让Widget背景变得透明。 - **重写paintEvent()**: 在这个函数中,你需要使用QPainter来绘制Widget的边界或其他非透明部分。通常,你可以用...

    QT4实现图片浏览器

    - 加载背景图片,并设置为窗口的背景。 #### 四、扩展知识点 1. **Qt信号与槽机制:** - 在Qt中,对象之间通信的基本机制是信号(Signal)与槽(Slot)。 - 信号与槽机制使得对象之间的通信变得简单而灵活。 - ...

    Qt重写QWidget实现按钮进度条

    在Qt编程中,有时我们需要为用户提供更直观的交互体验,比如在按钮上显示实时更新的进度条。这个任务可以通过重写`QWidget`类来实现,让按钮具备动态展示进度的功能。下面将详细介绍如何实现这一功能。 首先,我们...

    qt使用一张图片填充窗体

    在Qt编程中,将一张图片填充到窗体(Widget)是一项常见的需求,这通常涉及到对图形用户界面(GUI)的设计和图像处理。Qt库提供了一系列的类和方法,使得开发者可以方便地完成这个任务。本篇文章将深入探讨如何在Qt...

    QT5自定义窗体及标题栏,全局背景,C++语言

    对于全局背景的设定,我们可以为窗体设置背景色或使用背景图片。这可以通过修改窗体的样式表(StyleSheet)来实现,如下所示: ```cpp window->setStyleSheet("QWidget { background-color: #F0F0F0; }"); ``` ...

    Qt-登录界面样式美化

    1. 设置背景图片: ```css QWidget { background-image: url(/path/to/your/background.jpg); background-repeat: no-repeat; background-position: center; } ``` 2. 修改标签(QLabel)样式: ```css QLabel { ...

Global site tag (gtag.js) - Google Analytics