8.30QTday1作业

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

#include   //MyWnd继承于QWidget类,QWidget类对应的头文件,父类所对应的头文件

QT_BEGIN_NAMESPACE
namespace Ui { class MyWnd; }  //引入的命名空间的声明,该命名空间在ui.h中
                               //具体内容是:namespace Ui{
                               //          class MyWnd: public Ui_MyWnd{};
                                //   }
QT_END_NAMESPACE

//定义属于自己的类 MyWnd是类名,公共继承自QWidget
class MyWnd : public QWidget 
{
    Q_OBJECT   //信号与槽的元对象

public:
    MyWnd(QWidget *parent = nullptr);  //构造函数的声明,有一个默认参数的形参,实例化对象时若传参则有参构造,不传参则无参构造
    ~MyWnd();   //析构函数的声明

private:
    Ui::MyWnd *ui;   //定义一个Ui命名空间中的MyWnd类的指针
                     //后期可以通过ui指针找到ui界面上拖拽出来的组件
};
#endif // MYWND_H
#include "mywnd.h"     //自己的头文件
#include "ui_mywnd.h"  //ui界面对应的头文件

MyWnd::MyWnd(QWidget *parent)  //构造函数的定义:前面MyWnd::是由于类名声明,类外使用
    : QWidget(parent)         //继承于QWidget,显性调用父类的构造函数完成对子类从父类继承下来的成员的初始化工作
    , ui(new Ui::MyWnd)       //为本身类中的私有成员ui指针申请Ui::MyWnd大小的空间
{
    ui->setupUi(this);        // 给拖拽出来组件调用setupUi()函数实例化空间,
    //可执行界面的组件由两部分组成,一部分是拖拽出来的,一部分是自己在类中定义出来的,
    //拖拽生成的组件通过ui指针查找,自己在类体内定义出来的(写代码生成的)组件通过this指针从查找
    //本身是一个白板,拖拽出来的东西完全依赖于ui指针, 实例化出来一个空间,
    //并且调用setupui()才会把实例化出阿来的组件实例化界面上,setupUi()函数会为组件申请空间并依附于Mywnd, 最后由show()函数显示;

}

MyWnd::~MyWnd()   //析构函数的定义
{
    delete ui;    //类中的指针变量,并指向堆区空间,需要delete,一方内存泄漏
}
#include "mywnd.h"  //图形化界面的头文件

#include   //应用程序的头文件

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);  //实例化一个应用成员,调用的是有参构造
    MyWnd w;    //无参构造,表明该对象不依赖于任何对象 在栈区实例化自定义类的对象
    w.show();  //调用show()函数,展示图形化界面,该函数是父类提供的,直接用即可
    return a.exec(); //为了阻塞界面不被关闭,等待相关事件发生
                     //等待信号与曹、事件处理、等待用户操作
}

2

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

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    //设置固定尺寸
    this->setFixedSize(480,440);

    //设置窗口标题
    this->setWindowTitle("鹏哥快聊");

    //设置窗口icon
    this->setWindowIcon(QIcon("E:\\QT\\icon\\wodepeizhenshi.png"));

    //实例化一个标签1
    QLabel *lab1 = new QLabel(this);
    lab1->resize(QSize(480,180));
    lab1->setPixmap(QPixmap("E:\\QT\\icon\\logo.png"));
    lab1->setScaledContents(true);   //设置内容自适应,默认false

    //实例化标签2
    QLabel *lab2 = new QLabel(this);
    lab2->resize(QSize(40,35));
    lab2->move(100, 230);
    lab2->setPixmap(QPixmap("E:\\QT\\icon\\userName.jpg"));
    lab2->setScaledContents(true);   //设置内容自适应,默认false

    //构造行编辑器1
    QLineEdit *edit1 = new QLineEdit(this);
    edit1->setPlaceholderText("QQ号码/手机/邮箱");  //设置编辑器的占位符
    edit1->resize(QSize(220,40));
    edit1->move(lab2->x()+80,lab2->y());

    //实例化标签3
    QLabel *lab3 = new QLabel(this);
    lab3->resize(lab2->size());
    lab3->move(lab2->x(),lab2->y()+75);
    lab3->setPixmap(QPixmap("E:\\QT\\icon\\passwd.jpg"));
    lab3->setScaledContents(true);

    //构造行编辑器2
    QLineEdit *edit2 = new QLineEdit(this);
    edit2->setPlaceholderText("密码");   //设置编辑器的占位符
    edit2->resize(edit1->size());
    edit2->move(edit1->x(),lab3->y());
    edit2->setEchoMode(QLineEdit::Password);  //设置回显模式

    //插入登录按钮
    QPushButton *btn1 = new QPushButton(QIcon("E:\\QT\\icon\\login.png"),"登录",this);
    btn1->move(240, 380);
    btn1->resize(90,40);

    //插入取消按钮
    QPushButton *btn2 = new QPushButton(QIcon("E:\\QT\\icon\\cancel.png"),"取消",this);
    btn2->move(btn1->x()+110,btn1->y());
    btn2->resize(btn1->size());

}

Widget::~Widget()
{
    delete ui;
}

你可能感兴趣的:(命令模式)