首页 > 其他分享 >【Qt】:常用控件(四:显示类控件)

【Qt】:常用控件(四:显示类控件)

时间:2024-04-05 18:33:05浏览次数:38  
标签:控件 常用 Qt 代码 Widget 快捷键 边框 QFrame

常用控件

一.Lable

QLabel 可以⽤来显⽰⽂本和图⽚.

在这里插入图片描述

代码⽰例:显⽰不同格式的⽂本

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

代码⽰例:显⽰图⽚

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

此时,如果拖动窗⼝⼤⼩,可以看到图⽚并不会随着窗⼝⼤⼩的改变⽽同步变化

在这里插入图片描述

为了解决这个问题,可以在Widget中重写resizeEvent函数。当用户把窗口从A拖到B时,就会触发连续的一系列的resizeEvent。

在这里插入图片描述
在这里插入图片描述

此处的 resizeEvent 函数我们没有⼿动调⽤,但是能在窗⼝⼤⼩变化时被⾃动调⽤.
这个过程就是依赖C++中的多态来实现的.Qt框架内部管理着QWidget对象表⽰咱们的窗⼝.在窗⼝⼤⼩发⽣改变时,Qt就会⾃动调⽤ resizeEvent 函数.
但是由于实际上这个表⽰窗⼝的并⾮是QWidget,⽽是QWidget的⼦类,也就是咱们⾃⼰写的Widget.此时虽然是通过⽗类调⽤函数,但是实际上执⾏的是⼦类的函数(也就是我们重写后的resizeEvent ).此处属于是多态机制的⼀种经典⽤法.通过上述过程,就可以把⾃定义的代码,插⼊到框架内部执⾏.相当于"注册回调函数"。

代码⽰例:⽂本对⻬,⾃动换⾏,缩进,边距

QFrame 是 QLabel 的⽗类.其中 frameShape 属性⽤来设置边框性质.
QFrame::Box :矩形边框
QFrame::Panel :带有可点击区域的⾯板边框
QFrame::WinPanel :Windows⻛格的边框
QFrame::HLine :⽔平线边框
QFrame::VLine :垂直线边框
QFrame::StyledPanel :带有可点击区域的⾯板边框,但样式取决于窗⼝主题

在这里插入图片描述

在这里插入图片描述

代码⽰例:设置伙伴

Qt 中, QLabel中写的文本,是可以指定"快捷键"此处快捷键的规则功能上要比QPushButton弱很多.是在文本中使用&跟上一个字符来表示快捷键。比如&A=>通过键盘上的 alt + a来触发这个快捷键.&B=>通过键盘上的 alt + b来触发。绑定了伙伴关系之后,通过快捷键就可以选中对应的单选按钮/复选按钮

在这里插入图片描述

在这里插入图片描述

此处把label中的⽂本设置为"快捷键&A"这样的形式.其中&后⾯跟着的字符,就是快捷键.可以通过alt+A的⽅式来触发该快捷键
但是注意,这⾥的快捷键和 QPushButton 的不同.需要搭配alt和单个字⺟的⽅式才能触发.

在这里插入图片描述

二.LCD Number

QLCDNumer 是⼀个专⻔⽤来显⽰数字的控件.类似于"⽼式计算器"的效果.

在这里插入图片描述

代码⽰例:倒计时

在这里插入图片描述

QTimer 表⽰定时器.通过 start ⽅法启动定时器之后,就会每隔⼀定周期,触发⼀次QTimer::timeout 信号.
使⽤ connect 把 QTimer::timeout 信号和 Widget::updateTime 连接起来,意味着每次触发QTimer::timeout 都会执⾏ Widget::updateTime

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

  1. 上述代码如果直接在Widget构造函数中,通过⼀个循环+sleep的⽅式是否可以呢?显然,这个代码是不⾏的.循环会使Widget的构造函数⽆法执⾏完毕,此时界⾯是不能正确构造和显⽰的.

  2. 上述代码如果是在Widget构造函数中,另起⼀个线程,在新线程中完成循环+sleep是否可以呢?这个代码同样是不⾏的.Qt中规定,任何对于GUI上内容的操作,必须在主线程中完成.像Widget构造函数,以及connect连接的slot函数,都是在主线程中调⽤的.⽽我们⾃⼰创建的线程则不是.当我们⾃⼰的线程中尝试对界⾯元素进⾏修改时,Qt程序往往会直接崩溃.

