常用界面设计组件 —— 窗体(QT)

  • 二、常用界面设计组件
    • 2.1 窗体
      • 2.1.1 设置窗体位置、大小及背景颜色
      • 2.1.2 设置窗体标题
      • 2.1.3 多窗体调用

二、常用界面设计组件

组件是GUI的基本元素,也称为UI控件。它接受来自底层平台的不同用户事件,如鼠标和键盘事件(以及其它事件)。所有组件都继承自QObject。QWidget是一个基本的组件,是所有UI组件的基类。它描述组件所需要的大多数属性,包括几何图形、颜色、键盘行为、工具提示等属性。继承关系如下图所示。

2.1 窗体

窗体是指程序的整体界面,可以包含标题栏、菜单栏、 工具栏、关闭按钮、最小化按钮、最大化按钮等。 QMainWindow、QWidget、QDialog 三个类就是用来创建窗体的,可以直接使用也可以继承后再使用。

在这里插入图片描述

  • QMainWindow

    QMainWindow 窗口可以包含菜单栏、工具栏、状态 栏、标题栏等,是最常见的窗口形式,可以作为GUI程 序的主窗口

image image

注意:若不显示菜单栏可按如下方式设置

  • QDialog

    QDialog 是对话框窗口的基类。对话框主要用来执行短 期任务,或与用户进行互动,它可以是模态的也可以是 非模态的。QDialog 没有菜单栏、工具栏、状态栏等。

    image

  • QWidget

    QWidget是Qt中所有可绘制类的基类。任何基于 QWidget的类都可以在没有父类的情况下显示为窗口 。

    image

    如果是主窗口,就使用 QMainWindow;如果是对话框,就是用 QDialog;如果不确定,或有可能作为顶级窗口,也有可能嵌入到其他窗口中,那么使用 QWidget。

2.1.1 设置窗体位置、大小及背景颜色

窗体初始位置为(100,100),控制窗体不可更改大, 最大、最小均为 800x640,背景色为红色。

MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{ui->setupUi(this);//或者使用 setGeometrymove(100,100);setMaximumSize(800,640);setMinimumSize(800,640);setStyleSheet("background:red");
}

运行效果如下图所示

在这里插入图片描述

2.1.2 设置窗体标题

添加图片资源
在这里插入图片描述
在这里插入图片描述

一直下一步 点击完成之后,系统会自动为我们创建出四个文件

记得在mainwindow.h文件中加上 “#include “dialog.h” ”
在这里插入图片描述
添加图片
在这里插入图片描述

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

:图标可以去阿里矢量图库下载: https://www.icon font.cn/ 或者https://www.51tool.com/ico/?action=make 转换ico图标。

  • 修改代码

    #include "mainwindow.h"
    #include "ui_mainwindow.h"MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
    {ui->setupUi(this);move(500,150); //移动窗口位置setMaximumHeight(800); //限制窗口拉伸高度setMaximumWidth(600);  //限制窗口拉伸宽度setStyleSheet("background:green"); //设置窗口底色 “绿色”setWindowTitle("打开 QT 新世界!!!"); //窗口表头setWindowIcon(QIcon(":/images/favicon.ico")); //这一块的路径:在左边项目栏->选中favicon.ico文件->鼠标右击->选择Copy Path...选项
    }MainWindow::~MainWindow()
    {delete ui;
    }void MainWindow::on_pushButton_clicked()
    {dlg.show();
    }
    

    运行效果:

    在这里插入图片描述

    注意:窗口左上角的图标显示不出来,是跟ubuntu系统 的显示相关(windows环境下正常显示)。

2.1.3 多窗体调用

  • 创建基于QMainWindow的项目
    在这里插入图片描述

  • 增加新的窗口类
    在这里插入图片描述
    在这里插入图片描述

  • 代码编辑

    #ifndef MAINWINDOW_H
    #define MAINWINDOW_H#include <QMainWindow>
    #include "dialog.h"QT_BEGIN_NAMESPACE
    namespace Ui {
    class MainWindow;
    }
    QT_END_NAMESPACEclass MainWindow : public QMainWindow
    {Q_OBJECTpublic:// 构造函数MainWindow(QWidget *parent = nullptr);// 析构函数~MainWindow();private slots:// 槽函数,处理按钮点击事件void on_pushButton_clicked();private:// UI指针Ui::MainWindow *ui;// 对话框实例Dialog dlg;
    };
    #endif // MAINWINDOW_H

