ui入门

news2025/2/23 18:23:00

一、QWidget类

         QWidget是Qt中所有用户界面对象的基类,即可视化组件和窗口的基类都是此类,因此QWidget类内部包含了大量的与UI相关的基础特性。

最最基础的属性:

  • width : const int

宽度,单位像素,不计算边框。属性在文档中通常包含

Access functions表示此属性的读写相关函数,即setter和getter,另外还可能包含其他的读写函数,Qt中属性的getter往往都是与属性同名的函数,setter往往都是set+属性名;如果属性是bool类型,getter往往是 is+属性名。

掌握一些明明规则后期可以自动推理出函数名称,减少查阅文档的频率。

  • height:const int

高度,单位像素,不计算标题栏和边框。

更改宽度和高度可以通过下面的函数:

// 改变大小

// 参数1:宽度

// 参数2:高度

void resize(int w, int h)

  • x : const int
  • 横坐标,单位像素,0在屏幕的最左,正方向向右。
  • y : const int
  • 纵坐标,单位像素,0在屏幕的最上,正方向向下。
  • xy坐标是以QWidget的左上角为准,包含标题栏和边框。
  • 可以通过下面的函数修改位置坐标:

// 移动到指定的坐标

// 参数1:横坐标

// 参数2:纵坐标

void move(int x, int y)

// 参数1:横坐标

// 参数2:纵坐标

// 参数3:宽度

// 参数4:高度

void setGeometry(int x, int y, int w, int h)

 

二、添加子组件(掌握)

本节以QPushButton(最常见的按钮)为例,说明如何通过C++代码向一个窗口中添加子组件。

相关函数:

// 构造函数

// 参数1:按钮的text属性值,表示按钮显示的文字

// 参数2:创建的按钮对象父级窗口,在Qt前期可以简单的通过构造函数有无此参数决定是否使用堆内存对象

QPushButton::QPushButton(const QString & text, QWidget * parent = 0)

创建的子组件默认在父窗口的左上角,子组件位置的坐标系就是整个窗口,窗口的左上角就是原点。

dialog.h

#ifndef DIALOG_H

#define DIALOG_H

#include <QDialog>

#include <QDebug>

#include <QPushButton> // 按钮类

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)

{

// this->resize(500,500);

resize(500,500); // 更改w的大小

move(500,500); // 移动w的位置

// 创建一个堆内存按钮对象

btn = new QPushButton("周六",

this); // this+多态

// 移动并更改大小

btn->setGeometry(200,300,100,100);

}

Dialog::~Dialog()

{

delete btn;

}

三、 样式表(熟悉)

样式表使用QSS语言对界面进行美化,QSS实际上是一个阉割版的CSS,CSS是前端的编程语言。

QWidget中样式表属性为:

  • styleSheet : QString

QString是Qt的字符串类型,只需要给此属性设置为合法的QSS语法字符串,就可以生效。

在计算机中颜色最常见的表示方式是RGB(Red、Green、Blue)记色法,每个颜色的光线亮度被称为一个通道,每个通道是8位(256个梯度)的,即0-255,0表示当前通道黑暗,255表示当前最亮。

例如,正红色为(255,0,0) 白色(255,255,255),上面为10进制表示方式,也支持十六进制的表示方式 正红色为#FF0000 白色#FFFFFF......

#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;\

}"))

#ifndef DIALOG_H

#define DIALOG_H

#include <QDialog>

#include <QDebug>

#include <QPushButton> // 按钮类

#define QPushButton_STYTLE (QString("\

/*按钮普通态*/\

QPushButton\

{\

font-family:Microsoft Yahei;\

/*字体大小为20点*/\

font-size:20pt;\

/*字体颜色为白色*/\

color:white;\

/*背景颜色*/\

background-color:#FFD700;\

/*边框圆角半径为8像素*/\

border-radius:8px;\

}\

/*按钮悬停态*/\

QPushButton:hover\

{\

/*背景颜色*/\

background-color:#7b00ff;\

}\

/*按钮按下态*/\

QPushButton:pressed\

{\

/*背景颜色*/\

background-color:#b3a500;\

/*左内边距为3像素,让按下时字向右移动3像素*/\

padding-left:3px;\

/*上内边距为3像素,让按下时字向下移动3像素*/\

padding-top:3px;\

}"))

class Dialog : public QDialog

