Qt软件开发文档8---登陆界面的绘制及其封装
来源:互联网 发布:臭氧灯能除螨虫知乎 编辑:程序博客网 时间:2024/06/06 01:55
1.登陆界面的绘制
绘制一个登陆界面很简单,直接上代码
signin.h
#ifndef SIGNIN_H#define SIGNIN_H#include <QDialog>#include <QMouseEvent>#include <QPixmap>#include <QVBoxLayout>#include <QStyle>#include <QPainter>#include <QPaintEvent>#include <QHBoxLayout>#include <QDebug>#include <QFrame>class SignIn : public QDialog{ Q_OBJECTpublic: SignIn(QWidget *parent = 0); ~SignIn();protected: void mousePressEvent(QMouseEvent *event); void mouseMoveEvent(QMouseEvent *event); void mouseReleaseEvent(QMouseEvent *event);private: bool mMoveing; QPoint mMovePosition; void initPage();public slots: void btnSignInClicked(); void btnRegisterClicked(); void btnForgetClicked();};#endif // SIGNIN_H
.cpp
#include "signin.h"#include <QLabel>#include <QLineEdit>#include <QPushButton>#include <QCheckBox>SignIn::SignIn(QWidget *parent) : QDialog(parent){ mMoveing=false; setWindowFlags(Qt::FramelessWindowHint|Qt::WindowStaysOnTopHint);//无边框 隐藏Top栏 this->setFixedSize(660,393); this->setStyleSheet("border:1px solid #92C8E8; margin: 0,0,0,0;"); initPage();}SignIn::~SignIn(){}void SignIn::initPage(){ QVBoxLayout *mainLayout = new QVBoxLayout(this); mainLayout->setContentsMargins(0,0,0,0); QWidget *topWidget = new QWidget(this); topWidget->setStyleSheet("QWidget{border:1px solid #92C8E8; margin: 0px;background-color:white}" "QPushButton{border:0px;margin:0px;}" "QLabel{border:0px;margin:0px;}"); topWidget->setMaximumHeight(60); ////////////////////////////////////////////// /// \brief topHLayout ////////////////////////////////////////////// QHBoxLayout *topHLayout = new QHBoxLayout(this); QLabel *labelIcon = new QLabel(this); labelIcon->setPixmap(QPixmap(":/img/logo_xuanzhong.png")); labelIcon->setAlignment(Qt::AlignLeft|Qt::AlignVCenter); QPushButton *btnClose = new QPushButton(this); btnClose->setMaximumSize(20,20); btnClose->setIcon(QIcon(":/img/guanbi.png")); QPushButton *btnMin = new QPushButton(this); btnMin->setMaximumSize(20,20); btnMin->setIcon(QIcon(":/img/suoxiao.png")); topHLayout->addWidget(labelIcon); topHLayout->addWidget(btnMin); topHLayout->addWidget(btnClose); topWidget->setLayout(topHLayout); ////////////////////////////////////////////// /// \brief bottomWidget ////////////////////////////////////////////// QWidget *bottomWidget = new QWidget(this); bottomWidget->setContentsMargins(0,0,0,0); bottomWidget->setStyleSheet("border:1px solid #92C8E8; background-color:#D6EFFB;"); QVBoxLayout *bottomVLayout = new QVBoxLayout(bottomWidget); bottomVLayout->setAlignment(Qt::AlignCenter); QWidget *bottomCenterWidget = new QWidget(bottomWidget); bottomCenterWidget->setMaximumWidth(290); bottomCenterWidget->setMinimumHeight(250); bottomCenterWidget->setStyleSheet("QWidget{border:0px;}" "QLabel{color:#3F3A39;font-size:16px;font-family:楷体;}" "QLineEdit{border:1px solid #CBD2D5 ;height:32px;border-radius:6px;background:white;padding-left:5px;}" "QPushButton{border:0px;background:#F3A026;color:white;border-radius:6px;font-size:16px}"); QVBoxLayout *bottomCenterLayout = new QVBoxLayout(bottomCenterWidget); QHBoxLayout *userLayout = new QHBoxLayout(bottomCenterWidget); userLayout->setAlignment(Qt::AlignRight); QLabel *user = new QLabel(bottomCenterWidget); user->setText(QString::fromLocal8Bit("帐号")); user->setMaximumWidth(32); QLineEdit *userLine = new QLineEdit(bottomCenterWidget); userLine->setMaximumWidth(230); userLayout->addWidget(user); userLayout->addWidget(userLine); QHBoxLayout *pwdLayout = new QHBoxLayout(bottomCenterWidget); pwdLayout->setAlignment(Qt::AlignRight); QLabel *pwd = new QLabel(bottomCenterWidget); pwd->setText(QString::fromLocal8Bit("密码")); pwd->setMaximumWidth(32); QLineEdit *pwdLine = new QLineEdit(bottomCenterWidget); pwdLine->setMaximumWidth(230); pwdLayout->addWidget(pwd); pwdLayout->addWidget(pwdLine); QHBoxLayout *checkLayout = new QHBoxLayout(bottomCenterWidget); checkLayout->setAlignment(Qt::AlignJustify); QCheckBox *checkBox = new QCheckBox(bottomCenterWidget); QLabel *checkLabel = new QLabel(bottomCenterWidget); checkLabel->setText(QString::fromLocal8Bit("保存用户信息")); checkLabel->setMaximumHeight(20); checkLayout->addWidget(checkBox); checkLayout->addWidget(checkLabel); QHBoxLayout *signInLayout = new QHBoxLayout(bottomCenterWidget); signInLayout->setAlignment(Qt::AlignRight); QPushButton *btnSignIn = new QPushButton(bottomCenterWidget); btnSignIn->setChecked(false); btnSignIn->setMinimumSize(230,38); btnSignIn->setText(QString::fromLocal8Bit("登陆")); signInLayout->addWidget(btnSignIn); QHBoxLayout *restoreLayout = new QHBoxLayout(bottomCenterWidget); restoreLayout->setAlignment(Qt::AlignRight); QPushButton *btnRegister = new QPushButton(bottomCenterWidget); btnRegister->setText(QString::fromLocal8Bit("用户注册")); btnRegister->setStyleSheet("QPushButton{border:0;background-color:transparent;color:#3F3A39;font-size:14px}" "QPushButton:hover{color:#CBD2D5}"); QLabel *labelV = new QLabel(bottomCenterWidget); labelV->setText(tr("|")); QPushButton *btnForget = new QPushButton(bottomCenterWidget); btnForget->setText(QString::fromLocal8Bit("忘记密码?")); btnForget->setStyleSheet("QPushButton{border:0;background-color:transparent;color:#3F3A39;font-size:14px}" "QPushButton:hover{color:#CBD2D5;}"); restoreLayout->addWidget(btnRegister); restoreLayout->addWidget(labelV); restoreLayout->addWidget(btnForget); bottomCenterLayout->addLayout(userLayout); bottomCenterLayout->addLayout(pwdLayout); bottomCenterLayout->addLayout(checkLayout); bottomCenterLayout->addLayout(signInLayout); bottomCenterLayout->addLayout(restoreLayout); bottomVLayout->addWidget(bottomCenterWidget); bottomWidget->setLayout(bottomVLayout); ////////////////////////////////////////////// mainLayout->setSpacing(0); mainLayout->addWidget(topWidget); mainLayout->addWidget(bottomWidget); connect(btnClose,SIGNAL(clicked(bool)),this,SLOT(close())); connect(btnMin,SIGNAL(clicked(bool)),this,SLOT(lower())); connect(btnSignIn,SIGNAL(clicked(bool)),this,SLOT(btnSignInClicked())); connect(btnRegister,SIGNAL(clicked(bool)),this,SLOT(btnRegisterClicked())); connect(btnForget,SIGNAL(clicked(bool)),this,SLOT(btnForgetClicked()));}void SignIn::btnSignInClicked(){ qDebug()<<"signIn btn clicked";}void SignIn::btnRegisterClicked(){ qDebug()<<"register btn clicked";}void SignIn::btnForgetClicked(){ qDebug()<<"forget btn clicked";}//重写鼠标按下事件void SignIn::mousePressEvent(QMouseEvent *event){ mMoveing = true; mMovePosition = event->globalPos() - pos();}void SignIn::mouseMoveEvent(QMouseEvent *event){ if (mMoveing && (event->buttons() && Qt::LeftButton)) { move(event->globalPos()-mMovePosition); mMovePosition = event->globalPos() - pos(); }}void SignIn::mouseReleaseEvent(QMouseEvent *event){ mMoveing = false;}
绘制效果
不做太多介绍
现要求整体部分需要多次调用,如下:
这时候需要我们将这部分抽出来,作为一个公共函数,参见全局变量的声明(http://blog.csdn.net/me_badman/article/details/69524655)
在别的函数里调用。
2.函数声明
.exe路径
写一个publicsign 函数 ,声明如下
#ifndef PUBLICSIGNIN_H#define PUBLICSIGNIN_H#include <QPixmap>#include <QVBoxLayout>#include <QStyle>#include <QHBoxLayout>#include <QDebug>#include <QLabel>#include <QLineEdit>#include <QPushButton>#include <qcoreapplication.h>class PublicSignIn{public: PublicSignIn(); static void InitPage(QWidget *parent,QWidget *bottomWidget){ //获取到图片的路径 QString runPath = QCoreApplication::applicationDirPath(); QString iconPath = runPath + "/configure/icons/"; QVBoxLayout *mainLayout = new QVBoxLayout(parent); mainLayout->setContentsMargins(0,0,0,0); QWidget *topWidget = new QWidget(parent); topWidget->setStyleSheet("QWidget{border:1px solid #92C8E8; margin: 0px;background-color:white}" "QPushButton{border:0px;margin:0px;}" "QLabel{border:0px;margin:0px;}"); topWidget->setMaximumHeight(60); ////////////////////////////////////////////// /// \brief topHLayout ////////////////////////////////////////////// QHBoxLayout *topHLayout = new QHBoxLayout(parent); QLabel *labelIcon = new QLabel(parent); labelIcon->setPixmap(QPixmap(iconPath + "logo_xuanzhong.png")); labelIcon->setAlignment(Qt::AlignLeft|Qt::AlignVCenter); QPushButton *btnClose = new QPushButton(parent); btnClose->setMaximumSize(20,20); btnClose->setIcon(QIcon(iconPath + "guanbi.png")); QPushButton *btnMin = new QPushButton(parent); btnMin->setMaximumSize(20,20); btnMin->setIcon(QIcon(iconPath + "suoxiao.png")); topHLayout->addWidget(labelIcon); topHLayout->addWidget(btnMin); topHLayout->addWidget(btnClose); topWidget->setLayout(topHLayout); ////////////////////////////////////////////// /// \brief bottomWidget ////////////////////////////////////////////// bottomWidget->setContentsMargins(0,0,0,0); bottomWidget->setStyleSheet("border:1px solid #92C8E8; background-color:#D6EFFB;"); mainLayout->setSpacing(0); mainLayout->addWidget(topWidget); mainLayout->addWidget(bottomWidget); parent->connect(btnClose,SIGNAL(clicked(bool)),parent,SLOT(close())); parent->connect(btnMin,SIGNAL(clicked(bool)),parent,SLOT(lower())); } static void InitBottomPage(QWidget *parent, QWidget *bottomWidget);};#endif // PUBLICSIGNIN_H
3.调用publicsignin.h
sign.cpp
#include "signin.h"#include "../bin/Debug/configure/head/publicsignin.h"SignIn::SignIn(QWidget *parent): QDialog(parent){ mMoveing = false; setWindowFlags(Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint);//无边框 隐藏Top栏 this->setFixedSize(660, 393); this->setStyleSheet("border:1px solid #92C8E8; margin: 0,0,0,0;"); QWidget *bottomWidget = new QWidget(this); PublicSignIn::InitBottomPage(this, bottomWidget); PublicSignIn::InitPage(this, bottomWidget);}SignIn::~SignIn(){}void PublicSignIn::InitBottomPage(QWidget *parent, QWidget *bottomWidget){ QVBoxLayout *bottomVLayout = new QVBoxLayout(bottomWidget); bottomVLayout->setAlignment(Qt::AlignCenter); QWidget *bottomCenterWidget = new QWidget(bottomWidget); bottomCenterWidget->setMaximumWidth(290); bottomCenterWidget->setMinimumHeight(250); bottomCenterWidget->setStyleSheet("QWidget{border:0px;}" "QLabel{color:#3F3A39;font-size:16px;font-family:楷体;}" "QLineEdit{border:1px solid #CBD2D5;height:32px;border-radius:6px;background:white;padding-left:5px;}" "QPushButton{border:0px;background:#F3A026;color:white;border-radius:6px;font-size:16px}"); QVBoxLayout *bottomCenterLayout = new QVBoxLayout(bottomCenterWidget); QHBoxLayout *userLayout = new QHBoxLayout(bottomCenterWidget); userLayout->setAlignment(Qt::AlignRight); QLabel *user = new QLabel(bottomCenterWidget); user->setText(QString::fromLocal8Bit("帐号")); user->setMaximumWidth(32); QLineEdit *userLine = new QLineEdit(bottomCenterWidget); userLine->setMaximumWidth(230); userLayout->addWidget(user); userLayout->addWidget(userLine); QHBoxLayout *pwdLayout = new QHBoxLayout(bottomCenterWidget); pwdLayout->setAlignment(Qt::AlignRight); QLabel *pwd = new QLabel(bottomCenterWidget); pwd->setText(QString::fromLocal8Bit("密码")); pwd->setMaximumWidth(32); QLineEdit *pwdLine = new QLineEdit(bottomCenterWidget); pwdLine->setMaximumWidth(230); pwdLayout->addWidget(pwd); pwdLayout->addWidget(pwdLine); QHBoxLayout *checkLayout = new QHBoxLayout(bottomCenterWidget); checkLayout->setAlignment(Qt::AlignJustify); QCheckBox *checkBox = new QCheckBox(bottomCenterWidget); QLabel *checkLabel = new QLabel(bottomCenterWidget); checkLabel->setText(QString::fromLocal8Bit("保存用户信息")); checkLabel->setMaximumHeight(20); checkLayout->addWidget(checkBox); checkLayout->addWidget(checkLabel); QHBoxLayout *signInLayout = new QHBoxLayout(bottomCenterWidget); signInLayout->setAlignment(Qt::AlignRight); QPushButton *btnSignIn = new QPushButton(bottomCenterWidget); btnSignIn->setChecked(false); btnSignIn->setMinimumSize(230, 38); btnSignIn->setText(QString::fromLocal8Bit("登陆")); signInLayout->addWidget(btnSignIn); QHBoxLayout *restoreLayout = new QHBoxLayout(bottomCenterWidget); restoreLayout->setAlignment(Qt::AlignRight); QPushButton *btnRegister = new QPushButton(bottomCenterWidget); btnRegister->setText(QString::fromLocal8Bit("用户注册")); btnRegister->setStyleSheet("QPushButton{border:0;background-color:transparent;color:#3F3A39;font-size:14px}" "QPushButton:hover{color:#CBD2D5}"); QLabel *labelV = new QLabel(bottomCenterWidget); labelV->setText("|"); QPushButton *btnForget = new QPushButton(bottomCenterWidget); btnForget->setText(QString::fromLocal8Bit("忘记密码?")); btnForget->setStyleSheet("QPushButton{border:0;background-color:transparent;color:#3F3A39;font-size:14px}" "QPushButton:hover{color:#CBD2D5;}"); restoreLayout->addWidget(btnRegister); restoreLayout->addWidget(labelV); restoreLayout->addWidget(btnForget); bottomCenterLayout->addLayout(userLayout); bottomCenterLayout->addLayout(pwdLayout); bottomCenterLayout->addLayout(checkLayout); bottomCenterLayout->addLayout(signInLayout); bottomCenterLayout->addLayout(restoreLayout); bottomVLayout->addWidget(bottomCenterWidget); bottomWidget->setLayout(bottomVLayout); ////////////////////////////////////////////// parent->connect(btnSignIn, SIGNAL(clicked(bool)), parent, SLOT(btnSignInClicked())); parent->connect(btnRegister, SIGNAL(clicked(bool)), parent, SLOT(btnRegisterClicked())); parent->connect(btnForget, SIGNAL(clicked(bool)), parent, SLOT(btnForgetClicked()));}void SignIn::btnSignInClicked(){ qDebug() << "signIn btn clicked";}void SignIn::btnRegisterClicked(){ qDebug() << "register btn clicked";}void SignIn::btnForgetClicked(){ qDebug() << "forget btn clicked";}//重写鼠标按下事件void SignIn::mousePressEvent(QMouseEvent *event){ mMoveing = true; mMovePosition = event->globalPos() - pos();}void SignIn::mouseMoveEvent(QMouseEvent *event){ if (mMoveing && (event->buttons() && Qt::LeftButton)) { move(event->globalPos() - mMovePosition); mMovePosition = event->globalPos() - pos(); }}void SignIn::mouseReleaseEvent(QMouseEvent *event){ mMoveing = false;}
4.封装
最后 将signin封装成dll 在主界面中调用即可
0 0
- Qt软件开发文档8---登陆界面的绘制及其封装
- Qt软件开发文档9---封装类调用
- Qt软件开发文档18---QSettings类的封装与调用,文件路径判断
- Qt实战开发-CSDN登陆界面布局
- Qt软件开发文档4---主窗口的实现
- Qt软件开发文档5---父指针传递的妙用
- Qt软件开发文档7---全局变量(方法)的声明
- QT中登陆界面的编写
- 软件开发阶段及其文档简述
- QT实现登陆界面
- QT登陆注册界面
- Qt 登陆界面实现
- 登陆界面软件自动更新功能的实现
- 聊天软件登陆界面的实现
- qt 将登陆界面的内容传到主界面
- 甘特图及其绘制软件
- Qt软件开发文档10---数据传递
- Qt软件开发文档11---更新数据
- 用python脚本实现自动部署环境(一)
- 二叉树以及遍历算法
- 九大排序之——希尔排序
- ZOJ2975
- mybatis中插入数据自动返回自增长id的配置
- Qt软件开发文档8---登陆界面的绘制及其封装
- IntelliJ IDEA 乱码解决方案 (项目代码、控制台等)
- poj 2318 TOYS(叉积)
- Lintcode18 Subsets II solution 题解
- 自定义TextView显示.ttf文件中的字符
- 鼠标掠过显示图片的demo
- poj 2182 Lost Cows 暴力或者用线段树 + poj2828Buy Tickets
- linux解压-压缩命令
- 文章标题