博客
关于我
使用QT实现一个简单的登陆对话框(纯代码实现C++)
阅读量:391 次
发布时间:2019-03-05

本文共 1968 字,大约阅读时间需要 6 分钟。

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

效果展示

使用的QT控件 

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

1. 首先创建一个QT项目

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

2. 在.h中添加代码

#ifndef WIDGET_H#define WIDGET_H#include 
#include
#include
#include
class Widget : public QWidget{ Q_OBJECTpublic: 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 
#include
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);
  • 这时再运行,将鼠标放置在右下角,就不显示可以拖动了!

转载地址:http://dzqzz.baihongyu.com/

你可能感兴趣的文章
asp.net打印网页后自动关闭网页【无需插件】
查看>>
【Maven】POM基本概念
查看>>
【Java思考】Java 中的实参与形参之间的传递到底是值传递还是引用传递呢?
查看>>
【设计模式】单例模式
查看>>
远程触发Jenkins的Pipeline任务的并发问题处理
查看>>
entity framework core在独立类库下执行迁移操作
查看>>
Asp.Net Core 2.1+的视图缓存(响应缓存)
查看>>
【wp】HWS计划2021硬件安全冬令营线上选拔赛
查看>>
Ef+T4模板实现代码快速生成器
查看>>
JQuery选择器
查看>>
多线程之volatile关键字
查看>>
2.2.2原码补码移码的作用
查看>>
Java面试题:Servlet是线程安全的吗?
查看>>
Java集合总结系列2:Collection接口
查看>>
Linux学习总结(九)—— CentOS常用软件安装:中文输入法、Chrome
查看>>
比技术还重要的事
查看>>
linux线程调度策略
查看>>
软中断和实时性
查看>>
Linux探测工具BCC(可观测性)
查看>>
SNMP介绍及使用,超有用,建议收藏!
查看>>