Qt5窗口背景

来源:互联网 发布:淘宝店铺三个月未经营 编辑:程序博客网 时间:2024/06/04 19:20

学习记录不断更新


窗口:QWidget,QMainwindow,QDialog。后两个继承QWidget


QMainwindow类能够设置QMainwindow类与QDialog类作为其子窗口 

QDialog类能够设置QMainwindow类与QDialog类作为其子窗口

QMainwindowQDialog类都不能设置QWidget类成为其子窗口


1,通过样式表设置窗口背景,有两种:

a.设计模式中设置;b.使用代码设置(使用QWidget::setStyleSheet()函数)

主窗口 MainWindow 基类QMainWindow无子窗口,资源文件的添加不多说

设计模式:

主窗口创建一个名MainWindow 基类QMainWindow无子窗口时

在界面上右击,弹出的菜单选择"改变样式表"

QMainWindow{//这个是基类名称
        background-image: url(:/image/beijing01.png);
    }//或者
MainWindow{//ui文件名
        background-image: url(:/image/beijing01.png);
    }

这两个都能使窗口具有背景色,区别是如果后面这个主窗口有子窗口(同类),背景图片都是一样的。

加入一个基类为QMainWindow的ui名为childMainWindow窗口,作子窗口,若主窗口设置样式表时用基类名,子窗口背景同主窗口一样,用它的ui文件名在"样式表"中设置背景图片,可以不受主窗口设置QMainWindow类的窗口背景图片的影响。

加入一个基类为QDialog的窗口,作子窗口,不受主窗口影响,设置"样式表" 用窗口类名或ui文件名都可以设置背景图片,此时主窗口也可以用窗口类名或ui文件名创建背景

注:

Dialog窗口同QMainWindow窗口使用方式类似,但是Widget窗口却不能使用样式表设置背景。

可以用background-image和border-image设置背景,前者background-image无法随部件大小自动缩放,后者可以

代码设置:

主窗口 

 this->setStyleSheet("background-image: url(:/image/beijing01.png);");

窗口上的控件

ui->pushButton->setStyleSheet("background:yellow"); //pushButton是空间名

2,Qt的样式表可以存放在.qss的文件里,通过调用.qss实现换背景

打开.qrc资源文件,添加一个存放.qss文件的前缀(这里设置为qss),然后ctrl+s(保存),右键点击qss,添加一个新文件:选择"概要"分类中,"test file文本文件",名称为myqss.qss然后将设计模式中"样式表"设置的内容,照搬写入.qss的文件里,并且保存。

主窗口 MainWindow 基类QMainWindow无子窗口

在mainwindow.cpp中,添加#inlcude <QFile>

在其构造函数中,添加代码

    QFile file(":/qss/myqss.qss");
    // 只读方式打开该文件
    file.open(QFile::ReadOnly); 
    // 读取文件全部内容,使用tr()函数将其转换为QString类型
    QString styleSheet = tr(file.readAll());
    // 为QApplication设置样式表
    qApp->setStyleSheet(styleSheet);
    file.close();
Widget窗口设置背景
1 在通过修改绘图事件,修改widget窗口背景
窗口MyWidget,基类QWidget
在mywidget.h中添加
protected:
    void paintEvent(QPaintEvent *);
在mywidget.cpp中添加
#include <Qpainter>//头文件
void MyWidget::paintEvent(QPaintEvent *)
{
    QPainter painter(this);
    // 从窗口左上角开始绘制图片
    painter.drawPixmap(0,0,QPixmap(":/image/beijing01.png"));
   
}









0 0