使用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);
- 这时再运行,将鼠标放置在右下角,就不显示可以拖动了!
使用QT实现一个简单的登陆对话框(纯代码实现C++)的更多相关文章
- bootstrap 一个简单的登陆页面
效果如图:用bootstrap 写的一个简单的登陆 一.修改样式 样式可以自己调整,例如换个背景色之类的,修改 background-color属性就可以 #from { background-col ...
- tkinter做一个简单的登陆页面
做一个简单的登陆页面 import tkinter wuya = tkinter.Tk() wuya.title("wuya") wuya.geometry("900x3 ...
- tkinter做一个简单的登陆页面(十六)
做一个简单的登陆页面 import tkinter wuya = tkinter.Tk() wuya.title("wuya") wuya.geometry("900x3 ...
- Linux内核分析—完成一个简单的时间片轮转多道程序内核代码
---恢复内容开始--- 20135125陈智威 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-10 ...
- 20135202闫佳歆--week2 一个简单的时间片轮转多道程序内核代码及分析
一个简单的时间片轮转多道程序内核代码及分析 所用代码为课程配套git库中下载得到的. 一.进程的启动 /*出自mymain.c*/ /* start process 0 by task[0] */ p ...
- python定义的一个简单的shell函数的代码
把写代码过程中经常用到的一些代码段做个记录,如下代码段是关于python定义的一个简单的shell函数的代码. pipe = subprocess.Popen(cmd, stdout=subproce ...
- django写一个简单的登陆注册
要写这个,前提还是需要知道三个知识: 一个是urls.py,它是写我们的路由关系的,之前我写了通过wsgiref写一个简单的服务端,也用到了路由,就是 请求过来的url和视图函数的对应关系. 二是就是 ...
- vue-cli3和element做一个简单的登陆页面
1.先用vue-cli3创建一个项目 2.安装element模块 全局安装 npm i element-ui -S 3在main.js引入模块 import ElementUI from 'eleme ...
- android示例:一个简单的登陆程序
最近写了个简单的登陆程序,有几点收获: 1.懂得如何在LinearLayout中嵌套LinearLayout,完善布局的行列: 2.用android:layout_weight控制控件的比重: 3.用 ...
随机推荐
- python numpy 保留满足指定条件的行
#arr_old 原来数组 #arr_new 保留后的数组 #>=mean+std 指定条件 arr_new = arr_old[arr_old[:,4]>=(mean+std),:]#筛 ...
- web 部署专题(零):web相关概念以及原理
1.什么是 nginx Nginx 是高性能的 HTTP 和反向代理的服务器,处理高并发能力是十分强大的,能经受高负载的考验,有报告表明能支持高达 50,000 个并发连接数. 2.正向代理 (1)需 ...
- The solution for apt-get update Err 404
最近在ubuntu 12.10上执行sudo apt-get update 命令后出现了如下错误: Ign http://extras.ubuntu.com natty/main Translatio ...
- 微信小程序接口封装、原生接口封装、request、promise封装
相信大家在做微信小程序的时候会有很多地方需要调用接口,就和pc以及手机端一样,多个页面多次调用会有很多状态,那为了节省大家的开发时间就会需要给请求的接口做一些简单封装,便于开发,在这里我用了两个js, ...
- Unity-ECS(一)浅谈CPU缓存命中和Unity面向数据技术栈(DOTS)--笔记
一,缓存类型 概念:局部性. 时间局部性:当前用到的一个存储器位置,不久的将来会被用到. 空间局部性:当前用到的一个存储器位置,附近的位置会被用到. 那么在CPU的层面,这两个局部性的特性就会被Cac ...
- easyui的组合网格:combogrid的选中事件
jQuery EasyUI的API文档中写到: “数据表格下拉框事件完全扩展自combo(自定义下拉框)和datagrid(数据表格)” 这也就是说,我们完全可以将combo和datagrid的事件拿 ...
- 009.Nginx缓存及配置
一 浏览器缓存 1.1 缓存概述 缓存对于Web至关重要,尤其对于大型高负载Web站点.Nginx缓存可作为性能优化的一个重要手段,可以极大减轻后端服务器的负载.通常对于静态资源,即较少经常更新的资源 ...
- Burp Suite Decoder Module - 解码模块
官方参考链接:https://portswigger.net/burp/documentation/desktop/tools/decoder 该模块主要进行编码和解码,支持编码方式有:Plain,U ...
- Python Ethical Hacking - VULNERABILITY SCANNER(7)
VULNERABILITY_SCANNER How to discover a vulnerability in a web application? 1. Go into every possibl ...
- P3913 车的攻击
大致题意: 求出被车攻击到的格子 基本思路: 如果直接暴力出奇迹的话是存不下的, 所以就以另外的思路来想. 容斥原理! 我们可以先把那些在同一行或同一列的车去重,然后把去重后的行数列数记作cntx,c ...