{

Q_OBJECT

public:

Dialog(QWidget *parent = 0);

~Dialog();

private:

QPushButton* btn; // 属性(成员变量)

};

#endif // DIALOG_H

#include "dialog.h"

Dialog::Dialog(QWidget *parent)

: QDialog(parent)

{

// this->resize(500,500);

resize(500,500); // 更改w的大小

move(500,500); // 移动w的位置

// 创建一个堆内存按钮对象

btn = new QPushButton("周六",

this); // this+多态

// 移动并更改大小

btn->setGeometry(200,300,100,100);

// 设置按钮的样式表属性

// btn->setStyleSheet("background-color:#FFD700;color:rgb(125, 38, 205)");

btn->setStyleSheet(QPushButton_STYTLE);

}

Dialog::~Dialog()

{

delete btn;

}

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

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

相关文章

房屋租赁系统(论文+源码)-kaic

摘 要 社会的发展和科学技术的进步&#xff0c;互联网技术越来越受欢迎。网络计算机的生活方式逐渐受到广大人民群众的喜爱&#xff0c;也逐渐进入了每个用户的使用。互联网具有便利性&#xff0c;速度快&#xff0c;效率高&#xff0c;成本低等优点。 因此&#xff0c;构建符…

下载Edge/Chrome浏览器主题的背景图片

当我们为Edge安装了心仪的主题后&#xff0c;希望把对应的背景图片下载保存要怎么做呢&#xff0c;以下图的“湖心小屋”主题为例。如下图&#xff0c;我们已经在应用商店中按照了该主题。 当打开新标签页后&#xff0c;可以欣赏这个主题内置的背景图片。 如果想要下载这个背景…

安装macOS Sequoia注意事项

随着macOS Sequoia的发布&#xff0c;许多Mac用户开始计划升级到这一最新版本。然而&#xff0c;升级系统并非简单点击“升级”按钮即可。在安装新系统之前&#xff0c;有一些关键的注意事项可以帮助你避免潜在的问题&#xff0c;确保顺利过渡到macOS Sequoia。本文将详细介绍在…

《深度学习》【项目】自然语言处理——情感分析 <上>

目录 一、项目介绍 1、项目任务 2、评论信息内容 3、待思考问题 1&#xff09;目标 2&#xff09;输入字词格式 3&#xff09;每一次传入的词/字的个数是否就是评论的长度 4&#xff09;一条评论如果超过32个词/字怎么处理&#xff1f; 5&#xff09;一条评论如果…

源码编译 FunASR for windows on arm

源码编译 FunASR for windows on arm 这里有编译好的&#xff0c;直接下载使用 https://github.com/turingevo/FunASR-build/releases 编译 1 下载 onnxruntime-win-arm64&#xff1a; https://github.com/microsoft/onnxruntime/releases/download/v1.16.1/onnxruntime-win…

最优化方法-Goldstein准则学习记录(matlab代码实现)

目录 一、前言 二、定义 三、代码实现 四、改良后 五、总结 一、前言 作为非精确线性搜索方法的一种&#xff0c;旨在降低计算量&#xff0c;提高算法效率。在迭代过程中没有必要把线性搜索搞得十分精确&#xff0c;因此我们可以放松对的精度要求&#xff0c;只要求每一步…

葵花卫星影像数据NC转tif

数据介绍 葵花8号卫星(Himawari-8)是日本发射的静止轨道气象卫星,由日本气象厅(JMA)运营。该卫星自2015年7月7日开始正式启用,主要用于观测东亚和西太平洋区域的天气情况。葵花8号卫星搭载了先进的光学仪器,能够提供高分辨率的气象数据。 卫星分辨率 葵花8号卫星的主要…

Python学习-注释,输入,运算符

python中的注释 单行注释以#开头多行注释 这是一段多行注释。 你可以在这里写很多行注释&#xff0c; 这些内容都不会被Python解释器执行。 中文编码注释#coding:utf-8按住ctrl\ 多行注释 输入函数 input() 输入值的类型为str 基本使用 presentinput(输入的提示) print(pre…

STL.string(中)

string 迭代器findswapsubstrrfindfind_first_of&#xff08;用的很少&#xff09;find_last_of&#xff08;用的很少&#xff09;find_first_not_of&#xff08;用的很少&#xff09; 迭代器 int main() {//正向迭代器string s1("hello world!");string::iterator i…

