0
点赞
收藏
分享

微信扫一扫

QT基础学习笔记 Demo04

jjt二向箔 2022-01-15 阅读 77

内容目录

在这里插入图片描述

大家如果喜欢,求一键三连,点个关注😭😭😭,小柏谢谢各位大佬了🍗


1. 布局管理

对于一个完善的软件,布局管理却是必不可少的。无论是想要界面中部件有一个很整齐的排列,还是想要界面能适应窗口的大小变化,都要进行布局管理。Qt中主要提供了QLayout类及其子类来作为布局管理器,它们可以实现常用的布局管理功能

这个东西就是对窗口上面的控件进行排版,而排版的作用就是好看,所以布局管理的作用就是为了让界面能整洁好看,布局管理有4种,这4种之间是可以嵌套的

1.1 水平布局

1.2 垂直布局

1.3 再窗体布局中布局

1.4 格栅布局

格栅布局实例——切图
将一张完整的图片进行切割,最后放入label控件中
widget.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QGridLayout>
namespace Ui {
class Widget;
}

class Widget : public QWidget
{
    Q_OBJECT

public:
    explicit Widget(QWidget *parent = 0);
    ~Widget();

private:
    Ui::Widget *ui;
    QGridLayout *gridLayout;
};

#endif // WIDGET_H

widget.cpp

#include "widget.h"
#include "ui_widget.h"

#include <QImageReader>
#include <QLabel>

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
    gridLayout=new QGridLayout(ui->scrollAreaWidgetContents);//把格栅布局作用控件上
    gridLayout->setContentsMargins(0,0,0,0);//设置边距
    for(int i=0;i<30;i++)
    {
        for(int j=0;j<30;j++)
        {
            QImageReader reader;
            reader.setFileName(":/c.bmp");//读取图片
            reader.setScaledClipRect(QRect(i*989/30,j*989/30,989/30,989/30));//截取图片

            QImage img;
            img=reader.read();//图片保存img中

            QLabel *l=new QLabel(ui->scrollAreaWidgetContents);
            l->setScaledContents(true);
            l->setPixmap(QPixmap::fromImage(img));//img转为Pixmap
            gridLayout->addWidget(l,i,j);
        }
    }
}

Widget::~Widget()
{
    delete ui;
}

效果展示
在这里插入图片描述

2. 样式表

样式表是用来做什么的?
自定义Qt Widgets
使用样式表时,每个小部件都被视为具有四个同心矩形的框:空白矩形、边框矩形、填充矩形和内容矩形。盒子模型对此进行了更详细的描述。
四方同心矩阵👇
在这里插入图片描述

2.1 添加内容

添加资源

添加渐变

添加颜色

添加字体

2.2 css语法改变样式(QSS)

css语法改变样式
这里说QSS是因为是在QT所以说是QSS

例:多个重复的pushButton
如果出现很多pushButton按钮,我们都想要改变他们的样式,那我们上面写的css语法是不能够满足单独的
前面加个#,要写对象名,不能写类型名字

#pushbutton{
background-color: rgb(0, 0, 0);
}

2.2.1 pushButton

border:5px groove blue; 边框5px 3d,蓝色
border-radius:10px; 圆角,弧度10px
none定义无边框
hidden与 “none” 相同。不过应用于表时除外,对于表,hidden 用于解决边框冲突。
dotted定义点状边框。在大多数浏览器中呈现为实线。
dashed定义虚线。在大多数浏览器中呈现为实线。
solid定义实线。
double定义双线。双线的宽度等于 border-width 的值。
groove定义 3D 凹槽边框。其效果取决于 border-color 的值。

2.2.2 radioButton

QRadioButton::indicator::unchecked{ //没有被选中时,的选中按钮为图片
image: url(:/png/png/blueStone.png);
width: 50px;
height:50px;
}
QRadioButton::indicator::checked { //选中时
image: url(:/png/png/redStone.png);
}
QRadioButton::indicator:checked:hover { //选中时,并且鼠标在上面
image: url(:/png/png/downloadsfolder.png);
}

2.2.3 progressbar

QProgressBar::chunk { 显示的进度条里面的内容
background-color: #CD96CD;
width: 10px;
margin: 0.5px;
}
QProgressBar { 进度条的边框,及文字
border: 2px solid grey;
border-radius: 5px;
text-align: center;
}

2.2.4 combox

QComboBox { //去掉边框
border:none;
}
QComboBox::drop-down { //下拉的也去掉边框,设置大小,图片
border:none;
image: url(:/png/png/downloadsfolder.png);
width:30;
height:30;
}

2.2.5 lcdnumber

QPalette lcdpat=ui->lcdNumber->palette();
lcdpat.setColor(QPalette::Normal,QPalette::WindowText,Qt::red);//设置字体颜色为
红色
ui->lcdNumber->setPalette(lcdpat);//红色字体

2.3 Qt中的子类控件

3. 贴图(实现自定义视图)

这里不展示项目了,不是很难,主要用的代码就是下面三行👇

this->setWindowFlag(Qt::FramelessWindowHint);//隐藏标题栏
setWindowOpacity(0.4); //窗口透明度
setAttribute(Qt::WA_TranslucentBackground); //是窗口透明,但是上面的空间不透明

欢迎各位大佬批评指正,如果喜欢一键三连,可以关注我,我后续会更新下面的内容

举报

相关推荐

0 条评论