首页 > 其他分享 >ui入门

ui入门

时间:2024-10-14 20:21:02浏览次数:10  
标签:Dialog 入门 int 像素 ui QPushButton 按钮 500

一、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;

}

标签:Dialog,入门,int,像素,ui,QPushButton,按钮,500
From: https://blog.csdn.net/weixin_63207763/article/details/142927651

相关文章

  • FoxyProxy火狐代理插件及BurpSuite代理链设置
    https://www.yisu.com/ask/69767109.htmlBurpsuite小云12972023-09-1204:04:38栏目:编程语言开发者测试专用服务器限时活动,0元免费领,库存有限,领完即止!点击查看>> FoxyProxy是一款功能强大的火狐代理插件,可以帮助用户在浏览器中轻松地切换和管理不同的代理服......
  • 从0-1入门Flink全网最全吐血总结
    Flink是Apache基金会旗下的一个开源大数据处理框架。目前,Flink已经成为各大公司大数据实时处理的发力重点,特别是国内以阿里为代表的一众互联网大厂都在全力投入,为Flink社区贡献了大量源码。如今Flink已被很多人认为是大数据实时处理的方向和未来,许多公司也都在招聘和......
  • 网络安全学习路线及各类杂项汇总,零基础入门到精通,收藏这篇就够了
    1.安全法(笔者认为学习网络安全前首先得学这个)不是这个↑网络安全法律:了解网络安全相关的法律法规和伦理标准。合规性与标准:学习ISO27001、GDPR等安全标准和合规要求。2.基础知识计算机网络基础:了解网络的基本原理,如TCP/IP协议、OSI模型、路由和交换等。操作系......
  • 洛谷P1373:小 a 和 uim 之大逃离
    洛谷P1373:小a和uim之大逃离题意略思路DP:记dp[i][j][c][0/1]表示走到\(i\)行\(j\)列时,两人容量之差为\(c\)的方案数,\(0\)表示\(\rm小a\)走的最后一步,\(1\)表示\(\rmuim\)走的最后一步。容易得出转移方程:dp[i][j][l][0]+=dp[i-1][j][l-a[i][j]+k][1];dp[......
  • Elementui树形列表控件tree-box
    效果图(在vue2项目开发中,实现了树形列表查看及筛选等交互,用清晰的层级结构展示信息) 开发步骤及代码,来喽!!无脑copy1、组件基本框架  DeviceTree 是基于 Vue.js 和 ElementUI 构建的树形组件。通过 el-tree 组件显示树状结构。组件的外部可通过传递 props 来控制......
  • 盘点IT江湖上能打的十本证书,零基础入门到精通,收藏这一篇就够了
    HCIE考证研究所|厂商认证考试追踪作为一名IT人员,谁没考几个证?值得考的证书都拥有以下特性:▶获政府、企业和从业者认可▶持证人数多,业内共识度高▶帮持证者加分,快速提薪今天,咱们就一起来盘盘,IT行业中,具体哪些认证的含金量高。01系统网络方向认证01华为认证华......
  • layui横向时间线以及参数化
    你好!这是我的第一篇博客。公司项目遇到一个需求,前端需要使用到layui的时间线,我在时间线的基础上进行扩展,使其支持参数化的横向时间线。数据模拟定义在js中,实际以您的数据源为主。可以把代码粘至以下网址进行运行测试layui在线编辑器效果图代码<%@pagecontentType=......
  • Squid代理服务器搭建和简单使用
    1Squid的介绍1.1前言简介代理服务器(ProxyServer)的功能是代理网络用户去取得网络信息。形象地说,它是网络信息的中转站,是个人网络和Internet服务商之间的中间代理机构,负责转发合法的网络信息,对转发进行控制和登记。[1]代理服务器作为连接Internet与Intranet的桥梁,在实际应用......
  • problemmatcher 引用无效: $esbuild-watch vscode插件报错
    vscode插件esbuild类型提示报错最近在上手开发vscode插件,demo阶段就遇到了一个小问题。搜索引擎没有特别好的回答,记录一下,以供查漏补缺。vscode插件开发做为一统前端的开发插件,vscode+其丰富的插件能力,共同构建了欣欣向荣的vscode插件。在团队效率方面,也是不可或缺的利器......
  • aardio入门到精通06-常量、成员常量、全局常量、常量函数
    常量、成员常量、全局常量、常量函数importconsole;//常量、全局常量、常量函数(库函数)//主要内容:常量的特性、不同类型的常量(字面常量、成员常量、全局常量)以及它们的使用场景。如何将普通变量转换为全局常量,以及全局常量在API函数中的应用。//一、常量://1-1常量......