PCL 渐进式形态学滤波

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 如果不太了解点云数学形态学的基本理论,可以先阅读这篇文章:https://blog.csdn.net/dayuhaitang1/article/details/123172437。形态学中的窗口结构一直存在着这样的问题:如果窗口结构元尺寸过小,则无法去除一些…

Qt入门教程:创建我的第一个小程序

本章教程&#xff0c;主要介绍如何编写一个简单的QT小程序。主要是介绍创建项目的过程。 一、打开QT软件编辑器 这里使用的是QT5.14.2版本的&#xff0c;安装教程参考以往教程&#xff1a;https://blog.csdn.net/qq_19309473/article/details/142907096 二、创建项目 到这里&am…

《OpenCV计算机视觉》—— 风格迁移

将下图中的图片换一种风格展示出来 如下图结果&#xff1a; 完整代码如下&#xff1a; import cv2image_yuantu cv2.imread("wechat.jpg") image cv2.resize(image_yuantu, dsizeNone, fx0.5, fy0.5) cv2.imshow(yuan tu, image) cv2.waitKey(0)""&q…

如何实现简单的 WinCC 项目分屏?

说明&#xff1a; 本文主要介绍了在不使用分屏器的情况下&#xff0c;通过 WinCC 项目中的设置&#xff0c;实现简单的分屏操作。两台显示器分别显示不同的 WinCC 画面&#xff0c;独自操作&#xff0c;互不影响。 试验环境 &#xff1a; 本文试验时所用硬件及软件环境…

python基础——网络编程

前言 互联网时代&#xff0c;现在基本上所有的程序都是网络程序&#xff0c;很少有单机版的程序了。网络编程就是如何在程序中实现两台计算机的通信。 Python语言中&#xff0c;提供了大量的内置模块和第三方模块用于支持各种网络访问&#xff0c;而且Python语言在网络通信方面…

如何避免日志中打印SQL语句:完整解决方案

个人名片 &#x1f393;作者简介&#xff1a;java领域优质创作者 &#x1f310;个人主页&#xff1a;码农阿豪 &#x1f4de;工作室&#xff1a;新空间代码工作室&#xff08;提供各种软件服务&#xff09; &#x1f48c;个人邮箱&#xff1a;[2435024119qq.com] &#x1f4f1…

空间智能技术赋能CIM平台,为数字住建插上翅膀

在数字化浪潮的推动下&#xff0c;城市信息模型&#xff08;CIM&#xff09;平台正成为城市规划、建设和管理的重要工具。CIM平台通过集成地理信息系统&#xff08;GIS&#xff09;、建筑信息模型&#xff08;BIM&#xff09;和物联网&#xff08;IoT&#xff09;等技术&#x…

博客搭建之路:Netlify将url重定向到小写问题

文章目录 Netlify将url重定向到小写问题 Netlify将url重定向到小写问题 hexo版本5.0.2 npm版本6.14.7 next版本7.8.0 前两天将博客从vercel改为托管到Netlify上&#xff0c;本来运行的挺流畅的。但是今天我看一篇博客的评论时突然发现&#xff0c;虽然有评论 但是文章开头的评论…

完整发布/上传uniapp Ios应用到App Store流程

使用uniapp打包&#xff0c;假如使用app store证书打包出来的ipa文件&#xff0c;需要上传到app store上才能上架。假如你还没有app store证书&#xff0c;还没有打包&#xff0c;你可以参考下面这篇文章&#xff0c;先创建打包证书再继续看这篇上架的教程&#xff1a;https://…

unity ps 卡通角色自制

一、PS的使用 1.画头 按U键打开画椭圆工具&#xff0c;红色框内选择形状填充色和描边&#xff0c;默认是画椭圆&#xff0c;按住Shift即可画圆 2.画眼睛 按照步骤一的操作画两个填充椭圆就行&#xff0c;然后CtrlG打组&#xff0c;再CtrlJ复制即可 3.画鼻子、嘴、身体、脚 同…

多态对象的存储方案小结

某个类型有几种不同的子类&#xff0c;Jackson中的JsonTypeInfo 和JsonSubTypes可以应对这种情形&#xff0c;但有点麻烦&#xff0c;并且name属性必须是字符串、必须用Jackson为基础的json工具类对json字符串和对象进行序列化和反序列化。用过一次这种方案后边就不想再用了。 …