QTday1(实现图形化界面、QT工程项目各文件初始程序的介绍)

1.实现图形化界面 

#include "widget.h"
#include "ui_widget.h"
#include <QDebug>                     //输出函数对应的头文件
#include <QIcon>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);this->setFixedSize(540,410);                 //设置固定尺寸this->setWindowTitle("小徐的聊天室");          //窗口标题this->setWindowIcon(QIcon("C:/Users/潇潇小仙女/Desktop/icon/wodepeizhenshi.png"));   //设置窗口的icon//1、实例化标签QLabel *lab1 = new QLabel("LOGO",this);lab1->resize(540,205);lab1->setPixmap(QPixmap("C:/Users/潇潇小仙女/Desktop/icon/logo.png"));lab1->setScaledContents(true);                 //设置内容自适应QLabel *lab2 = new QLabel("账号",this);lab2->resize(35,35);lab2->move(115,230);lab2->setPixmap(QPixmap("C:/Users/潇潇小仙女/Desktop/icon/userName.jpg"));lab2->setScaledContents(true);QLabel *lab3 = new QLabel("密码",this);lab3->resize(35,35);lab3->move(lab2->x(),lab2->y()+65);lab3->setPixmap(QPixmap("C:/Users/潇潇小仙女/Desktop/icon/passwd.jpg"));lab3->setScaledContents(true);//2、构造行编辑器,构造时给定父组件QLineEdit *edit1 = new QLineEdit(this);edit1->setPlaceholderText("QQ/手机/邮箱");           //设置编辑器的占位文本edit1->resize(230,40);                              //设置尺寸edit1->move(lab2->x()+80,lab2->y());                //移动位置edit1->setStyleSheet("broder-color:black");         //设置样式表//3、构造行编辑器,构造时给定父组件以及文本内容QLineEdit *edit2 = new QLineEdit(this);edit2->setPlaceholderText("密码");                   //设置编辑器的占位文本edit2->resize(230,40);                              //设置尺寸edit2->move(lab3->x()+80,lab2->y());                //移动位置edit2->resize(edit1->size());edit2->move(edit1->x(),edit1->y()+60);edit2->setEchoMode(QLineEdit::Password);             //设置回显模式//4、使用无参构造添加一个按钮QPushButton *btn1 = new QPushButton;   //无参构造btn1->setParent(this);         //给组件指定父组件,让其依附于界面而存在btn1->setText("登录");         //给组件设置文本内容btn1->resize(QSize(90,35));   //设置按钮组件的大小btn1->move(195,360);          //移动组件位置btn1->setIcon(QIcon("C:/Users/潇潇小仙女/Desktop/icon/login.png"));//5、构造按钮时,指定父组件QPushButton *btn2 = new QPushButton(this);      //将当前界面设置成父组件btn2->setText("取消");btn2->resize(btn1->size());                     //使用其他按钮的大小设置该组件的大小btn2->move(btn1->x()+140,btn1->y());btn2->setIcon(QIcon("C:/Users/潇潇小仙女/Desktop/icon/cancel.png"));    //设置图标}
Widget::~Widget()
{delete ui;
}

2.QT工程项目各文件初始程序的介绍

①配置文件:.pro文件

QT       += core gui
# QT工程所需的类库 core是核心库 gui图形化界面相关类库greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
#版本超过4.0,会加上widgetsCONFIG += c++11
#该编译器支持C++11后的版本# The following define makes your compiler emit warnings if you use
# any Qt feature that has been marked deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS# You can also make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0#管理源文件
SOURCES += \main.cpp \mywindow.cpp#管理头文件
HEADERS += \mywindow.h#管理ui文件
FORMS += \mywindow.ui# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target

②头文件

#ifndef MYWINDOW_H
#define MYWINDOW_H   //防止文件重复包含#include <QWidget>   //QWidget类所在的头文件、父类头文件QT_BEGIN_NAMESPACE
namespace Ui { class MyWindow; }     //命名空间的声明
QT_END_NAMESPACE//定义属于自己的类,MyWindow是类名,公共继承自QWidget
class MyWindow : public QWidget
{Q_OBJECT    //信号与槽的元对象public:MyWindow(QWidget *parent = nullptr);     //构造函数的声明,有一个默认参数的形参~MyWindow();                             //析构函数的声明private:Ui::MyWindow *ui;       //后期可以通过ui指针找到ui界面上拖拽出来的组件
};
#endif // MYWINDOW_H

③源文件

#include "mywindow.h"            //自己的头文件
#include "ui_mywindow.h"         //ui界面对应的头文件MyWindow::MyWindow(QWidget *parent)        //构造函数的定义: QWidget(parent)                      //显性调用父类的构造函数完成对子类从父类继承下来的成员的初始化工作, ui(new Ui::MyWindow)                 //对自己类中的指针成员开辟空间
{ui->setupUi(this);                     //给拖拽出来的组件实例化空间
}MyWindow::~MyWindow()             //析构函数的定义
{delete ui;                    //释放ui指针的内存
}

④主程序

