窗口搭建-QT学习

1 头文件

#pragma once
#include <QtWidgets/QWidget>
#include "ui_QTday2_.h"
#include <qlabel.h>  //标签类
#include <qlineedit>   //行编辑器类
#include <qsize>
#include <qicon.h>
#include <qpushbutton.h>
#include <qtexttospeech.h>

QT_BEGIN_NAMESPACE
namespace Ui { class QTday2_Class; };
QT_END_NAMESPACE

class QTday2_ : public QWidget
{
    Q_OBJECT

signals:
public slots:
    void my_slot(); //声明一个槽函数
    void my_cancel();
    void my_login_line();
public:
    QTday2_(QWidget *parent = nullptr);
    ~QTday2_();

private:
    Ui::QTday2_Class *ui;
    QPushButton* b1;  //定义按钮的指针
    QPushButton* b2;  //定义按钮的指针
    QLabel* L1;  //定义标签指针
    QLabel* L2;  //定义标签指针
    QLabel* L3;  //定义标签指针
    QLineEdit* E1;  //定义行编辑器类
    QLineEdit* E2;  //定义行编辑器类
};

2 源文件

#include "QTday2_.h"
#include <qdebug.h>

QTday2_::QTday2_(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::QTday2_Class())
{
    ui->setupUi(this);
    
    //设置窗口背景
    /*QPalette pal = this->palette();
    pal.setBrush(QPalette::Background, QBrush(QPixmap("D:/code/cpp QT/QTday2_/icon/icon/shanshui.jpeg")));
    setPalette(pal);*/
    //设置窗口图标
    this->setWindowIcon(QIcon("D:/code/cpp QT/QTday2_/icon/icon/logo.png"));
    //设置窗口名
    this->setWindowTitle("HQYJ");
    //设置固定窗口大小
    this->setFixedSize(500, 400);
    //
    //this->setStyleSheet("border-style:insert");
    
    //设置标签类(logo)
    L1 = new QLabel(this);
    L1->resize(QSize(500, 180));//大小
    L1->setScaledContents(true); //设置让图片自适应标签大小
    L1->setPixmap(QPixmap("D:/code/cpp QT/QTday2_/icon/icon/shanshui.jpeg"));
    //设置标签类(userName)
    L2 = new QLabel(this);
    L2->move(150, 230);
    L2->resize(QSize(20, 20));
    L2->setScaledContents(true); //设置让图片自适应标签大小
    L2->setPixmap(QPixmap("D:/code/cpp QT/QTday2_/icon/icon/userName.jpg"));
    //行编辑器
    E1 = new QLineEdit(this);
    E1->move(180, 230);
    E1->resize(QSize(150, 20));
    //E1->setEchoMode(QLineEdit::Password);//密文模式
    E1->setPlaceholderText("name");
    //设置标签类(password)
    L2 = new QLabel(this);
    L2->move(150, 260);
    L2->resize(QSize(20, 20));
    L2->setScaledContents(true); //设置让图片自适应标签大小
    L2->setPixmap(QPixmap("D:/code/cpp QT/QTday2_/icon/icon/passwd.jpg"));
    //行编辑器
    E2 = new QLineEdit(this);
    E2->move(180, 260);
    E2->resize(QSize(150, 20));
    E2->setEchoMode(QLineEdit::Password);//密文模式
    E2->setPlaceholderText("password");
    //按钮(login)
    b1 = new QPushButton(this);
    b1->move(200, 320);
    b1->setText("login");
    b1->setEnabled(false);
    b1->setIcon(QIcon("D:/code/cpp QT/QTday2_/icon/icon/login.png"));
    //按钮(cancel)
    b2 = new QPushButton(this);
    b2->move(310, 320);
    b2->setText("cancel");
    b2->setIcon(QIcon("D:/code/cpp QT/QTday2_/icon/icon/cancel.png"));
    //信号与槽连接
    connect(this->b1, SIGNAL(clicked()), this, SLOT(my_slot()));
    connect(this->b2, SIGNAL(clicked()), this, SLOT(my_cancel()));
    //connect(this->E1, SIGNAL(textChanged(QString)), this, SLOT(my_login_line()));
    //输入框状态改变(QT5版本)
    connect(this->E1, &QLineEdit::textChanged, this, &QTday2_::my_login_line);
}

QTday2_::~QTday2_()
{
    delete ui;
}
//登陆按钮
void QTday2_ ::my_slot()
{
   //qDebug() << E1->text();
   if (E1->text() == QString("admin"))//比较账户名
   {
       //qDebug() << true;
       if (E2->text() == QString("123456"))//比较密码名
       {
           qDebug() << "success";
           this->close();//关闭界面
       }
       else
       {
           qDebug() << "Password error";
       }
   }
   else
   {
       qDebug() << "Account does not exist or is incorrect";
   }
}
//取消按钮
void QTday2_::my_cancel()
{
    this->close();//关闭界面
}

//行编辑器
void QTday2_::my_login_line()
{
    if (! E1->text().isEmpty())//判断账户框是否有输入
    {
        b1->setEnabled(true); //不可用状态
    }
    else
    {
        b1->setEnabled(false);//可用状态
    }
}

3 main

#include "QTday2_.h"
#include <QtWidgets/QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QTday2_ w;
    w.show();
    return a.exec();
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值