这样的约定主要是因为GUI中的状态往往是牵⼀发动全⾝的,修改⼀个地⽅,就需要同步的对其他内容进⾏调整.⽐如调整了某个元素的尺⼨,就可能影响到内部的⽂字位置,或者其他元素的位置.这⾥⼀连串的修改,都是需要按照⼀定的顺序来完成的.由于多线程执⾏的顺序⽆法保障,因此Qt从根本上禁⽌了其他线程修改GUI状态,避免后续的⼀系列问题

标签:控件,常用,Qt,代码,Widget,快捷键,边框,QFrame
From: https://blog.csdn.net/m0_73790767/article/details/137365940

相关文章

  • 蓝桥杯备考随手记: 常用的三种排序算法(冒泡排序、插入排序、选择排序)
    1.冒泡排序(BubbleSort)冒泡排序是一种简单直观的排序算法,在待排序序列中不断地交换相邻两个元素的位置,通过多次遍历,将最大(或最小)的元素逐渐向右(或左)移动到正确的位置,直到整个序列有序。冒泡排序的基本思想如下:从序列的第一个元素开始,比较相邻两个元素的大小。如果前一个元......
  • 第三章-常用的渗透测试工具-(sqlmap)
    常用渗透测试工具1.sqlmap支持的数据库:MySQL、Oracle、PostgreSQL、SQLServer、Access、IBMDB2、SQLite、Firebird、Sybase、SAPMaxDB支持的六种注入技术:boolean-based盲注、time-based盲注、error-based、UNION查询、堆叠查询和带外查询B:Boolean-basedblindSQLinjectio......
  • 第三单元学校里所讲控件
    第三单元学校里所讲控件1.ImageView图片考点1:src和backgroundbackground是背景图片当设置长宽matchparentbackground会铺满而src不会,他会按原图的比例<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android&qu......
  • Java中常用的加密算法及其实现原理详解(二)
    本系列文章简介:        随着互联网的快速发展,信息的安全保护愈发重要。在软件开发中,加密算法被广泛应用于数据的加密和解密过程中,以保护敏感信息的机密性和完整性。Java作为一种广泛应用于企业级开发的编程语言,也提供了丰富的加密算法库。        本文将介绍......
  • Qt 处理excel
    处理Excel文件在Qt中通常涉及到使用第三方库,因为Qt本身并不直接支持Excel文件的读写。下面我将提供一个使用QAxObject(ActiveX封装)来操作Excel的基本代码示例。请注意,这个方法要求你的系统上安装有MicrosoftExcel。首先,确保你的Qt项目配置中包含了ActiveQt模块。在你的.pro文......
  • 【QT入门】 Qt代码创建布局综合运用:仿写腾讯会议登陆界面
    往期回顾:【QT入门】Qt代码创建布局之水平布局、竖直布局详解-CSDN博客【QT入门】Qt代码创建布局之栅格布局详解-CSDN博客【QT入门】Qt代码创建布局之分裂器布局详解-CSDN博客【QT入门】Qt代码创建布局综合运用:仿写腾讯会议登陆界面一、界面分析 主要用到水平布局......
  • 【QT入门】 无边框窗口设计之综合运用,实现WPS的tab页面
    往期回顾:【QT入门】无边框窗口设计之实现窗口阴影-CSDN博客【QT入门】无边框窗口设计之实现圆角窗口-CSDN博客【QT入门】无边框窗口设计综合运用之自定义标题栏带圆角阴影的窗口-CSDN博客 【QT入门】无边框窗口设计之综合运用,实现WPS的tab页面一、最终效果 实现......
  • 【Qt】系统相关(事件)
    目录一、概念二、事件处理三、鼠标事件1.鼠标点击事件2.鼠标释放事件3.鼠标移动事件四、按键事件一、概念事件是应用程序内部或者外部产生的事情或者动作的统称。在Qt中使用一个对象来表示一个事件。所有的Qt事件均继承于抽象类QEvent。事件是由系统或者Qt平台本身......
  • WPF中Ribbon控件的使用
    WPF中Ribbon控件的使用这篇博客将分享如何在WPF程序中使用Ribbon控件。Ribbon可以很大的提高软件的便捷性。上面截图使Outlook2010的界面,在Home标签页中,将所属的Menu都平铺的布局,非常容易的可以找到想要的Menu。在Outlook2003时代,将Home下面的Menu都垂直的排列下来,操作的便捷程......
  • Qt模拟面试(超硬核)
    1.请简要介绍一下你的Qt开发经验。建议:诚实地描述你的Qt经验,包括你使用过的Qt版本、开发过的项目类型、遇到的挑战以及如何解决它们。假如你没有开发经验,可以提供一些关于Qt开发的一般信息和常见的经验分享。Qt是一个跨平台的应用程序开发框架,它提供了丰富的工具......