使用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);
  • 这时再运行,将鼠标放置在右下角,就不显示可以拖动了!

使用QT实现一个简单的登陆对话框(纯代码实现C++)的更多相关文章

  1. bootstrap 一个简单的登陆页面

    效果如图:用bootstrap 写的一个简单的登陆 一.修改样式 样式可以自己调整,例如换个背景色之类的,修改 background-color属性就可以 #from { background-col ...

  2. tkinter做一个简单的登陆页面

    做一个简单的登陆页面 import tkinter wuya = tkinter.Tk() wuya.title("wuya") wuya.geometry("900x3 ...

  3. tkinter做一个简单的登陆页面(十六)

    做一个简单的登陆页面 import tkinter wuya = tkinter.Tk() wuya.title("wuya") wuya.geometry("900x3 ...

  4. Linux内核分析—完成一个简单的时间片轮转多道程序内核代码

    ---恢复内容开始--- 20135125陈智威 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-10 ...

  5. 20135202闫佳歆--week2 一个简单的时间片轮转多道程序内核代码及分析

    一个简单的时间片轮转多道程序内核代码及分析 所用代码为课程配套git库中下载得到的. 一.进程的启动 /*出自mymain.c*/ /* start process 0 by task[0] */ p ...

  6. python定义的一个简单的shell函数的代码

    把写代码过程中经常用到的一些代码段做个记录,如下代码段是关于python定义的一个简单的shell函数的代码. pipe = subprocess.Popen(cmd, stdout=subproce ...

  7. django写一个简单的登陆注册

    要写这个,前提还是需要知道三个知识: 一个是urls.py,它是写我们的路由关系的,之前我写了通过wsgiref写一个简单的服务端,也用到了路由,就是 请求过来的url和视图函数的对应关系. 二是就是 ...

  8. vue-cli3和element做一个简单的登陆页面

    1.先用vue-cli3创建一个项目 2.安装element模块 全局安装 npm i element-ui -S 3在main.js引入模块 import ElementUI from 'eleme ...

  9. android示例:一个简单的登陆程序

    最近写了个简单的登陆程序,有几点收获: 1.懂得如何在LinearLayout中嵌套LinearLayout,完善布局的行列: 2.用android:layout_weight控制控件的比重: 3.用 ...

随机推荐

  1. Mysql基础(十一):Self Join

    Summary: 如何使用 MySQL self join 进行表的 自己对自己的join操作.. 前面的教程,已经教过join语法,都是两个表的之间的操作,特殊的,当一个表自己和自己进行join,那 ...

  2. error rabbitMQ:Error: unable to perform an operation on node 'rabbit@xxxx'.

    C:\Program Files\RabbitMQ Server\rabbitmq_server-3.7.4\sbin>rabbitmqctl list_queues Error: unable ...

  3. java 数据结构(二):java常用类 二 StringBuffer、StringBuilder

    1.String.StringBuffer.StringBuilder三者的对比String:不可变的字符序列:底层使用char[]存储StringBuffer:可变的字符序列:线程安全的,效率低:底 ...

  4. 机器学习实战基础(十六):sklearn中的数据预处理和特征工程(九)特征选择 之 Filter过滤法(三) 总结

    过滤法总结 到这里我们学习了常用的基于过滤法的特征选择,包括方差过滤,基于卡方,F检验和互信息的相关性过滤,讲解了各个过滤的原理和面临的问题,以及怎样调这些过滤类的超参数.通常来说,我会建议,先使用方 ...

  5. hihoCoder 1052 基因工程 最详细的解题报告

    题目来源:基因工程 解题思路:假设基因序列长度为N,则需要计算基因序列前K个和后K个相同所需要的最少改变次数sum. 假设基因序列为 ATACGTCT (即M=8),K=6:interval=M-K= ...

  6. 数据结构C语言实现----清空、销毁一个栈

    代码如下: #include<stdio.h> #include<stdlib.h> typedef struct { char *base; char *top; int s ...

  7. 【JVM之内存与垃圾回收篇】JVM与Java体系结构

    JVM与Java体系结构 前言 作为Java工程师的你曾被伤害过吗?你是否也遇到过这些问题? 运行着的线上系统突然卡死,系统无法访问,甚至直接OOMM! 想解决线上JVM GC问题,但却无从下手. 新 ...

  8. LGV定理

    LGV定理用于解决路径不相交问题. 定理 有 \(n\) 个起点 \(1, 2, 3, ..., n\),它们 分别对应 要到 \(n\) 个终点 \(A, B, C, ..., X\),并且要求路径 ...

  9. Docker 入门教程(1)——安装

    docker大名听说了很久,一直没有去研究过,但现在面试动不动要求docker,还是研究下吧.由于我的电脑是win10系统(穷,买不起mac),安装过程各种坑爹问题不断,一度都想放弃,所以说垃圾win ...

  10. 大汇总 | 一文学会八篇经典CNN论文

    本文主要是回顾一下一些经典的CNN网络的主要贡献. 论文传送门 [google团队] [2014.09]inception v1: https://arxiv.org/pdf/1409.4842.pd ...