使用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.用 ...
随机推荐
- Django -MD5密码加密与登录
直接贴代码 login_reg.py from django.shortcuts import render, redirect from web.forms.login_reg import Reg ...
- 空间金字塔池化 ssp-net
<Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition>,这篇paper提出了空间金字 ...
- The solution for apt-get update Err 404
最近在ubuntu 12.10上执行sudo apt-get update 命令后出现了如下错误: Ign http://extras.ubuntu.com natty/main Translatio ...
- PowerShell创建参考窗口
背景 平常我们经常遇到这样一个问题,在使用一个窗口工作时常常需要参考其他窗口的文字或图片,此时就需要频繁切换窗口:或者是看视频时需要参考前面进度的画面:或者是阅读或写文档时需要参考其他位置的文字,这时 ...
- Web Scraping using Python Scrapy_BS4 - using Scrapy and Python(1)
Create a new Scrapy project first. scrapy startproject projectName . Open this project in Visual Stu ...
- layui :iframe 与 layer 的位置问题
最近有个项目是用 Layui 搭的,但是在layer的使用上遇到了问题. 简单的说,在父页面声明layer,在子页面中的子页面用window.parent调用那个父页面的layer. 讲道理应该是和i ...
- springAOP的三种实现方式
springAOP的实现方式 三种 纯XML方式,XML+注解,纯注解方式. Spring 实现AOP思想使⽤的是动态代理技术 默认情况下, Spring会根据被代理对象是否实现接⼝来选择使⽤JDK还 ...
- 题解 SP1812 【LCS2 - Longest Common Substring II 】
对于本题这样的多字符串的子串匹配问题,其实用广义后缀自动机就可以很好的解决,感觉会比普通的后缀自动机做法方便一些. 首先记录出每个节点被多少个字符串更新,也就是记录每个节点有多少个字符串能到达它,可以 ...
- ElasticSearch(二)Kibana、版本控制
Kibana简介: Kibana可视化界面 Kibana是一个开源的分析和可视化平台,设计用于和Elasticsearch一起工作. 你用Kibana来搜索,查看,并和存储在Elasticsearch ...
- 毫无基础的人入门Python,Python新手入门教程2
1.6 面向对象和内存分析086.面向对象和面向过程的区别_执行者思维_设计者思维087.对象的进化故事088.类的定义_类和对象的关系089.构造函数__init__090.实例属性_内存分析091 ...