• 使用QT实现一个简单的登陆对话框(纯代码实现C++)


    使用QT实现一个简单的登陆对话框(纯代码实现C++)

    效果展示

    使用的QT控件 

    控件 描述
    QLable 标签
    QLineEdit 行文本框
    QPushButton 按扭
    QHBoxLayout 水平布局
    QVBoxLayout 垂直布局

    1. 首先创建一个QT项目

    这里创建一个基于QWidget的QT项目

    2. 在.h中添加代码

    #ifndef WIDGET_H
    #define WIDGET_H
    
    #include <QWidget>
    #include <QLabel>
    #include <QPushButton>
    #include <QLineEdit>
    
    class Widget : public QWidget
    {
        Q_OBJECT
    
    public:
        Widget(QWidget *parent = 0);
        ~Widget();
    public:
        // 将初始化界面的功能封装成一个函数,避免写到构造函数内,使其臃肿
        void init();
    
    private:
        // 创建两个QLabel标签,两个QLineEdit单行文本框,两个QPushButton按扭
        QLabel * userNameLb;
        QLabel * passWordLb;
        QLineEdit * userNameLe;
        QLineEdit * passWordLe;
        QPushButton * logIn;
        QPushButton * logUp;
    
    };
    
    #endif // WIDGET_H
    
    

    3. 在.cpp中添加代码

    #include "widget.h"
    
    #include <QHBoxLayout>
    #include <QVBoxLayout>
    
    Widget::Widget(QWidget *parent)
        : QWidget(parent)
    {
        // 调用界面初始化函数
        init();
    }
    
    Widget::~Widget()
    {
    
    }
    
    void Widget::init()
    {
        userNameLb = new QLabel("用户名:");
        passWordLb = new QLabel;
        passWordLb->setText("密  码:");
        userNameLe = new QLineEdit;
        passWordLe = new QLineEdit;
        logIn = new QPushButton("登陆");
        logUp = new QPushButton;
        logUp->setText("注册");
    
        // 创建三个个水平布局
        QHBoxLayout * usrLayout = new QHBoxLayout;
        // 将用户名标签和文本框添加到水平布局 ,添加的顺序决定布局的顺序
        usrLayout->addWidget(userNameLb);
        usrLayout->addWidget(userNameLe);
    
        QHBoxLayout * pasLayout = new QHBoxLayout;
        pasLayout->addWidget(passWordLb);
        pasLayout->addWidget(passWordLe);
    
        QHBoxLayout * btnLayout = new QHBoxLayout;
        btnLayout->addWidget(logIn);
        btnLayout->addWidget(logUp);
    
        // 创建一个垂直布局,注意这个垂直布局需要指定父类,这里指定this,意思是将这个垂直布局设置到本窗口中
        QVBoxLayout * wholeLayout  = new QVBoxLayout(this);
        // 从上到下顺序依次将三个布局添加到这个垂直布局中,添加布局使用addLayout
        wholeLayout->addLayout(usrLayout);
        wholeLayout->addLayout(pasLayout);
        wholeLayout->addLayout(btnLayout);
    }
    
    

    4. 运行效果

    这时运行的效果能够达到预期,但是有一个问题,那就是用户可以随意拉动窗口大小,使得界面变得不美观

    解决方法就是,可以固定窗口大小,不让用户能够拖动窗口

    • .cpp 的构造函数中添加如下代码:
    // 设置窗口固定大小
    this->setFixedSize(300,150);
    
    • 这时再运行,将鼠标放置在右下角,就不显示可以拖动了!
  • 相关阅读:
    Reverse Words in a String II -- LeetCode
    计算两点间的距离,hdu-2001
    A + B Problem,hdu-1000
    ASCII码排序,hdu-2000
    定义#define
    break语句的使用
    判断一个数是否为素数
    用下面公式求π:
    Sum Problem-hdu-1001
    正三角形的外接圆面积,nyoj-274
  • 原文地址:https://www.cnblogs.com/Doyoung/p/13160803.html
Copyright © 2020-2023  润新知