#include "mywindow.h"               //图形化界面的头文件#include <QApplication>             //应用程序的头文件int main(int argc, char *argv[])
{QApplication a(argc, argv);     //实例化一个应用程序的对象,调用的是有参构造MyWindow w;                     //在栈区实例化自定义类的对象w.show();                       //调用show函数,展示图形化界面,该函数是父类提供的,直接用即可return a.exec();                //为了阻塞界面不被关闭,等待相关事情发生//等待信号与槽、事件处理、等待用户操作
}

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

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

相关文章

VictoriaLogs:一款超低占用的 ElasticSearch 替代方案

image.png 背景 前段时间我们想实现 Pulsar 消息的追踪流程&#xff0c;追踪实现的效果图如下&#xff1a; 实现其实比较简单&#xff0c;其中最重要的就是如何存储消息。 消息的读取我们是通过 Pulsar 自带的 BrokerInterceptor 实现的&#xff0c;对这个感兴趣的朋友后面会单…

指针与空间按钮的交互

文章目录 原理案例&#xff1a;“直线指针”和“点击按钮”的交互1、效果2、步骤 原理 指针不能直接和空间按钮交互&#xff0c;得借助一个中间层——分发器——它分发指针的进入、退出、选择事件&#xff0c;空间按钮自动监听这些事件 案例&#xff1a;“直线指针”和“点击…

【java中的Set集合】HashSet、LinkedHashSet、TreeSet(最通俗易懂版!!)

目录 一、HashSet集合 1.HashSet集合的特点 2.HashSet常用方法 二、LinkedHashSet集合 LinkedHashSet集合的特点 三、TreeSet集合 1.TreeSet集合的特点 2.TreeSet的基本使用 四、HashSet、LinkedHashSet、TreeSet的使用场景 五、list和set集合的区别 一、HashSet集合 …

12、监测数据采集物联网应用开发步骤(9.1)

监测数据采集物联网应用开发步骤(8.2) TCP/IP Server开发 在com.zxy.common.Com_Para.py中添加如下内容 #锁机制 lock threading.Lock() #本机服务端端口已被连接客户端socket list dServThreadList {} #作为服务端接收数据拦截器 ServerREFLECT_IN_CLASS "com.plug…

【Linux】centos8安装cmake3.27.4

第一步&#xff0c;去官网下安装包&#xff0c;一定不要下错了 下好了之后&#xff0c;用ftp软件传到云服务器或者虚拟机上&#xff0c;我用的是centos8系统&#xff0c;安装之前先准备好这些依赖项 yum install -y gcc gcc-c make automake yum install -y openssl openssl-…

图书馆项目Java阅览室管理系统jsp源代码MySQL

本项目为前几天收费帮学妹做的一个项目&#xff0c;Java EE JSP项目&#xff0c;在工作环境中基本使用不到&#xff0c;但是很多学校把这个当作编程入门的项目来做&#xff0c;故分享出本项目供初学者参考。 一、项目描述 图书馆项目 系统有1权限&#xff1a;管理员 用所技术…

深入浅出AXI协议(3)——握手过程

一、前言 在之前的文章中我们快速地浏览了一下AXI4协议中的接口信号&#xff0c;对此我们建议先有一个简单的认知&#xff0c;接下来在使用到的时候我们还会对各种信号进行一个详细的讲解&#xff0c;在这篇文章中我们将讲述AXI协议的握手协议。 二、握手协议概述 在前面的文章…

色温曲线坐标轴的选取:G/R、G/B还是R/G、B/G ?

海思色温曲线坐标 Mstar色温曲线坐标 高通色温曲线坐标 联咏色温曲线坐标 查看各家白平衡调试界面&#xff0c;比如海思、Mstart、高通等调试资料&#xff0c;白平衡模块都是以R/G B/G作为坐标系的两个坐标轴&#xff0c;也有方案是以G/R G/B作为坐标系的两个坐标轴。 以G/R G…

VueX 与Pinia 一篇搞懂

VueX 简介 Vue官方&#xff1a;状态管理工具 状态管理是什么 需要在多个组件中共享的状态、且是响应式的、一个变&#xff0c;全都改变。 例如一些全局要用的的状态信息&#xff1a;用户登录状态、用户名称、地理位置信息、购物车中商品、等等 这时候我们就需要这么一个工…

Java中异或操作和OTP算法

最近在研究加密算法&#xff0c;发现异或操作在加密算法中用途特别广&#xff0c;也特别好用。下面以Java语言为例&#xff0c;简单记录一下异或操作&#xff0c;以及在算法中的使用&#xff0c;包括常用的OTP算法。 一&#xff0c;异或操作特征 1&#xff0c; 相同出0&#…

康希诺的再估值:市场到底,行业向上

生物医药是整个二级市场弹性数一数二&#xff0c;但拐点难以揣摩的行业。这一点&#xff0c;美港A三大市场都曾经有过足够多的暴涨暴跌案例可用于佐证。 但很多时候&#xff0c;这种片面的表现又掩盖了生物医药自身的永续价值&#xff1a;在绝大多数细分赛道上&#xff0c;任何…

INDEMIND:“大+小”多机协同,实现机器人商用场景全覆盖

随着商用清洁机器人进入越来越多的场景中&#xff0c;单一的中型机器人并不能有效覆盖所有区域&#xff0c;更加细分化的产品组合正在成为新的趋势。 产品形态的“新趋势” 在商用场景中&#xff0c;目前的商用清洁机器人几乎均是中大型的产品形态&#xff0c;较大的体型意味…