QT入门之下载、工程创建、学习方法

1.QT下载链接

因为我的是下载在LINUX上面,所以这里提供LINUX平台下的下载方式:

wget http://download.qt.io/archive/qt/5.12/5.12.9/qt-opensource-linux-x64-5.12.9.run
赋予可执行权限,加上 sudo 权限进入安装,这样会安装在 /opt 目录下
chmod +x qt-opensource-linux-x64-5.12.9.run
sudo ./qt-opensource-linux-x64-5.12.9.run

下载好之后,可能会出现图标没有出现的情况,我这里参考的是这位大佬的博客Linux(Ubuntu)系统下安装qt(解决不显示图标的问题

2.新建工程

2.1集成开发环境介绍

QT creator --》集成开发环境(见图示)

图片

图片

图片

图片

图片

2.2.新建QT工程

 方法一:点击projects中new按钮

 方法二:点击文件菜单项 ,选择新建文件/工程

 注意:选择QT widgets application(QT窗口应用程序)

工程名和路径名不能有中文

 2.3.QT工程介绍

  第一个:.pro文件(工程配置文件,和makefile文件类似)

QT       += core gui   //往QT工程中添加核心库和图形用户界面库                      greaterThan(QT_MAJOR_VERSION, 4): QT += widgets  //添加窗口库
CONFIG += c++11  //选用C++11标准语法去编译程序
SOURCES += \
main.cpp \
mainwindow.cpp  //指定要编译的源码
HEADERS += \
mainwindow.h     //指定头文件
FORMS += \
mainwindow.ui //界面设计文件,用来保存你在ui设计师中设计好的ui界面
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target   //指定环境变量

第二个:头文件--》类的定义

class MainWindow : public QMainWindow 
{
    Q_ _OBJECT//宏定义,暂时不理会
    public:
            Mai nWindow(QWidget *parent = nullptr);
            ~MainWindow();
    private:
            Ui: :MainWindow *ui;
};

 第三个:主函数--》

int main(int argc, char *argv[])
{
//argc表示命令行参数的数量,argv表示命令行参数的内容  
QApplication a(argc, argv);  
//QApplication类,用来管理你的QT工程,用来支持信号与槽,用来管理事件的触发  
MainWindow w;  w.show();  //显示主窗口
return a.exec();  //进入事件循环(不断地帮你刷新主窗口)
}

3.QT学习方法

3.1QT内容

QT中的内容非常多,组件的属性有很多:掌握主要的属性设置,其他的属性遇到了上网查询

UI设计师界面的使用--》傻瓜式操作(所见即所得)

(1)作用

            组件(控件):按钮  滑动条   进度条......

            提供了大量的组件帮助我们设计ui界面

(2)跳转到ui设计师

            双击工程中ui文件,自动跳转

            组件如何使用:鼠标左键直接拖动即可

            复制组件:ctrl按住不松开,鼠标拖动组件即可复制

(3)常用的组件

           注意:任何一个组件,你需要查看修改它的属性,都要先用鼠标选中该组件,再去查看修改属性

3.2 标签label

          作用一:用来显示文字

          作用二:用来显示图片

方式一:让图片去自动适应标签的大小(标签的大小是固定的,让图片自动改变大小去适应标签)

QPixmap mymap(piclist.at(n)); //创建了绘图设备mymap.scaled(ui->label->width(),ui->label->height()); //调整图片的宽高,让其跟标签一致ui->label->setScaledContents(true); //让图片可以适应标签ui->label->setPixmap(mymap);

方式二:让标签去自动适应图片的大小

QPixmap mymap(piclist.at(n)); //创建了绘图设备ui->label->resize(mymap.width(),mymap.height());ui->label->setPixmap(mymap);

常用属性

geometry --》定位坐标,长宽大小

font --》设置字体

3.3其他常用组件

(1) 单行输入框  lineEdit

作用:输入一行字符串信息,不能换行

常用属性

geometry --》定位坐标,长宽大小font --》设置字体placeholdertext --》设置默认的提示信息  echomode --》设置输入内容是否隐藏  normal--》不隐藏  password--》隐藏maxlength--》设置输入框的最大字符个数(英文字母一个算一个)中文一个算一个

 (2) 普通按钮  pushbutton

作用:添加一些可以点击的按钮

常用属性

geometry --》定位坐标,长宽大小

 font --》设置字体

 (3)文本浏览框 textBrowser 

作用:显示文本内容,只能显示,不能编辑修改

方法:setText(你要显示的内容)

(4)文本编辑框 textEdit

作用:可以显示文本,也可以编辑

方法:setText(你要显示的内容)

QString QTextEdit::toPlainText() const   //返回文本编辑框中所有的内容

 (5)lcdNumber

作用:显示数字

方法:display()  //可以显示整数,小数

属性:digitcount  --》设置最大多少位数字

3.4样式设计,添加资源文件

1.样式设计

 (1)什么是样式

为了让你的ui界面更加的美观好看

方法一:点击属性中的stylesheet

方法二:右键点击组件,选择改变样式表

(2)QT中常用的样式设计语句(qss语句)

background-color: rgb(85, 255, 255);             //设置背景颜色
background-image: url(:/new/prefix1/pic/3.jpg);  //设置背景图片
background-image: url(你需要的图片的绝对路径);
border-image: url(:/new/prefix1/pic/2.jpg);      //设置边框图片(边框图片跟组件的大小保持一致)
border-image: url(你需要的图片的绝对路径); 
border-radius:15px;    //把倒角设置为15个像素倒角的大小不能超过组件高度的一半
border:2px solid #ff0000;  //把边框的宽度设置为2个像素,颜色设置成ff0000
QPushButton:pressed{  设置按钮按下的时候背景图片  用于主窗口的样式设计  background-image: url(:/button_down.png);}
QPushButton:pressed#regBt{ 设置指定按钮regBt按钮按下时候背景图片    用于主窗口的样式设计  background-image: url(:/button_down.png);}
QPushButton:hover{    用于主窗口的样式设计  background-color:#ff00ff;  鼠标进入控件设置背景颜色}
QMainWindow{border-image: url(:/new/prefix1/pic/3.jpg);}  //让图片只作用于主窗口  用于主窗口的样式设计

注意:QT中的路径的写法跟window的路径写法是不同

比如:window路径是:  C:\note\temp\1.c

QT代码中这个路径改成:C:/note/temp/1.c

2.QT工程中添加资源文件

(1)什么是资源文件

 只要是你从外界拿过来的文件都叫资源文件,比如:图片,音频文件,视频文件

(2)如何添加资源文件到QT工程中

第一步:准备好你要添加的资源文件,拷贝一份到你的工程目录下(新建文件夹保存)

第二步:右键点击工程名,选择QT,选择QT resource file --》点击add prefix,点击add file--》自动弹出对话框,你选择之前要添加的图片文件最后ctrl+s保存即可。

4.纯代码实现登录界面

1.为什么要掌握纯代码

第一:学习面向对象编程思想--》查询类和方法,学会自动思考阅读QT中api文档

第二:代码实现的功能,肯定比ui设计师强大

2.总结QT的api文档规律(QT助手)

规律一:组件的类名有统一的命名规则

pushButton  --》QPushButton

label --》QLabel

规律二:头文件跟类名一样

 #include <QPushButton>

规律三:ui设计师中所有的属性都有对应的接口函数去设置属性

这些函数都有统一的命名规则  setxxxxx()   //xxxxx就是你见到的属性的英文单词名字

比如:属性名  geometry  --》函数名setGeometry()

font    --》函数名setFont()


3.具体步骤

第一步:创建一个标签对象--》显示标题

(1)构造函数

QLabel(const QString &text, QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags())

参数:  text --》你要显示在标签上的文字信息

QString类似于C++中的string

parent --》表示标签的父窗口(标签在哪个窗口显示,那个窗口就是它的父窗口)

 (2)设置位置坐标,宽高

void QWidget::setGeometry(int x, int y, int w, int h)参数:x y  --》坐标位置w h --》宽和高

(3)设置字体   

voidsetFont(const QFont &)参数:  QFont --》QT中封装好专门表示各种字体的类名QFont::QFont(constQString &family, int pointSize = -1)参数:family --》字体的名字pointSize --》字体大小

  第二步:创建两个输入框--》账号和密码输入

 (1)构造函数

QLineEdit(QWidget *parent = nullptr)参数:parent --》表示单行输入框的父窗口

 (2)设置默认提示字符串

 void setPlaceholderText(const QString &)参数:你要显示的提醒信息

 (3)设置密码隐藏

 void setEchoMode(QLineEdit::EchoMode)参数:QLineEdit::Normal --》不隐藏     QLineEdit::Password--》隐藏

(4)设置最大长度

   void setMaxLength(int)   参数:最大字符数量

(5)设置样式        

 void setStyleSheet(const QString &styleSheet)  参数:styleSheet --》你要设置的样式语句  QString str="输入账号";                   setPlaceholderText(str);

第三步:创建两个按钮

 (1)构造函数

QPushButton(const QString &text, QWidget *parent = nullptr)参数:text --》按钮的字面信息      parent --》按钮的父窗口

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

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

相关文章

初识Linux—— 基本指令(上)

前言 Linux简述 ​ Linux是一种开源、自由、类UNIX的操作系统&#xff0c;由著名的芬兰程序员林纳斯托瓦兹&#xff08;Linus Torvalds&#xff09;于1991年首次发布。Linux的内核在GNU通用公共许可证&#xff08;GPL&#xff09;下发布&#xff0c;这意味着任何人都可以自由…

劳动力市场

1.劳动力市场概述 &#xff08;1&#xff09;劳动力&#xff1a;所有有工作能力且愿意工作的人的总称&#xff0c;由那些正在工作&#xff08;就业&#xff09;和正在寻找工作&#xff08;失业&#xff09;的人组成&#xff0c;表示为&#xff1a;L&#xff08;劳动力&#xf…

PHP代码审计 --MVC模型开发框架rce示例

MVC模型开发框架 控制器Controller&#xff1a;负责响应用户请求、准备数据&#xff0c;及决定如何展示数据 模块Model&#xff1a;管理业务逻辑和数据库逻辑&#xff0c;提供链接和操作数据库的抽象层 视图View&#xff1a;负责前端模板渲染数据&#xff0c;通过html呈现给用户…

Dify 通过导入 DSL 文件创建 Workflow 过程及实现

本文使用 Dify v0.9.2 版本&#xff0c;主要介绍 Dify 通过导入 DSL&#xff08;或 URL&#xff09;文件创建&#xff08;或导出&#xff09;Workflow 的操作过程及源码分析实现过程。Dify通过导入DSL文件创建Workflow过程及实现&#xff1a;https://z0yrmerhgi8.feishu.cn/wik…

Redis五大基本类型——List列表命令详解(命令用法详解+思维导图详解)

目录 一、List列表类型介绍 二、常见命令 1、LPUSH 2、LPUSHX 3、RPUSH 4、RPUSHX 5、LRANGE 6、LPOP 7、RPOP 8、LREM 9、LSET 10、LINDEX 11、LINSERT 12、LLEN 13、阻塞版本命令 BLPOP BRPOP 三、命令小结 相关内容&#xff1a; Redis五大基本类型——Ha…

有序数组的平方(leetcode 977)

一个数组&#xff0c;返回一个所有元素的平方之后依然是一个有序数组。&#xff08;数组中含负数&#xff09; 解法一&#xff1a;暴力解法 所有元素平方后再使用快速排序法重新排序&#xff0c;时间复杂度为O(nlogn)。 class Solution { public:vector<int> sortedSqu…

调用门提权

在我写的2.保护模式&#xff0b;段探测这篇文章中&#xff0c;我们提到了S位对于段描述符的控制&#xff0c;之前我们已经介绍了代码段和数据段&#xff0c;现在我们来把目光转到系统段 在这么多中结构里面&#xff0c;我们今天要介绍的就是编号为12的&#xff0c;32位调用门 结…

Web Service 学习笔记

Web Service 学习笔记 Web Service 基本概念 Web Service 即 web 服务&#xff0c;它是一种跨编程语言和跨操作系统平台的远程调用技术。 Java 中共有三种 Web Service 规范&#xff1a; JAX-WS(JAX-RPC): 基于 xml 数据JAXM&SAAJJAX-RS&#xff1a;基于 xml 或 json 数…

爬虫——JSON数据处理

第三节&#xff1a;JSON数据处理 在爬虫开发中&#xff0c;JSON&#xff08;JavaScript Object Notation&#xff09;是最常见的数据格式之一&#xff0c;特别是在从API或动态网页中抓取数据时。JSON格式因其结构简单、可读性强、易于与其他系统交互而广泛应用于前端与后端的数…

计算机编程中的设计模式及其在简化复杂系统设计中的应用

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 计算机编程中的设计模式及其在简化复杂系统设计中的应用 计算机编程中的设计模式及其在简化复杂系统设计中的应用 计算机编程中的…

【Tealscale + Headscale + 自建服务器】异地组网笔记

文章目录 效果为什么要用 Headscale云服务器安装 Headscale配置 config.yaml创建反向代理搭建管理 UI授权管理 UI添加互联设备参考 效果 首先是连接情况&#xff0c;双端都连接上自建的 Headscale&#xff0c; 手机使用移动流量&#xff0c;测试一下 ping 值 再试试进入游戏 可…

单片机学习笔记 2. LED灯闪烁

目录 0、实现的功能 1、Keil工程 2、代码实现 0、实现的功能 LED灯闪烁 1、Keil工程 闪烁原理&#xff1a;需要进行软件延时达到人眼能分辨出来的效果。常用的延时方法有软件延时和定时器延时。此次先进行软件延时 具体操作步骤和之前的笔记一致。此次主要利用无符号整型的范…

【Cesium】自定义材质,添加带有方向的滚动路线

【Cesium】自定义材质&#xff0c;添加带有方向的滚动路线 &#x1f356; 前言&#x1f3b6;一、实现过程✨二、代码展示&#x1f3c0;三、运行结果&#x1f3c6;四、知识点提示 &#x1f356; 前言 【Cesium】自定义材质&#xff0c;添加带有方向的滚动路线 &#x1f3b6;一、…

Vue之插槽(slot)

插槽是vue中的一个非常强大且灵活的功能&#xff0c;在写组件时&#xff0c;可以为组件的使用者预留一些可以自定义内容的占位符。通过插槽&#xff0c;可以极大提高组件的客服用和灵活性。 插槽大体可以分为三类&#xff1a;默认插槽&#xff0c;具名插槽和作用域插槽。 下面…

从零开始深度学习:全连接层、损失函数与梯度下降的详尽指南

引言 在深度学习的领域&#xff0c;全连接层、损失函数与梯度下降是三块重要的基石。如果你正在踏上深度学习的旅程&#xff0c;理解它们是迈向成功的第一步。这篇文章将从概念到代码、从基础到进阶&#xff0c;详细剖析这三个主题&#xff0c;帮助你从小白成长为能够解决实际…

Python 绘图工具详解:使用 Matplotlib、Seaborn 和 Pyecharts 绘制散点图

目录 数据可视化1.使用 matplotlib 库matplotlib 库 2 .使用 seaborn 库seaborn 库 3 .使用 pyecharts库pyecharts库 注意1. 确保安装了所有必要的库2. 检查Jupyter Notebook的版本3. 使用render()方法保存为HTML文件4. 使用IFrame在Notebook中显示HTML文件5. 检查是否有其他输…

【C++】vector 类模拟实现:探索动态数组的奥秘

&#x1f31f; 快来参与讨论&#x1f4ac;&#xff0c;点赞&#x1f44d;、收藏⭐、分享&#x1f4e4;&#xff0c;共创活力社区。&#x1f31f; 如果你对string&#xff0c;vector还存在疑惑&#xff0c;欢迎阅读我之前的作品 &#xff1a; 之前文章&#x1f525;&#x1f52…

【ubuntu18.04】vm虚拟机复制粘贴键不能用-最后无奈换版本

我是ubuntu16版本的 之前费老大劲安装的vmware tools结果不能用 我又卸载掉&#xff0c;安装了open-vm-tools 首先删除VMware tools sudo vmware-uninstall-tools.pl sudo rm -rf /usr/lib/vmware-tools sudo apt-get autoremove open-vm-tools --purge再下载open-vm-tools s…

使用原生 OpenTelemetry 解锁各种可能性:优先考虑可靠性,而不是专有限制

作者&#xff1a;来自 Elastic Bahubali Shetti•Miguel Luna Elastic 现在支持使用 OTel Operator 在 Kubernetes 上部署和管理 Elastic Distributions of OpenTelemetry (EDOT)。SRE 现在可以访问开箱即用的配置和仪表板&#xff0c;这些配置和仪表板旨在通过 Elastic Observ…

【freertos】FreeRTOS信号量的介绍及使用

FreeRTOS信号量 一、概述二、PV原语三、函数接口1.创建一个计数信号量2.删除一个信号量3.信号量释放4.在中断释放信号量5.获取一个信号量&#xff0c;可以是二值信号量、计数信号量、互斥量。6.在中断获取一个信号量&#xff0c;可以是二值信号量、计数信号量7.创建一个二值信号…