• Qt之样式2_背景图片


    1.重写paintEvent()事件。在该事件中用画笔QPainter的方式画整个背景。

    void MainWin::paintEvent(QPaintEvent *event)
    {
       QPainter painter(this);        
       painter.drawPixmap(0,0,width(),height(),QPixmap("./wallpaper/11.jpg"));
    }

    2.用调色板QPalette。

      步骤:
               1定义一个QPalette对象   
               2设置QPalette对象的背景属性(颜色或图片)    
               3设置 autoFillBackground属性为真        
               4最后设置QWidget对象的Palette 
     (1)   QWidget  *ptr =new QWidget  ;  
            QPalette palette;  
            palette.setBrush(QPalette::Background,QBrush(Qt::red));  
            ptr->setPalette(palette);  
            ptr->setAutoFillbackground(true);  
          QWidget ->show(); 
      
     (2)   QPalette palette = ptr->palette();
            palette.setBrush(QtPalette::Background,QBrush(Qt::red));
            ptr->setPalette(palette);
            ptr->setAutoFillbackground(true);
        //该方法中:比前一种方法的改进之处是:因为palette()这个函数在QWidget体系和 QGraphicsWidget体系中都有,所以:上述代码可以在这两种体系中通用!
      
    
    (3)  QPalette palette = ptr->palette();
           palette->setBrush(QPalette::Active,QPalette::Window,QBrush(....))
           ptr->setPalette(palette);
           ptr->setAutoBackground(true);      
            //推荐用这种方法,大家可以查看一下
           QPalette::setBrush ( ColorGroup group, ColorRole role, const QBrush & brush )  
            //这个重载函数的声明,这个函数可以设置很多东西!其第二个参数指定要设置的角色!这里举几个例子:  
         //如果ptr指向的是一个QListWidget或者QTextEdit对象,则将第二个参数设置 成:QPalette::Text,则是设置其中文字的颜色,
    //如果是QPalette::BrightText,则是设置当被选中时:文字的颜色,而Palette::Bright则是设置选中时高亮背景的颜色或者图片。因为该函数可
    以设置的角色众多,所以功能也相对强大!

    3.用样式表。

    ptr->setStyleSheet("background-color:blue;");  //设置背景颜色
    ptr->setStyleSheet("background-image:url(:/folder/aa.bmp);"); //设置背景图片,background-image不会缩放图片以适应控件的大小

     

    注意:如果要提供一个皮肤或者背景图片以自适应控件大小,必须使用border-image属性,若两个属性同时存在,border-image属性将覆盖background-image。

    //通过样式来修改控件背景图片,以及鼠标hover上时的图片
    lab->setStyleSheet("QLabel{gainsboro;border-image: url(:/pic/22.png);} QLabel:hover{border-2px;border-style:solid;border-radius:21px;border-color:rgb(0, 177, 252); border-image:url(:/pic/33.png);}");
    //通过控件来设置Pixmap更改背景图片,此背景图不能被覆盖
    lab->setPixmap(QPixmap(":/pic/22.jpg")); lab->setScaledContents(true);

     

     

     

  • 相关阅读:
    SSM整合——实现书籍的增删改查
    [web]获取用户当前所在城市
    [mysql]pymysql插入500万数据
    [Flask] 01 ORM方法列表
    [少儿编程] 03-龟兔赛跑(下)
    [少儿编程] 02-龟兔赛跑(上)
    [少儿编程] 00-入门课程大纲
    [少儿编程] 01-少儿编程环境搭建
    [Linux] Centos7 部署django项目
    [Linux] centos7 安装Mariadb
  • 原文地址:https://www.cnblogs.com/mathyk/p/9050103.html
Copyright © 2020-2023  润新知