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

Qt常用控件第一部分

1.控件概述

        Widget 是 Qt 中的核⼼概念. 英⽂原义是 "⼩部件", 我们此处也把它翻译为 "控件" .
控件是构成⼀个图形化界⾯的基本要素.
        像上述⽰例中的, 按钮, 列表视图, 树形视图, 单⾏输⼊框, 多⾏输⼊框, 滚动条, 下拉框等, 都可以称为 "控件".
        Qt 作为⼀个成熟的 GUI 开发框架, 内置了⼤量的常⽤控件. 这⼀点在 Qt Designer 中就可以看到端倪.并且 Qt 也提供了 "⾃定义控件" 的能⼒, 可以让程序猿在现有控件不能满⾜需求的时候, 对现有控件做出扩展, 或者⼿搓出新的控件.

关于控件体系的发展

        控件是 GUI 开发中的通⽤概念. 不仅仅局限在 Qt 中.

        第⼀阶段:

        完全没有控件. 此时需要通过⼀些绘图 API ⼿动的绘制出按钮或者输⼊框等内容, 代码编写繁琐. 例如⽂曲星的 Lava 平台开发.

        第⼆阶段:

        只包含粗略的控件. 只是提供了按钮, 输⼊框, 单选框, 复选框等最常⽤的控件.

        例如 html 的原⽣控件.

 

        第三阶段:

        更完整的控件体系, 基本可以覆盖到 GUI 开发中的⼤部分场景.

        例如早期的 MFC, VB, C++ Builder, Qt, Delphi, 后来的 Android SDK, Java FX, 前端的各种 UI 库等.

2.QWidget核心属性

2.1 核心属性概览

2.2 enable

代码⽰例: 使⽤代码创建⼀个禁⽤状态的按钮
运⾏程序, 可以看到按钮处于灰⾊状态, ⽆法被点击
代码⽰例: 通过按钮2 切换按钮1 的禁⽤状态
        ui界面如下
        槽函数如下
        运行截图如下
QObject 的 objectName 属性介绍:
QObject 是 QWidget 的⽗类. ⾥⾯最主要的属性就是 objectName .
在⼀个 Qt 程序中, objectName 相当于对象的⾝份标识, 彼此之间不能重复.
在使⽤ Qt Designer 时, 尤其是界⾯上存在多个 widget 的时候, 可以通过 objectName
取到指定的 widget 对象.
Qt Designer ⽣成的 ui ⽂件, 本⾝是 xml 格式的. qmake 会把这个 xml ⽂件转换成 C++ 的 .h
⽂件(这个⽂件⽣成在 build ⽬录中), 构成⼀个 ui_widget 类.
每个 widget 的 objectName 最终就会成为 ui_widget 类的属性名字.
最终这个类的实例, 就是 Ui::Widget *ui , 因此就可以通过形如 ui->pushButton
ui->pushButton_2 这样的代码获取到界⾯上的 widget 对象了.

2.3 geometry

位置和尺⼨. 其实是四个属性的统称:
                • x 横坐标
                •  y 纵坐标
                • width 宽度
                • height ⾼度
代码示例
1)在界面中拖五个按钮
        五个按钮的 objectName 分别为 pushButton_target , pushButton_up , pushButton_down , pushButton_left , pushButton_right五个按钮的初始位置和⼤⼩都随意.
2) 在 widget.cpp 中编写四个按钮的 slot 函数
代码示例:表白程序
1) 往界⾯上拖拽两个按钮和⼀个 Label. Label 的 objectName 为 pushButton_accept pushButton_reject , label 的objectName 为 label
控件中⽂本如下图所⽰.
2) 在 widget.cpp 中添加 slot 函数
运⾏程序, 可以看到, 当点击 "残忍拒绝" 时, 按钮就跑了.
http://www.dtcms.com/a/107122.html

相关文章:

  • 计组(蒋)期末不挂科纲要
  • Flutter入门(完整教程)
  • 19信号和槽_信号和槽的基本概念
  • 406. 根据身高重建队列
  • Docker 构建镜像异常报错解决
  • 深入剖析Linux常用命令,助力高效操作
  • 23.6 CharGLM多模态API实战:24k上下文角色一致性优化全解析
  • cmake 中的命令
  • Java面试题总结
  • C语言 - 指针变量 + 1 的本质
  • Linux中动静态库的制作
  • AF3 OpenFoldSingleMultimerDataset类解读
  • 产品经理的大语言模型课 04 -模型应用的云、边、端模式对比
  • STM32开发板上生成PWM正弦波
  • XT1861 同步升压 DC-DC 变换器
  • Spring Boot 3.4.3 基于 JSqlParser 和 MyBatis 实现自定义数据权限
  • 【Qt】QList<T> list(n)构造函数创建列表时元素 T的默认值
  • AI写程序:视频裁剪小工具
  • 【模板】P2764 最小路径覆盖问题
  • 【Linux】ELF文件与库的加载
  • RNN模型与NLP应用——(8/9)Attention(注意力机制)
  • LeetCode每日温度
  • Zemax设计实例:手机广角镜头设计(FOV 120°)
  • 在centos7上安装ragflow
  • 第149场双周赛:找到字符串中合法的相邻数字、重新安排会议得到最多空余时间 Ⅰ、
  • 腾讯云智测试开发面经
  • javaSE————网络原理
  • 从吉卜力漫画到艺术创造:GPT-4o多种风格绘图Prompt大全
  • Redisson 操作 Redis Stream 消息队列详解及实战案例
  • HttpClient-03.入门案例-发送POST方式请求