QT-day1

实现华清远见登陆界面

cpp 复制代码
#include "mywnd.h"
#include <iostream>
#include <QDebug>
#include <QPushButton>
#include <QLineEdit>
#include <QLabel>

MyWnd::MyWnd(QWidget *parent)
    : QWidget(parent)
{
    //设置固定窗口大小长400,宽350
    this->setFixedSize(400,350);
    //设置窗口名Widget
    this->setWindowTitle("Widget");
    //导入图标
    this->setWindowIcon(QIcon("F:\\hqyj\\icon\\icon\\wodepeizhenshi.png"));
    //创建标签1华清远见
    QLabel *lab1 = new QLabel(this);
    lab1->resize(400,150);
    lab1->setPixmap(QPixmap("F:\\hqyj\\icon\\icon\\logo.png"));
    lab1->setScaledContents(true);
    //创建admin的标签
    QLabel *lab2 = new QLabel(this);
    lab2->resize(60,55);
    lab2->move(75,160);
    lab2->setPixmap(QPixmap("F:\\hqyj\\icon\\icon\\userName.jpg"));
    lab2->setScaledContents(true);
    //创建密码passwd的标签
    QLabel *lab3 = new QLabel(this);
    lab3->resize(60,55);
    lab3->move(lab2->x(),lab2->y()+65);
    lab3->setPixmap(QPixmap("F:\\hqyj\\icon\\icon\\passwd.jpg"));
    lab3->setScaledContents(true);
    //创建admin行编辑器
    QLineEdit *edit1 = new QLineEdit("admin",this);
    edit1->resize(200,55);
    edit1->move(lab2->x()+65,lab2->y());
    //创建密码passwd行编辑器
    QLineEdit *edit2 = new QLineEdit("123456",this);
    edit2->resize(200,55);
    edit2->move(lab3->x()+65,lab3->y());
    edit2->setEchoMode(QLineEdit::Password);
    //创建登录按钮
    QPushButton *bton1 = new QPushButton(QIcon("F:\\hqyj\\icon\\icon\\login.png"),"登录",this);
    bton1->resize(90,55);
    bton1->move(edit2->x()+20,edit2->y()+65);
    //创建取消按钮
    QPushButton *bton2 = new QPushButton(QIcon("F:\\hqyj\\icon\\icon\\cancel.png"),"登录",this);
    bton2->resize(90,55);
    bton2->move(bton1->x()+105,bton1->y());

}

MyWnd::~MyWnd()
{
}

测试结果

工程文件的注释

工程管理文件.pro

cpp 复制代码
#引入QT工程所需的类库core是核心库,gui是图形开发相关类库
QT       += core gui

#超过4.0版本自动加上widgets类库
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

#支持C++11后的版本
CONFIG += 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 \
    mywind.cpp

#对头文件进行管理
HEADERS += \
    mywind.h

#对ui界面文件进行管理
FORMS += \
    mywind.ui

# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target

头文件

cpp 复制代码
#ifndef MYWIND_H
#define MYWIND_H        //防止文件重复包含

#include <QMainWindow>  //父类的头文件

QT_BEGIN_NAMESPACE
namespace Ui { class MyWind; }
QT_END_NAMESPACE

//自定义自己的界面类,公共继承自QWidget,父类中重写了绘制事件处理函数
class MyWind : public QMainWindow
{
    Q_OBJECT            //信号与槽的元对象,没有这个对象,信号与槽就不能使用了

public:
    MyWind(QWidget *parent = nullptr); //构造函数的声明,并且有一个带默认参数的形参
    ~MyWind();                          //析构函数的声明

private:
    Ui::MyWind *ui;      //可以通过该指针调用ui界面上拖拽出来的组件
};
#endif // MYWIND_H

源文件

cpp 复制代码
#include "mywind.h"
#include "ui_mywind.h"

MyWind::MyWind(QWidget *parent)     //构造函数的定义
    : QMainWindow(parent)           //显性调用父类的有参构造完成对子类从父类继承下来成员的初始化工作
    , ui(new Ui::MyWind)            //给自己类中的指针成员初始化空间,ui界面中拖拽出来的组件,就在这个对象中
{
    ui->setupUi(this);              //调用Ui::MyWnd类里面的成员函数,给拖拽的组件实例化空间,并设置相关属性
}

MyWind::~MyWind()      // 定义析构函数
{
    delete ui;         //释放指针空间
}

主程序文件

cpp 复制代码
#include "mywind.h"         //引入自定义图形化界面类的头文件

#include <QApplication>     //引入应用程序类的头文件

int main(int argc, char *argv[])
{
    QApplication a(argc, argv); //使用应用程序类,实例化一个应用程序的对象
    MyWind w;           //用自定义的图形化界面类实例化一个对象
    w.show();           //调用show函数展示界面,父类提供的可以展示自己的组件,以自己作为父组件的所有子组件也会被展示出来
    return a.exec();    //阻塞等待应用程序,防止应用程序结束,等待用户操作、等待信号与槽、等待事件发生
}
相关推荐
lightqjx2 分钟前
【C++】unordered系列的封装
开发语言·c++·stl·unordered系列
天天爱吃肉821816 分钟前
跟着创意天才周杰伦学新能源汽车研发测试!3年从工程师到领域专家的成长秘籍!
数据库·python·算法·分类·汽车
zh_xuan17 分钟前
kotlin lazy委托异常时执行流程
开发语言·kotlin
大巨头28 分钟前
sql2008 数据库分页语句
数据库
m0_7155753428 分钟前
使用PyTorch构建你的第一个神经网络
jvm·数据库·python
阿猿收手吧!34 分钟前
【C++】string_view:高效字符串处理指南
开发语言·c++
老邓计算机毕设1 小时前
SSM智慧社区家政服务系统80q7o(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
数据库·ssm 框架
玄同7651 小时前
我的 Trae Skill 实践|使用 UV 工具一键搭建 Python 项目开发环境
开发语言·人工智能·python·langchain·uv·trae·vibe coding
Yorlen_Zhang1 小时前
Python Tkinter Text 控件完全指南:从基础编辑器到富文本应用
开发语言·python·c#
lxl13071 小时前
C++算法(1)双指针
开发语言·c++