QT的UI入门

二、UI入门

  1. QWidget类(熟悉)

QWidget类是所有组件和窗口的基类,内部包含了一些基础的界面特性。

常用属性:

  1. 修改坐标
  • x : const int

横坐标,每个图形的左上角为定位点,横轴的零点在屏幕的最左边,正方向向右。

  • y : const int

纵坐标,每个图形的左上角为定位点, 纵轴的零点在屏幕的最上边。正方向向下。

虽然横坐标与纵坐标无法直接修改,但是可以通过函数间接进行修改。

// 参数1新的横坐标
// 参数2:新的纵坐标
void	move(int x, int y)

  1. 修改宽高
  • width : const int

宽度,不包含边框

  • height : const int

高度,不包含边框

// 参数1:新的宽度
// 参数2:新的高度
void	resize(int w, int h)

可以通过下面函数,直接设置上述四个属性。

// 参数是x、y,w、h宽高
void	setGeometry(int x, int y, int w, int h)

dialog.cpp

#include "dialog.h"

// 构造函数定义
Dialog::Dialog(QWidget *parent)
    : QDialog(parent) // 透传构造。parent:参数
{
    qDebug() << "构造函数" << "helloworld";
    // 移动w 到200、200的位置
    move(200,200);
    // 设置w的宽高
    resize(200,600);


}

// 析构函数
Dialog::~Dialog()
{

}

  1. 修改样式
  • styleSheet : QString

样式表,QString为Qt的字符串类型,样式表使用QSS语法(模仿前端CSS语法)。

#include "dialog.h"

// 构造函数定义
Dialog::Dialog(QWidget *parent)
    : QDialog(parent) // 透传构造。parent:参数
{
    qDebug() << "构造函数" << "helloworld";
    // 移动w 到200、200的位置
    move(200,200);
    // 设置w的宽高
    resize(200,600);

    // 设置样式表(设置背景颜色)
    setStyleSheet("background-color:red");
}

// 析构函数
Dialog::~Dialog()
{

}

2、添加子组件(掌握)

上面的窗口中什么都没有,实际上可以向窗口周昂添加若干组件,实现不同的显示和交互效果,本节以QPushButton(按压式按钮)组件为例子。

QPushButton要持续存在,直到窗口关闭,因此使用堆内存

// 参数1:按钮上显示的文字
// 参数2:现阶段可以认为是给当前组件设置父窗口。
​QPushButton(const QString & text, QWidget * parent = 0)

#include "dialog.h"

// 构造函数定义
Dialog::Dialog(QWidget *parent)
    : QDialog(parent) // 透传构造。parent:参数
{
    qDebug() << "构造函数" << "helloworld";
    // 移动w 到200、200的位置
    move(200,200);
    // 设置w的宽高
    resize(200,600);

    // 设置样式表(设置背景颜色)
//    setStyleSheet("background-color:red");
    // 创建一个按钮对象
    // 参数1:按钮显示的文字
    // 参数2:在当前对象窗口中创建一个按钮,this指向当前对象(w)
    btn = new QPushButton("你好",this);
    btn->move(50,200);
}

// 析构函数
Dialog::~Dialog()
{
    delete btn;
}

以下是一个预设好的QPushButton的样式表,可以根据需求自行更改。

#define QPushButton_STYTLE (QString("\
/*按钮普通态*/\
QPushButton\
{\
    font-family:Microsoft Yahei;\
    /*字体大小为20点*/\
    font-size:20pt;\
    /*字体颜色为白色*/\
    color:white;\
    /*背景颜色*/\
    background-color:rgb(14 , 150 , 254);\
    /*边框圆角半径为8像素*/\
    border-radius:8px;\
}\
/*按钮悬停态*/\
QPushButton:hover\
{\
    /*背景颜色*/\
    background-color:rgb(100 , 137 , 255);\
}\
/*按钮按下态*/\
QPushButton:pressed\
{\
    /*背景颜色*/\
    background-color:rgb(14 , 135 , 10);\
    /*左内边距为3像素,让按下时字向右移动3像素*/\
    padding-left:3px;\
    /*上内边距为3像素,让按下时字向下移动3像素*/\
    padding-top:3px;\
}"))

推荐两个配色网站

在线颜色选择器 | RGB颜色查询对照表

Color Palette Generator - Create Beautiful Color Schemes

dialog.h

#ifndef DIALOG_H
#define DIALOG_H

// 添加头文件QDialog对话框基类。Qt自带类型通常使用Q开头
#include <QDialog>
#include <QDebug>
#include <QPushButton>

