常用界面设计组件 —— 窗体(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.hqwc.cn/news/417808.html

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

相关文章

【MySQL】一文总结MVCC多版本并发控制

目录 MVCC 介绍当前读和快照读当前读快照读 MVCC 原理解析隐式字段Undo Log版本链Read ViewRead View 可见性原则 RC 和 RR 下的 Read ViewRC 下的 Read ViewRR 下的 Read View小结RR 级别下能否防止幻读总结 MVCC 介绍 在当今高度并发的数据库环境中&#xff0c;有效的并发控…

汇川PLC如何连接电脑进行数据通信和远程上下载

准备工作 一台可联网操作的电脑一台单网口的远程透传网关及博达远程透传配置工具网线一条&#xff0c;用于实现网络连接和连接PLC一台汇川PLC及其编程软件InoPrShop一张4G卡或WIFI天线实现通讯(使用4G联网则插入4G SIM卡&#xff0c;WIFI联网则将WIFI天线插入USB口&#xff09…

慢查询定位

慢查询 使用工具 mysql自带慢日志 默认没有开启需要手动开启 查看慢日志中的文件 总结

玩《Minecraft》的贝贝

贝贝通过指令获得了 n 个木棍和 m 个钻石&#xff0c;以及一个工作台&#xff0c;他想要制造尽可能多的工具。 一共有五种钻石工具&#xff0c;下面是每种钻石工具的合成方案&#xff1a; 输入 第一行&#xff0c;一个整数&#xff0c;为数组组数 T (1 ≤ T ≤ 1e5)。 接下来的…

【软件测试】学习笔记-统一测试数据平台

这篇文章主要探讨全球大型电商企业中关于准备测试数据的最佳实践&#xff0c;从全球大型电商企业早期的测试数据准备实践谈起&#xff0c;分析这些测试数据准备方法在落地时遇到的问题&#xff0c;以及如何在实践中解决这些问题。其实&#xff0c;这种分析问题、解决问题的思路…

储能变流器(PCS)构网型和跟网型区别

跟网型本质为电流源&#xff0c;自身无法提供电压与频率支撑&#xff0c;必须依赖电网电压和频率&#xff0c;无法支撑系统&#xff1b;构网型本质为电压源&#xff0c;内部设定电压参数信号输出电压与频率&#xff0c;既可并网也可离网运行&#xff0c;对电网支撑能力强。因新…

日志记录logging

文章目录 1. logging基础使用1.1 日志的6个级别1.2 logging.basicConfig1.3 案例 2. logging的高级应用2.1 记录器Logger2.2 处理器- Handler2.3 格式器- Formatter2.4 创建关联2.4 案例 3.在项目中的应用3.1 定义全局使用的logger对象3.2 使用案例 参考 1. logging基础使用 1…

【JavaEE】CAS

作者主页&#xff1a;paper jie_博客 本文作者&#xff1a;大家好&#xff0c;我是paper jie&#xff0c;感谢你阅读本文&#xff0c;欢迎一建三连哦。 本文于《JavaEE》专栏&#xff0c;本专栏是针对于大学生&#xff0c;编程小白精心打造的。笔者用重金(时间和精力)打造&…

Quantlab3.4代码发布 | lightGBM排序轮动 | 29个行业机器学习合成因子轮动策略(代码+数据+模型下载)

原创文章第444篇&#xff0c;专注“AI量化投资、个人成长与财富自由"。 按咱们星球的惯例&#xff0c;今天发布代码&#xff1a;Quantlab3.4。 quantlab 3.4重要更新&#xff1a; 1、支持截面rank函数写因子。 2、alpha158因子集。 3、lightgbm分类和排序模型。 …

006.Oracle事务处理

我 的 个 人 主 页&#xff1a;&#x1f449;&#x1f449; 失心疯的个人主页 &#x1f448;&#x1f448; 入 门 教 程 推 荐 &#xff1a;&#x1f449;&#x1f449; Python零基础入门教程合集 &#x1f448;&#x1f448; 虚 拟 环 境 搭 建 &#xff1a;&#x1f449;&…

洛谷NOIP2002 普及组 选数 +NOIP1999普及组 回文数

两道日常的练习题&#xff0c;废话不多说&#xff0c;直接上题上代码&#xff1a; 这道题目的难点在于怎样去根据一个不同的k值&#xff0c;通过代码来实现将所有符合题目要求的数字相加并且不重复的功能。下面请看代码&#xff0c;会有详细的讲解&#xff1a; #include<io…

实现分布式锁

背景 分布式锁是一种用于协调分布式系统中多个节点之间并发访问共享资源的机制。在分布式系统中&#xff0c;由于存在多个节点同时访问共享资源的可能性&#xff0c;需要使用分布式锁来保证数据的一致性和正确性。 今天要实现的是分布式场景中的互斥类型的锁。 下面时分布…