QT--基础

news/2024/9/29 12:17:38 标签: c++, qt

将默认提供的程序都注释上意义

0101.pro

QT       += core gui
#QT表示要引入的类库   core:核心库  gui:图形化界面库
#如果要使用其他库类中的相关函数,则需要加对应的库类后,才能使用
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
#QT超过版本4时,会自动加上widgets

CONFIG += 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 \
    widget.cpp

#管理头文件
HEADERS += \
    widget.h

#管理所有ui文件
FORMS += \
    widget.ui

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

widget.h

#ifndef WIDGET_H
#define WIDGET_H
//防止头文件重复包含


#include <QWidget>

//ui_mywnd.h中的命名空间的声明
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }     //将其他文件中的命名空间进行声明
QT_END_NAMESPACE

//自定义的类声明,公共继承自QWidget:QWidget中封装了有关图形化界面的相关操作的具体实现
//由于继承的是系统提供的类,那么自定义的类中即使没有写任何东西,其类中也有很多成员
class Widget : public QWidget
{
    Q_OBJECT    //信号与槽的源对象,直接写即可。没有该宏,就不能使用信号与槽

public:
    Widget(QWidget *parent = nullptr);      //构造函数的声明
    ~Widget();                              //析构函数的声明,虚析构函数

private:
    Ui::Widget *ui;        //成员属性,指针
};
#endif // WIDGET_H

main.cpp

#include "widget.h"
//文件包含自定义的头文件,该头文件中包含了图形化界面类


#include <QApplication>
//包含应用程序的头文件

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);      //使用应用程序实例化对象调用有参构造
    Widget w;            //使用自定义的类调用无参构造在栈区构造一个界面对象
    w.show();            //调用对象的成员函数,将界面展示出来
    return a.exec();
   //a.exec():使用应用程序类对象,调用应用程序的成员函数,保证界面不被关闭,轮询等待界面上的事件发生
    //等待用户操作界面上的组件
   //等待界面上的信号与槽的响应
    //等待事件处理机制的实现

}

widget.cpp

#include "widget.h"
#include "ui_widget.h"

//构造函数的定义
Widget::Widget(QWidget *parent)
    : QWidget(parent)          //在子类的初始化列表中显式调用父类的有参构造,来完成对子类从父类继承下来的成员的初始化
    , ui(new Ui::Widget)       //给自己的类中的指针成员实例化空间
{
    ui->setupUi(this);         //将ui界面上拖拽的组件展示到this界面上
}

//析构函数的定义
Widget::~Widget()
{
    delete ui;       //释放ui界面申请的组件空间
}

使用代码的形式实现登录框

#include "code1.h"
#include<QDebug>
#include<QIcon>
#include<QPushButton>
#include<QLineEdit>
#include<QLabel>
code1::code1(QWidget *parent)
    : QWidget(parent)
{
    this->setWindowTitle("lili's window");
    this->setWindowIcon(QIcon("D:/BaiduNetdiskDownload/qt/yingyong/f54cccba4ab9b9122909fb0e0a4f3d3.jpg"));
    this->setMaximumSize(800,600);
    this->setMinimumSize(400,300);
    this->setFixedSize(500,400);
    //this->resize(800,600);
    //this->set(QIcon("D:/BaiduNetdiskDownload/qt/yingyong/7adcf1a6baf7073e8434ae912bbb52a.png"));
    this->setWindowOpacity(0.9);
    this->move(400,300);

    QPushButton *btn1=new QPushButton(QIcon("D:/BaiduNetdiskDownload/qt/yingyong/12067205a1d2c773274d113ab9594f8.jpg"),"登录",this);
    btn1->resize(60,30);
    btn1->move(150,300);
    btn1->setStyleSheet("color:white;background:pink;border-radius:10px;");

    QPushButton *btn2=new QPushButton("注册",this);
    btn2->resize(btn1->size());
    btn2->move(btn1->x()+btn1->width()+70,btn1->y());
    btn2->setStyleSheet("color:white;background:pink;border-radius:10px;");
    btn2->setIcon(QIcon("D:/BaiduNetdiskDownload/qt/yingyong/1359e195af6400e83b7490ddae6808f.jpg"));



    QLabel *lab1=new QLabel("账号:",this);
    lab1->resize(50,30);
    lab1->move(btn1->x()-60,btn1->y()-90);
    lab1->setStyleSheet("color:pink;");



    QLabel *lab2=new QLabel("密码:",this);
    lab2->resize(50,30);
    lab2->move(btn1->x()-60,lab1->y()+40);
    lab2->setStyleSheet("color:pink;");


    QLineEdit *edit1=new QLineEdit(this);
    edit1->resize(250,30);
    edit1->move(lab1->x()+lab1->width()+10,lab1->y());
    edit1->clear();
    edit1->setStyleSheet("color:pink");
    edit1->setAlignment(Qt::AlignCenter);
    edit1->setPlaceholderText("请输入账号");

    QLineEdit *edit2=new QLineEdit("密码",this);
    edit2->resize(250,30);
    edit2->move(edit1->x(),edit1->y()+40);
    edit2->clear();
    edit2->setStyleSheet("color:pink");
    edit2->setAlignment(Qt::AlignCenter);
    edit2->setPlaceholderText("请输入密码");
    edit2->setEchoMode(QLineEdit::Password);

    QLabel *lab3=new QLabel(this);
    lab3->resize(500,200);
    lab3->setStyleSheet("background:skyblue;");
    //QMovie *movie=new QMovie("");
    //lab3->setScaledContents(true);
    //lab3->setPixmap(QPixmap("D:/BaiduNetdiskDownload/qt/yingyong/218f6c69c7208efb13d66d558999dec.jpg"));
    lab3->setPixmap(QPixmap("D:/BaiduNetdiskDownload/qt/yingyong/7adcf1a6baf7073e8434ae912bbb52a.png"));
    lab3->setScaledContents(true);
}

