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

Qt教程(004):按钮的创建

4.1 按钮的创建

【1】包含头文件,在widget.cpp中添加头文件

#include <QPushButton>

【2】添加模块,在.pro中添加(一般创建项目的时候已经生成)

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

【3】创建按钮

// 创建按钮
QPushButton *button = new QPushButton;
// 方式一:这种方式会重新打开一个窗口
// button->show();
// 方式二:设置按钮的父对象为窗口
button->setParent(this);

【4】效果

在这里插入图片描述

【5】按钮属性设置

  • 显示文字
  • 按钮位置
  • 按钮大小
  • 设置按钮背景色
  • 按钮显示文本颜色
  • 按钮边角
  • 按钮显示字体大小
/**********设置按钮属性***********/
// 设置按钮显示文字
button->setText("我是按钮");
// 设置按钮位置
button->move(100, 100);
// 设置按钮大小
button->resize(100, 50);
button->setStyleSheet(
                "QPushButton {"
                "background-color: #000000;"
                "color: white;"
                "border-radius: 10px;"
                "font-size: 16px;"
                "}");

【6】显示效果

在这里插入图片描述

拓展:创建按钮的第二种方式

/*******创建按钮方式二*******/
QPushButton *button1 = new QPushButton("我是按钮2", this);

传递两个参数:

  1. 参数1:按钮的显示文本
  2. 参数2:设置的父对象

两种创建按钮的方式区别:

方式1:窗口是默认大小,按钮显示在左上角。

方式2:窗口是根据按钮的大小来创建的。

4.2 对象模型

在Qt中创建对象的时候会提供一个Parent对象指针,接下来解释这个parent的作用:

  • QObject是以对象树的形式组织起来的。
    • 当你创建一个QObject对象时,会看到QObject的构造函数接收一个QObject指针作为参数,这个参数就是parent,也就是父对象指针。
    • 这相当于,在创建QObject对象时,可以提供一个其父对象,我们创建的这个QObject对象会自动添加到其父对象的children()列表。
    • 当父对象析构的时候,这个列表中的所有对象也会被析构。
  • QWidget时能够在屏幕上显示的一切组件的父类
    • QWidget继承自QObject,因此也继承了这种对象树关系。一个孩子自动成为父组件的一个子组件。
    • 因此它会显示在父组件的坐标系统中,被父组件的边界剪裁。例如,当用户关闭一个对话框的时候,应用程序将其删除,那么,我们希望属于这个对话框的按钮、图表等应该被一起删除。

4.3 Qt窗口坐标体系

以左上角为原点(0,0)

在这里插入图片描述


http://www.kler.cn/a/377077.html

相关文章:

  • 详解GPT-信息抽取任务 (GPT-3 FAMILY LARGE LANGUAGE MODELS)
  • Kafka 消费者专题
  • Jetpack Compose 学习笔记(四)—— CompositionLocal 与主题
  • 用opencv实现像素统计
  • 实时高保真人脸编辑方法PersonaMagic,可根据肖像无缝生成新角色、风格或场景图像。
  • jest使用__mocks__设置模拟函数不生效 解决方案
  • Android 面试Socket与WebSocket
  • 手动搭建 LNMP 环境(CentOS 8)
  • 挑战Java面试题复习第5天,无人扶我青云志
  • 10.1 斐波那契数列
  • Profinet、Ethernet/IP 工业以太网无线通信解决方案
  • 《Qwen2-VL》论文精读【上】:发表于2024年10月 Qwen2-VL 迅速崛起 | 性能与GPT-4o和Claude3.5相当
  • 数组排序简介-基数排序(Radix Sort)
  • Rust 构建与测试自动化
  • 完整的 Vue 2 + TypeScript + Vuex 的项目案例
  • jEasyUI 树形菜单添加节点
  • Docker — 跨平台和环境部署
  • 论文翻译 | PROMPTAGATOR : FEW-SHOT DENSE RETRIEVAL FROM 8 EXAMPLES
  • 线上演示服务环境的搭建
  • 使用Node.js内置的http模块创建简单的HTTP服务器,并根据请求的路径返回不同的文本响应。
  • 数据库连接池实现
  • C++(友元、异常机制、静态成员、单例模式)
  • 【MySQL】InnoDB存储引擎内存结构Ⅱ
  • Linux curl命令下载显示时间/速度/大小
  • LLC Power Switches and Resonant Tank 笔记
  • 【算法-选择排序】挑挑拣拣,排出顺序——选择排序入门