#define QPushButton_STYTLE (QString("\
/*按钮普通态*/\
QPushButton\
{\
    font-family:Microsoft Yahei;\
    /*字体大小为20点*/\
    font-size:20pt;\
    /*字体颜色为白色*/\
    color:white;\
    /*背景颜色*/\
    background-color:rgb(14 , 150 , 254);\
    /*边框圆角半径为8像素*/\
    border-radius:8px;\
}\
/*按钮悬停态*/\
QPushButton:hover\
{\
    /*背景颜色*/\
    background-color:rgb(100 , 137 , 255);\
}\
/*按钮按下态*/\
QPushButton:pressed\
{\
    /*背景颜色*/\
    background-color:rgb(14 , 135 , 10);\
    /*左内边距为3像素,让按下时字向右移动3像素*/\
    padding-left:3px;\
    /*上内边距为3像素,让按下时字向下移动3像素*/\
    padding-top:3px;\
}"))

// 继承QDialog(对话框基类)
class Dialog : public QDialog
{
    // 先放着
    Q_OBJECT

public:
    Dialog(QWidget *parent = 0); // 构造函数
    ~Dialog();  // 析构函数
private:
    QPushButton *btn;
};

#endif // DIALOG_H

dialog.cpp

#include "dialog.h"

// 构造函数定义
Dialog::Dialog(QWidget *parent)
    : QDialog(parent) // 透传构造。parent:参数
{
    qDebug() << "构造函数" << "helloworld";
    // 移动w 到200、200的位置
    move(200,200);
    // 设置w的宽高
    resize(200,600);

    // 设置样式表(设置背景颜色)
//    setStyleSheet("background-color:red");
    // 创建一个按钮对象
    // 参数1:按钮显示的文字
    // 参数2:在当前对象窗口中创建一个按钮,this指向当前对象(w)
    btn = new QPushButton("你好",this);
    btn->move(50,200);
    // 设置样式给按钮对象
    btn->setStyleSheet(QPushButton_STYTLE);
}

