使用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);
  • 这时再运行,将鼠标放置在右下角,就不显示可以拖动了!
原文地址:https://www.cnblogs.com/Doyoung/p/13160803.html