在这里插入图片描述

  • 添加按钮对应的槽函数
    在这里插入图片描述

    /* mainwindow.cpp */#include "mainwindow.h"
    #include "ui_mainwindow.h"MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow)
    {// 在构造函数中初始化界面ui->setupUi(this);
    }MainWindow::~MainWindow()
    {// 在析构函数中释放界面对象的内存delete ui;
    }void MainWindow::on_pushButton_clicked()
    {// 当按钮被点击时,显示对话框dlg.show();
    }
    
  • 运行效果

    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/629605.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Mybatis 41_构造器映射及使用注解完成构造器映射

41_构造器映射 构造器映射&#xff1a;XML Mapper项目0503构造器映射 ConstructorArgs注解项目0504构造器映射_注解 构造器映射&#xff1a; 构造器映射能控制MyBatis调用指定、有参数的构造器来创建结果集要映射的Java对象 XML Mapper 在<resultMap…/>元素内添加<…

AI扩展手写数字识别应用(二)

理解代码 输入处理 在新应用的代码部分&#xff0c;和我们在手写数字识别课程介绍的代码比起来&#xff0c;差别最大的地方就在于如何处理输入。在上个案例中&#xff0c;我们只需要简单地将正方形区域中的图像格式调整一下&#xff0c;即可用作MNIST模型的输入。而在本文的案…

企业网站建站源码系统:Thinkphp5内核企业网站建站模板源码 带完整的安装代码包以及搭建教程

随着互联网的快速发展&#xff0c;企业对于网站的需求日益增强。为了满足这一市场需求&#xff0c;小编给大家分享一款基于Thinkphp5内核的企业网站建站源码系统。该系统旨在为企业提供一套功能强大、易于使用的网站建设解决方案&#xff0c;帮助企业快速搭建自己的官方网站&am…

STC8H8K蓝牙智能巡线小车——3.按键开关状态获取

电路分析 引脚为P37开关未按下时&#xff0c;P37是高电平开关按下时&#xff0c;GND导通&#xff0c;P37是低电平 编程思路 Driver目录中添加KEY.h文件&#xff0c;应包含引脚定义、开关GPIO实例化函数、开关状态获取函数以及当按下和未按下时执行不同的函数&#xff08;函数…

监督学习 - 梯度提升回归(Gradient Boosting Regression)

什么是机器学习 梯度提升回归&#xff08;Gradient Boosting Regression&#xff09;是一种集成学习方法&#xff0c;用于解决回归问题。它通过迭代地训练一系列弱学习器&#xff08;通常是决策树&#xff09;来逐步提升模型的性能。梯度提升回归的基本思想是通过拟合前一轮模…

Linux中的numactl命令使用详解

假设我们想控制线程如何被分配到处理器核心&#xff0c;或者选择我们想分配数据的位置&#xff0c;那么numactl命令就适合此类任务。在这篇文章中&#xff0c;我们讨论了如何使用numactl命令执行此类操作。 目录&#xff1a; 介绍语法命令总结参考文献 简介 现代处理器采用…

MessageBox:HubSpot x Facebook全方位对接!

在当今数字化营销的浪潮中&#xff0c;将多个业务系统高效整合成为推动企业成功的核心。HubSpot作为一体化的市场营销平台&#xff0c;与Facebook的整合通过强大的工具——MessageBox&#xff0c;为企业提供了更灵活、高效的整合方案。今天运营坛将深入探讨在HubSpot平台上整合…

【数据库原理】(29)数据库设计-需求分析阶段

需求分析就是调查、收集、分析、最后定义用户对数据库的各种要求。它是整个数据库设计的基础和出发点,其结果将直接影响后面各步的设计,甚至决定着最终设计的数据库的好坏与成败。为此,首先必须知道需求分析的任务是什么,以及采用什么样的方法进行需求分析。 一.需求分析的任务…

【docker】Docker Swarm 核心概念及详细使用

一、什么是Docker Swarm Docker Swarm 是 Docker 的原生集群管理工具。它的主要作用是将多个 Docker 主机集成到一个虚拟的 Docker 主机中&#xff0c;为 Docker 容器提供集群和调度功能。通过 Docker Swarm&#xff0c;您可以轻松地管理多个 Docker 主机&#xff0c;并能在这…

❤ Uniapp使用三( 打包和发布上线)