// 析构函数
Dialog::~Dialog()
{
    delete btn;
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Javase-方法的使用

文章目录 一 . 方法的初步认识二 . 方法的定义三 . 方法调用的执行过程四 . 实参与形参的关系五 . 方法的重载 一 . 方法的初步认识 方法其实就是一些代码片段,类似于c语言中的函数 方法存在的意义(理解): 是能够模块化的组织代码(当代码规模比较复杂的时候).做到代码被重复使…

一文搞懂match、match_phrase与match_phrase_prefix的检索过程

一、在开始之前&#xff0c;完成数据准备&#xff1a; # 创建映射 PUT /tehero_index {"settings": {"index": {"number_of_shards": 1,"number_of_replicas": 1}},"mappings": {"_doc": {"dynamic": …

[计算机网络]---TCP协议

前言 作者&#xff1a;小蜗牛向前冲 名言&#xff1a;我可以接受失败&#xff0c;但我不能接受放弃 如果觉的博主的文章还不错的话&#xff0c;还请点赞&#xff0c;收藏&#xff0c;关注&#x1f440;支持博主。如果发现有问题的地方欢迎❀大家在评论区指正 目录 一 、TCP协…

如何在群辉7.2中使用Docker搭建容器魔方服务并远程访问【内网穿透】

文章目录 1. 拉取容器魔方镜像2. 运行容器魔方3. 本地访问容器魔方4. 群辉安装Cpolar5. 配置容器魔方远程地址6. 远程访问测试7. 固定公网地址 本文主要介绍如何在群辉7.2版本中使用Docker安装容器魔方&#xff0c;并结合Cpolar内网穿透工具实现远程访问本地网心云容器魔方界面…

深入了解Git

1.1 Git 的工作流程简介 克隆 Git 资源作为工作目录 在克隆的资源上添加或修改文件 如果其他人修改了&#xff0c;你可以更新资源 在提交前查看修改 提交修改 在修改完成后&#xff0c;如果发现错误&#xff0c;可以撤回提交并再次修改并提交 1.2 Git 工作区、暂存区和版…

2-21算法习题总结

由于蓝桥杯的题,我不知道从怎么复制,就只能粘贴图片了 翻硬币 代码 import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc new Scanner(System.in);String start sc.next();char[] starts start.toCharArray();String end sc…

nginx优化配置

一 全局配置的六个模块简介 全局块&#xff1a;全局配置&#xff0c;对全局生效 events块&#xff1a;配置影响 Nginx 服务器与用户的网络连接 http块&#xff1a;配置代理&#xff0c;缓存&#xff0c;日志定义等绝大多数功能和第三方模块的配置 server块&#xff1a;配置…

TypeScript01:安装TypeScript

一、TypeScript 官方网站&#xff1a;https://www.tslang.cn/docs/index.html 练习场&#xff1a;https://www.typescriptlang.org/zh/play 好处&#xff1a; 强类型语言&#xff0c;对JS弱类型的一个良好补充&#xff1b;TS利于大型项目团队合作&#xff0c;可以一定程度…

大工程 从0到1 数据治理 数仓篇(sample database classicmodels _No.7)

大工程 从0到1 数据治理 之数仓篇 我这里还是sample database classicmodels为案列&#xff0c;可以下载&#xff0c;我看 网上还没有类似的 案列&#xff0c;那就 从 0-1开始吧&#xff01; 提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#xff0c;如何生成可参…

WordPress后台自定义登录和管理页面插件Admin Customizer

WordPress默认的后台登录页面和管理员&#xff0c;很多站长都想去掉或修改一些自己不喜欢的功能&#xff0c;比如登录页和管理页的主题样式、后台左侧菜单栏的某些菜单、仪表盘的一些功能、后台页眉页脚某些小细节等等。这里boke112百科推荐这款可以让我们轻松自定义后台登录页…

2024-02-21 学习笔记(DETR)

自动多模态检测验证效果不佳&#xff08;过检太多&#xff09;后&#xff0c;节后开始尝试DETR路线。 基本梳理了下DETR发展和验证的脉络&#xff0c;先进行相应指定场景的效果验证。 关于DETR系列的介绍&#xff0c;B站上比较多&#xff0c;迪哥的都讲的比较细。 推荐大佬的…

【数据结构】_队列

目录 1.概念 2.队列的使用 3.队列模拟实现 4.循环队列 5.双端队列 6.栈与队列的互相实现 6.1 用队列实现栈 6.2 用栈实现队列 1.概念 &#xff08;1&#xff09;队列是只允许在一端进行插入数据操作&#xff0c;在另一端进行删除数据操作的特殊线性表&#xff1b; &am…

1Panel使用GMSSL+Openresty实现国密/RSA单向自适应

本文 首发于 Anyeの小站&#xff0c;转载请取得作者同意。 前言 国密算法是国家商用密码算法的简称。自2012年以来&#xff0c;国家密码管理局以《中华人民共和国密码行业标准》的方式&#xff0c;陆续公布了SM2/SM3/SM4等密码算法标准及其应用规范。其中“SM”代表“商密”&a…

C++日志库plog使用指南

前言 之前介绍过一个C语言日志库 轻量级c语言开源日志库log.c介绍&#xff0c;源代码只有不到200行&#xff0c;使用非常方便。但是也存在很多缺点&#xff0c;比如日志时间只支持打印到秒&#xff0c;没有作多线程处理&#xff0c;不支持日志回滚。在小型项目或者测试demo中使…

SpringBoot-helloworld

1. helloworld 使用springboot完成一个简单的web应用&#xff0c;当访问/hello时&#xff0c;返回"hello springboot"字符串。 首先&#xff0c;创建一个maven工程&#xff0c;并引入依赖。 <!--使用springboot编写web应用前&#xff0c;需要声明父工程spring-b…

Cent OS 7 无线网连接

环境&#xff1a;小型迷尔工控机 CentOS的镜像版本&#xff1a;CentOS-7-x86_64-DVD-2009.iso 下载地址&#xff1a;https://www.centos.org/download/ 安装CentOS的过程跳过。 成功安装后&#xff1a; 1、通过 ip addr 查看网卡的情况 2、通过nmcli dev status 查看网卡的…

嵌入式学习-qt-Day3

嵌入式学习-qt-Day3 一、思维导图 二、作业 完善对话框&#xff0c;点击登录对话框&#xff0c;如果账号和密码匹配&#xff0c;则弹出信息对话框&#xff0c;给出提示”登录成功“&#xff0c;提供一个Ok按钮&#xff0c;用户点击Ok后&#xff0c;关闭登录界面&#xff0c;跳…

【Nacos】构建云原生应用的动态服务发现、配置管理和服务管理平台【企业级生产环境集群搭建应用】

基础描述 一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集&#xff0c;帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。Nacos 帮助您更敏捷和容易地构建、交付和…

快速鲁棒的ICP(一)

一、代码下载以、修改以及使用 链接&#xff1a;OpenGP/sparseicp: Automatically exported from code.google.com/p/sparseicp (github.com) 解压之后&#xff1a; 快速鲁棒的ICP是其他人在这份Sparse ICP代码基础上改写出来的&#xff1a; 我这里已经下载好了&#xff1a;…
最新文章