code1::~code1()
{
}


http://www.niftyadmin.cn/n/5683004.html

相关文章

HI3520DV510 22AP80/SS522V100 芯片及开发板

22AP80是针对多路高清/超高清&#xff08;1080P/4M/5M/4K&#xff09;DVR产品应用开发的新一代专业SoC芯片。 22AP80集成了ARM Cortex-A7四核处理器和性能强大的图像分析工具推理引擎&#xff0c;支持多种智能算法应 用。同时&#xff0c;22AP80还集成了多路MIPI D-PHY接口输入…

前端vuex

需要共享的数据适合存储到vuex中 state基本使用 如果开启strict严格模式&#xff0c;直接修改上图的age会报错提示。不能在组件中直接修改state 总结&#xff1a; 分模块使用

网络服务管理

&#x1f4d1;打牌 &#xff1a; da pai ge的个人主页 &#x1f324;️个人专栏 &#xff1a; da pai ge的博客专栏 ☁️宝剑锋从磨砺出&#xff0c;梅花香自苦寒来 # 学习方法&#xff1a; ## 当天…

56 门控循环单元(GRU)_by《李沐:动手学深度学习v2》pytorch版

系列文章目录 文章目录 系列文章目录门控循环单元&#xff08;GRU&#xff09;门控隐状态重置门和更新门候选隐状态隐状态 从零开始实现初始化模型参数定义模型训练与预测 简洁实现小结练习 门控循环单元&#xff08;GRU&#xff09; 之前我们讨论了如何在循环神经网络中计算梯…

C++的STL标准模板库容器--vector类

前言&#xff1a;vector类也可以叫作顺序表&#xff0c;他同样也在STL库中的容器模块中&#xff0c;我还是主要讲常用的几个成员函数和成员变量&#xff0c;同时它晚于string类&#xff0c;所以在设计上没有string冗余。 vector类是一个和数组类似的容器&#xff0c;它属于随机…

【深度学习基础模型】稀疏自编码器 (Sparse Autoencoders, SAE)详细理解并附实现代码。

【深度学习基础模型】Efficient Learning of Sparse Representations with an Energy-Based Model 【深度学习基础模型】Efficient Learning of Sparse Representations with an Energy-Based Model 文章目录 【深度学习基础模型】Efficient Learning of Sparse Representatio…

用Python绘制爱心形状的网络流量分析工具

摘要 在本文中&#xff0c;我们将探讨如何使用Python编程语言创建一个网络流量分析工具&#xff0c;该工具以爱心形状展示网络流量数据。这种创新的可视化方法不仅增加了数据分析的趣味性&#xff0c;同时也提高了数据解读的直观性。文章将详细介绍实现步骤和代码示例。 1. 引…

智能绘画,体现非凡想象力以文生图功能简单操作

智能绘画&#xff0c;体现非凡想象力以文生图功能简单操作 智能绘画技术突破了人类自身的极限&#xff0c;让绘画分析进入到一个更为广泛的视野中。通过输入描述性的文字&#xff0c;便可生成便可生成同一主题、不同风格的画作&#xff0c;体现出非凡的想象力&#xff0c;象征未…