当前位置: 首页 > article >正文

Qt界面编程03

1、QSS样式表

QSS样式表是模仿CSS样式表一种语言,用于美化界面和控件的。

1、在Qt设计师中设置控件的QSS样式表,右击控件或窗口->改变样式表:

添加资源:使用Qt Createor中的资源文件,一般用于设置图片,控件的背景图,边框图片,内容的图片。

添加渐变:在原有颜色的基本上进行设置。

添加颜色:

color 控件内容的颜色,rgb(红[0~255],绿[0~255],蓝[0~255]),rgba(红[0~255],绿[0~255],蓝[0~255],透明度[0~100]);

background-color 控件的背景色

alternate-background-color 交替背景色

border-color 边框颜色

border-top-color 上边框颜色

border-bottom-color 下边框颜色

border-right-color 右边框颜色

border-left-color 左边框颜色

selection-color 内容被选中后的颜色

selection-background-color 内容被选中后的背景色

border-top-left-radius 设置左上角圆角;

border-top-right-radius 设置右上角圆角;

border-bottom-left-radius 设置左下角圆角;

border-bottom-right-radius 设置右下角圆角;

border-radius 设置四个角圆角;

添加字符:设置内容的字体、字号、下划线、加粗等样式。

2、在代码中获取、设置控件的样式表

QString styleSheet() const; 获取控件的样式表

void setStyleSheet(const QString& styleSheet); 设置控件的样式表

3、在Qt项目中添加图片资源

1、选中项目->添加新文件->Qt->Qt Resource File->选择。

2、给取文件取名字,俗称约定叫src->下一步->完成。

3、双击 资源->src.qrc文件,添加前缀。

4、点击添加按钮->添加文件->选择相关的图片文件。

5、Ctrl+s保存。

练习:实现一个相册功能,使用按钮浏览项目中的图片。

ui->label->setStyleSheet("image: url(:/image/2.jpeg);");

2、样式表的选择器

样式表具有继承的特点,父窗口中如果设置的样式表,那么子控件就会继承父窗口的样式表。

控件挨个设计样式表会很麻烦,我们需要在父窗口中设置样式表给子控件,那么就需要学会使用样式表的选择器,也就是指定某个控件、某类控件使用该样式表。

选择器{样式}

1、通用选择器 *

*{
    样式表;    #该样式表对当前控件和所有子控件都有效
}

2、类型选择器

类名 {
    样式表;    #该样式表对某一类控件有效
}

3、属性选择器

类名[属性=val] {
    样式表; #当某一类控件的值某个属性的值为val时,该样式才有效
}

4、ID选择器

类名#对象名{
    样式表;    #该样式表对某一类控件中叫xx名字的控件有效
}

5、后代选择器

容器名 控件名{
    样式表;
}

6、子选择器

容器名 > 控件名{
    样式表;
}

7、伪选择器

控件名:动作{
​
}
​
动作:
    hover 悬停
    pressed 按下
    checked 选中
    unchecked 未被选中
    focus 获得焦点
    disable 禁用
    enable 启动

3、事件

Qt程序在运行过程中,如果用户所做的一些特定动作叫事件(意味着某些事发生了),Qt就会去调用窗口容器的成员函数,只是这些成员函数是虚函数,默认什么都不干。

如果我们继承了窗口容器,并覆盖了这些虚函数,就可以让用户做某动作时,执行相应的功能。

void mousePressEvent(QMouseEvent *); 鼠标单击窗口事件,左右键都可以触发
void mouseReleaseEvent(QMouseEvent *); 鼠标弹起事件
void mouseDoubleClickEvent(QMouseEvent *); 鼠标双击事件
void mouseMoveEvent(QMouseEvent *); 鼠标按下并移动
    event->button() 哪个按钮发出的事件
    event->x(),event->y(),event->pos() 事件发生的位置

void keyPressEvent(QKeyEvent *); 键盘按下事件,方向键触发不了该事件
void keyReleaseEvent(QKeyEvent *); 键盘弹起事件,方向键可以触发该事件
    enum Key 枚举中定义所有按键的枚举值。
    event->key() 获取整型的按键值
    event->text() 获取字符型的按键值

void focusInEvent(QFocusEvent *); 获得焦点,默认不起作用,需要设置容器的focusPolicy属性。
void focusOutEvent(QFocusEvent *); 失去焦点

void enterEvent(QEvent *); 鼠标进入窗口
void leaveEvent(QEvent *); 鼠标离开窗口
void moveEvent(QMoveEvent *); 窗口移动
void resizeEvent(QResizeEvent *); 窗口大改变
void closeEvent(QCloseEvent *); 关闭窗口
void showEvent(QShowEvent *); 窗口显示
void hideEvent(QHideEvent *); 窗口隐藏

练习:实现Qt版的2048游戏。

2、最高分的保存与加载
3、当前游戏的存档
4、游戏结束时弹出再来一局 QMessageBox

4、Qt中的定时器

注意:Qt界面程序在单进程且单线程的状态下,槽函数必须要快速执行完毕然后把执行权交给Qt,然后Qt才能继续响应界面操作,在槽函数执行期间,界面是无法响应操作的,如果槽函数长时间不结束,界面就会卡住。

如果有长时间、重复性的操作,需要使用定时器来完成。

在Qt中定时器被封装成的QTimer类,它不会发出系统级的信号,而是两种使用方法:

1、信号+槽

1、创建定时器对象

2、绑定信号和槽

3、设置产生信号的时间间隔 setInterval(msecs);

4、启动定义器

start(int msec) 启动定时器,设置产生信号的时间间隔,会覆盖setInterval函数的设置。

start() 启动定时器

5、其它功能

isActive() 获取定时器是否启动

stop() 停止计时器

interval() 获取定时器的产生信号的时间间隔

2、事件

1、继承QTimer类

2、void timerEvent(QTimerEvent *event);

3、创建子类对象,启动并设置时间

4、当定时器超时时,就会调用timerEvent,如果该事件函数被覆盖,就不会再产生超时信号


http://www.kler.cn/news/336348.html

相关文章:

  • 【React】入门Day03 —— Redux 与 React Router 核心概念及应用实例详解
  • C# 泛型编程基础:自定义泛型类、方法与接口的应用
  • 基于场景的营销:开源AI智能名片S2B2C商城小程序的机遇与挑战
  • 推理攻击-Python案例
  • C++ Linux多进程同步-命名信号量
  • Docker系列-5种方案超详细讲解docker数据存储持久化(volume,bind mounts,NFS等)
  • Hive数仓操作(十六)
  • Flutter---适配高版本studio运行里面的Android项目报错
  • 网络层常用互联网协议
  • (15)衰落信道模型作用于信号是相乘还是卷积
  • Electron桌面应用打包现有的vue项目
  • 如何使用ssm实现基于Java的校园二手物品交易平台的设计与实现+vue
  • 【含开题报告+文档+PPT+源码】基于SpringBoot的校园互助平台设计与实现【包运行成功】
  • 多因素身份验证技术的原理及实现方式
  • node.js版本管理工具--nvm安装教程及配置(windows)
  • 【PostgreSQL】PG数据库表“膨胀”粗浅学习
  • UE4完整教程 UE4简介 UE4学习攻略及文件格式
  • ubuntu18.04 设置静态ip 00-installer-config.yaml
  • Leetcode - 140双周赛
  • 高轨SAR GESS系统1(CSDN_20241006)