QT 9.28

作业:

1>创建一个新项目,将默认提供的程序都注释上意义

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

main.cpp
复制代码
#include "login.h"
复制代码
//文件包含,自定义的头文件,该头文件中包含了图形化界面类
复制代码
#include <QApplication>
复制代码
//包含应用程序的头文件
复制代码
int main(int argc, char *argv[])
复制代码
{
复制代码
    QApplication a(argc, argv);   //使用应用程序类实例化对象,调用有参构造
复制代码
    login w;                 //使用自定义的类调用无参构造在栈区构造一个界面对象
复制代码
    w.show();               //调用对象的成员函数,将界面展示出来
复制代码
    return a.exec();
复制代码
复制代码
    //a.exec():使用应用程序类对象,调用应用程序的成员函数,保证界面不被关闭,轮询等待界面上的时间发生
复制代码
    //等待用户操作界面上的组件
复制代码
    //等待界面上的信号与槽的响应
复制代码
    //等待事件处理机制的实现
复制代码
}
复制代码
login.h
复制代码
#ifndef LOGIN_H
复制代码
#define LOGIN_H
复制代码
//防止头文件重复包含
复制代码
#include<QPushButton>
复制代码
#include<QLineEdit>
复制代码
#include<QIcon>
复制代码
#include <QWidget>
复制代码
#include<QLabel>
复制代码
#include<qmovie.h>
复制代码
#include<QDebug>
复制代码
复制代码
//自定义的类的声明,公共继承自QWidget:QWidget中封装了有关图形化界面的相关操作的具体实现
复制代码
//由于继承的是系统提供的类,那么自定义的类中即使没有写任何东西,其类中也有很多成员了
复制代码
class login : public QWidget
复制代码
{
复制代码
    Q_OBJECT            //信号与槽的元对象,直接写即可,没有该宏,就不能使用信号与槽
复制代码
复制代码
public:
复制代码
    login(QWidget *parent = nullptr);   //构造函数的声明
复制代码
    ~login();                           //析构函数的声明   虚析构函数
复制代码
};
复制代码
#endif // LOGIN_H
复制代码
login.cpp
复制代码
#include "login.h"
复制代码
复制代码
login::login(QWidget *parent)
复制代码
    : QWidget(parent)    //在子类的初始化列表中显式调用父类的有参构造,来完成对子类从父类中继承下来成员的初始化
复制代码
{
复制代码
    //设置窗口标题
复制代码
    qDebug() << "当前界面标题为:"<< this->windowTitle();
复制代码
    this->setWindowTitle("QQ Client");
复制代码
复制代码
    //设置窗口图标
复制代码
    this->setWindowIcon(QIcon("C:/浏览/QQ.png"));
复制代码
复制代码
    //尺寸
复制代码
    qDebug() << "width:"<<this->width() <<"   height:"<<this->height();
复制代码
    qDebug() <<"size :"<<this->size();
复制代码
    this->setMaximumSize(800,600);
复制代码
    this->setMinimumSize(QSize(400,300));
复制代码
复制代码
//    //背景
复制代码
//    this->setStyleSheet("background-color:skyblue;");
复制代码
复制代码
复制代码
    //设置当前界面大小
复制代码
    this->setFixedSize(350,500);
复制代码
复制代码
    //1、使用无参构造在堆区申请一个按钮
复制代码
       QPushButton * btn1 = new QPushButton;
复制代码
       btn1->setParent(this);               //将当前界面设置成组件的父组件
复制代码
       btn1->setText("登录");              //设置按钮文本内容
复制代码
       btn1->resize(80,40);                //重新设置按钮尺寸
复制代码
       btn1->move(80, 300);               //移动当前组件位置
复制代码
       btn1->setStyleSheet("color:white; background-color:skyblue; border-radius:10px;");    //设置样式表
复制代码
复制代码
复制代码
       //2、使用有参构造,构造一个按钮,实例化对象时,顺便给定父组件
复制代码
       QPushButton *btn2 = new QPushButton(this);
复制代码
       btn2->setText("注册");
复制代码
       btn2->resize(btn1->size());                    //使用btn1的尺寸设置当前按钮的尺寸
复制代码
       btn2->move(btn1->x()+btn1->width()+10, btn1->y());        //使用btn1的位置,确定btn2的位置
复制代码
       btn2->setStyleSheet("color:white; background-color:skyblue; border-radius:10px;");
复制代码
//       btn2->setEnabled(false);                              //设置按钮不可用
复制代码
复制代码
复制代码
       //构建一个行编译器并指定父组件
复制代码
       QLineEdit *edit1 = new QLineEdit(this);
复制代码
       edit1->resize(300, 50);          //重新设置大小
复制代码
       edit1->move(25,200);
复制代码
       edit1->setStyleSheet("color:Pink;");
复制代码
       edit1->setAlignment(Qt::AlignCenter);
复制代码
       edit1->setEchoMode(QLineEdit::Password);
复制代码
       edit1->setPlaceholderText("输入QQ密码");
复制代码
复制代码
       QLineEdit *edit2 = new QLineEdit(this);
复制代码
       edit2->setStyleSheet("color:Pink;");
复制代码
       edit2->setAlignment(Qt::AlignCenter);
复制代码
       edit2->setEchoMode(QLineEdit::Password);
复制代码
       edit2->setPlaceholderText("输入QQ号");
复制代码
       edit2->resize(edit1->size());
复制代码
       edit2->move(edit1->x(),edit1->y()-edit1->height()-10);
复制代码
复制代码
复制代码
}
复制代码
复制代码
login::~login()
复制代码
{
复制代码
}
复制代码
复制代码

效果展示:

Xmind

相关推荐
feiyangqingyun16 分钟前
Qt实时绘制飞行轨迹/移动轨迹实时显示/带旋转角度/平滑移动/效果一级棒/地面站软件开发/无人机管理平台
qt·无人机·集群地面站
j_xxx404_34 分钟前
C++ STL:list|了解list|相关接口|相关操作
开发语言·c++
脏脏a1 小时前
类与对象(上):面向过程到面向对象的跨越,类的定义、封装与 this 指针等核心概念深度剖析
开发语言·c++
熊猫比分站1 小时前
[特殊字符] Java/Vue 实现体育比分直播系统,支持多端实时更新
java·开发语言·vue.js
inferno2 小时前
Maven基础(一)
java·开发语言·maven
csbysj20202 小时前
SQLite Truncate Table: 完全删除表中的数据
开发语言
tung tung tung sahur2 小时前
领略 Rust 抽象之美:自定义迭代器实现全解析
开发语言·后端·rust
ftpeak2 小时前
《Rust MP4视频技术开发》第八章:生成MP4
开发语言·rust·音视频·mp4
好学且牛逼的马3 小时前
【SSM框架 | day25 spring IOC 与 DI 注解开发】
java·开发语言
_OP_CHEN3 小时前
C++进阶:(四)set系列容器的全面指南
开发语言·c++·stl·set·multiset·关联式容器·setoj题