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_OBJECTpublic:
    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.mzph.cn/news/696162.shtml

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

相关文章

js实现复制功能

一、具体场景 前端有时需要实现点击按钮复制的功能&#xff0c;这个时候就不能让用户去手动选择内容右键复制了。 二、实现方式 1. document.execCommand &#xff08;1&#xff09;具体实现 复制时&#xff0c;先选中文本&#xff0c;然后调用document.execCommand(‘copy’)…

171基于matlab的随机共振微弱信号检测

基于matlab的随机共振微弱信号检测&#xff0c;随机共振描述了过阻尼布朗粒子受周期性信号和随机噪声的共同作用下,在非线性双稳态系统中所发生的跃迁现象. 随机共振可用于弱信号的检测。程序已调通&#xff0c;可直接运行。

共享之力:分布式计算的奇迹

在信息时代的浪潮中&#xff0c;分布式计算作为一种革命性的技术&#xff0c;已经深刻地改变了我们对计算和数据处理的理解方式。其发展历程既是一段精彩的科技史&#xff0c;也是一段充满探索与突破的冒险故事&#xff0c;从最初的概念探索到如今的普及应用&#xff0c;分布式…

HashMap 源码学习-jdk1.8

1、一些常量的定义 这里针对MIN_TREEIFY_CAPACITY 这个值进行解释一下。 java8里面&#xff0c;HashMap 的数据结构是数组 &#xff08;链表或者红黑树&#xff09;&#xff0c;每个数组节点下可能会存在链表和红黑树之间的转换&#xff0c;当同一个索引下面的节点超过8个时…

【Webpack】处理字体图标和音视频资源

处理字体图标资源 1. 下载字体图标文件 打开阿里巴巴矢量图标库open in new window选择想要的图标添加到购物车&#xff0c;统一下载到本地 2. 添加字体图标资源 src/fonts/iconfont.ttf src/fonts/iconfont.woff src/fonts/iconfont.woff2 src/css/iconfont.css 注意字体…

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

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

Java并发基础:原子类之AtomicBoolean全面解析

本文概要 AtomicBoolean类优点在于能够确保布尔值在多线程环境下的原子性操作&#xff0c;避免了繁琐的同步措施&#xff0c;它提供了高效的非阻塞算法实现&#xff0c;可以大大提成程序的并发性能&#xff0c;AtomicBoolean的API设计非常简单易用。 AtomicBoolean核心概念 …

P1024 [NOIP2001 提高组] 一元三次方程求解

P1024 [NOIP2001 提高组] 一元三次方程求解 纯代码记录 #include <iostream> #include <math.h> using namespace std; double a,b,c,d; double res[3];//用于存放三个解 int resCount;inline double F(double x)//三次函数 {return a*pow(x,3)b*pow(x,2)c*xd; }//…

web前端开发this指向问题

❗ 函数内部中的 this 指向谁&#xff0c;不是在函数定义时决定的&#xff0c;而是在函数第一次调用并执行的时候决定的 1. call 方法 语法&#xff1a;函数名.call(调用者, 参数1, …) 作用&#xff1a;函数被借用时&#xff0c;会立即执行&#xff0c;并且函数体内的this会…

Facebook Horizon:探索虚拟现实中的社交空间

随着科技的不断进步&#xff0c;虚拟现实&#xff08;VR&#xff09;技术正成为社交互动和娱乐体验的新前沿。在这个数字时代&#xff0c;Facebook作为全球最大的社交媒体平台之一&#xff0c;正在引领虚拟社交的新时代&#xff0c;其推出的虚拟社交平台Facebook Horizon成为了…

Tomcat线程池原理(下篇:工作原理)

文章目录 前言正文一、执行线程的基本流程1.1 JUC中的线程池执行线程1.2 Tomcat 中线程池执行线程 二、被改造的阻塞队列2.1 TaskQueue的 offer(...)2.2 TaskQueue的 force(...) 三、总结 前言 Tomcat 线程池&#xff0c;是依据 JUC 中的线程池 ThreadPoolExecutor 重新自定义…

深入理解C语言(5):程序环境和预处理详解

文章主题&#xff1a;程序环境和预处理详解&#x1f30f;所属专栏&#xff1a;深入理解C语言&#x1f4d4;作者简介&#xff1a;更新有关深入理解C语言知识的博主一枚&#xff0c;记录分享自己对C语言的深入解读。&#x1f606;个人主页&#xff1a;[₽]的个人主页&#x1f3c4…

Imagewheel私人图床搭建结合内网穿透实现无公网IP远程访问教程

文章目录 1.前言2. Imagewheel网站搭建2.1. Imagewheel下载和安装2.2. Imagewheel网页测试2.3.cpolar的安装和注册 3.本地网页发布3.1.Cpolar临时数据隧道3.2.Cpolar稳定隧道&#xff08;云端设置&#xff09;3.3.Cpolar稳定隧道&#xff08;本地设置&#xff09; 4.公网访问测…

flutter 文件上传组件和大文件分片上传

文件分片上传 资料 https://www.cnblogs.com/caijinglong/p/11558389.html 使用分段上传来上传和复制对象 - Amazon Simple Storage Service 因为公司使用的是亚马逊的s3桶 下面是查阅资料获得的 亚马逊s3桶的文件上传分片 分段上分为三个步骤&#xff1a;开始上传、上传对…

CSP-J 2023 T3 一元二次方程

文章目录 题目题目背景题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 提示 题目传送门题解思路总代码 提交结果尾声 题目 题目背景 众所周知&#xff0c;对一元二次方程 a x 2 b x c 0 , ( a ≠ 0 ) ax ^ 2 bx c 0, (a \neq 0) ax2bxc0,(a0)&#xff0c;可…

STM32G030C8T6:定时器1ms中断(以64MHz外部晶振为例)

本专栏记录STM32开发各个功能的详细过程&#xff0c;方便自己后续查看&#xff0c;当然也供正在入门STM32单片机的兄弟们参考&#xff1b; 本小节的目标是&#xff0c;系统主频64 MHZ,采用高速外部晶振&#xff0c;通过定时器3 每秒中断控制 PB9 引脚输出高低电平&#xff0c;从…

20240222作业

完善对话框&#xff0c;点击登录对话框&#xff0c;如果账号和密码匹配&#xff0c;则弹出信息对话框&#xff0c;给出提示“登录成功"&#xff0c;提供一个Ok按钮&#xff0c;用户点击OK后&#xff0c;关闭登录界面&#xff0c;跳转到其他界面 如果账号和密码不匹配&…

Java基础-注解

注解 注解是用来干什么的它有什么作用注解的常见分类内置注解Override注解定义 Deprecated注解定义 SuppressWarnings注解定义 元注解Target注解定义ElementType Retention&&RetentionTarget注解定义RetentionPolicy Documented注解定义 Inherited注解定义用法 Repeata…

低代码开发:推动互联网企业数字化转型的关键因素

联网行业作为我国数字经济发展的核心驱动力&#xff0c;在推动国家数字化转型中扮演着至关重要的角色。与其他传统行业相比&#xff0c;互联网企业面临更加紧迫的数字化转型需求&#xff0c;因为它们需要不断适应快速变化的市场环境和技术趋势。 然而&#xff0c;由于互联网企业…

深入理解APDU协议与Java开发

1. 什么是APDU&#xff1f; APDU&#xff0c;即应用协议数据单元&#xff08;Application Protocol Data Unit&#xff09;&#xff0c;是一种在智能卡与卡片读卡器之间进行通信的协议。APDU定义了在交互中传输的数据格式和规则&#xff0c;允许读卡器发送指令并接收响应。 2…