学习记录不断更新
窗口:QWidget,QMainwindow,QDialog。后两个继承QWidget
QMainwindow类能够设置QMainwindow类与QDialog类作为其子窗口
QDialog类能够设置QMainwindow类与QDialog类作为其子窗口
QMainwindow类,QDialog类都不能设置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 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//头文件
void MyWidget::paintEvent(QPaintEvent *)
{
QPainter painter(this);
// 从窗口左上角开始绘制图片
painter.drawPixmap(0,0,QPixmap(":/image/beijing01.png"));
}