❤ Uniapp使用三( 打包和发布上线) 一、介绍 什么是 uniapp&#xff1f; uniapp 是一种基于 Vue.js 的多平台开发框架&#xff0c;它可以同时用于开发安卓、iOS、H5 等多个平台。因此&#xff0c;只需要写一次代码就可以在多个平台上运行&#xff0c;提高了开发效率。 打包…

Apache Zeppelin学习记录2

Apache Zeppelin学习记录2 文章目录 Apache Zeppelin学习记录2前言一、基础调用二、带参数调用1.代码块要增加一行z.textbox("folder_path", "input")2.读取result 总结 前言 上一章讲了如何使用zeppelin来接入python&#xff0c;本节我们来看看如何使用R…

curl-7.70.0 --with-ssl

openssl的官网 https://www.openssl.org/source/ [ Old Releases ] - /source/old/index.html curl的官网 https://curl.haxx.se/download.html curl downloads 如果想要调试源码 ./configure --disable-shared --without-zlib --enable-static --enable-ipv6 --host&q…

uniapp 使用canvas制作柱状图

效果图&#xff1a; 实现思路&#xff1a; 1、通过展示数据计算需要画几根柱子&#xff1b; 2、通过组件宽度、高度计算出每根柱子的宽度及高度&#xff1b; 3、for循环依次绘制每根柱子&#xff1b; 4、绘制柱子时&#xff0c;先绘制顶部百分比、value值&#xff0c;再绘制柱子…

掌握Spring缓存-全面指南与最佳实践

第1章&#xff1a;引言 大家好&#xff0c;我是小黑&#xff0c;咱们今天来聊聊缓存&#xff0c;在Java和Spring里&#xff0c;缓存可是个大角色。咱们在网上购物&#xff0c;每次查看商品详情时&#xff0c;如果服务器都要去数据库里翻箱倒柜&#xff0c;那速度得慢成什么样&…

Spring Boot “How-to” 指南中文文档-下

本文为官方文档直译版本。原文链接 篇幅较长&#xff0c;遂分两篇 Spring Boot “How-to” 指南中文文档-下 Jersey利用 Spring Security 保护 Jersey 端点的安全与其他网络框架一起使用Jersey HTTP Clients配置 RestTemplate 以使用代理配置基于 Reactor Netty 的 WebClient 使…

自制一款多版本Windows平台的点Net3.5离线安装神器,彻底解决一切烦恼!

网管小贾 / sysadm.cc 公司来了位刚毕业的实习生小蔡&#xff0c;老板让我带带他。 我想着这小伙子干活挺积极主动&#xff0c;平时没事也可以给我搭把手。 可意想不到的是&#xff0c;正是由于我一时心软放松警惕&#xff0c;渐渐被拖进了坑。 话说某天临下班前&#xff0c;…

开发安全之:Database access control

Overview 如果没有适当的 access control&#xff0c;就会执行一个包含用户控制主键的 SQL 指令&#xff0c;从而允许攻击者访问未经授权的记录。 Details Database access control 错误在以下情况下发生&#xff1a; 1. 数据从一个不可信赖的数据源进入程序。 2. 这个数据用…

Linux下防火墙相关命令整理

目录 一.前言二.相关命令整理 一.前言 这篇文章简单整理一下Linux系统中防火墙相关命令。 二.相关命令整理 开启防火墙 systemctl start firewalld关闭防火墙 systemctl stop firewalld重启防火墙 systemctl restart firewalld开机启用防火墙 systemctl enable firewall…

CTF CRYPTO 密码学-4

题目名称&#xff1a;奇怪的先生 题目描述&#xff1a; 描述:oss先生将三个培根的中间一只移到了左边,然后咬了一小口最后一根&#xff0c;说真好吃&#xff0c;真是个奇怪的先生&#xff01; 密文&#xff1a;VlM5WnlXc0ZibEhmMmE1ZHYxMDlhVkdmMlk5WmtRPT0 分析 应该是根据题…

FFmpeg连载6-音频重采样

今天我们的实战内容是将音频解码成PCM&#xff0c;并将PCM重采样成特定的采样率&#xff0c;然后输出到本地文件进行播放。 什么是重采样&#xff1f; 所谓重采样&#xff0c;一句话总结就是改变音频的三元素&#xff0c;也就是通过重采样改变音频的采样率、采样格式或者声道数…