QT登录界面设计及跳转主界面

QT登录界面设计及跳转主界面

界面样式

先贴图
在这里插入图片描述

创建流程

首先创建界面:
在这里插入图片描述
选择无按钮界面
在这里插入图片描述

界面设计

所需控件

添加容器,并设置合适大小
在这里插入图片描述
添加label标签
添加lineEdit控件作为用户名和密码输入框
添加button控件作为登录和取消按钮
全部标签如下
在这里插入图片描述

界面外观设计

添加底色

对主窗体添加底色
选中主窗体,在属性中找到styleSheet属性,对主窗体格式进行设置
这里一定要注意添加主体。对哪个组件的哪个属性进行设计。
#login 对login组件进行设计
{ } 包含组件的属性
background-color 设计对象为背景色
:背景色取值
rgb(42,216,25) 背景色值
;背景色设置结束
在这里插入图片描述
在这里插入图片描述

设置密码输入框以密文显示:

密码密码,当然不能直接显示了。
选中密码输入控件,设置echoMode属性
将其设置为Password属性。这样我们输入数据时,就会以密文形式显示了。
在这里插入图片描述
至此登录界面界面设计完成。添加背景图片或渐变色方法一样。

程序设计

取消按钮

首先我们转到槽函数clicked()
然后添加退出函数

void login::on_exitloginButton_clicked()
{
    this->close();
}

编译运行看一看
在这里插入图片描述
此时运行出来发现我们的界面竟然有最小化、最大化等按钮,这也太丑了吧
那么决定了,取消这个标题栏。
取消标题栏需要调用setWindowFlags函数
调用方式如下:

this->setWindowFlags(Qt::FramelessWindowHint);

编译再运行一下
在这里插入图片描述
此时一切如我所愿,界面初步显示无问题了。

登录按钮

接下来我们需要让用户名和密码输入均正确时,点击登录按钮时,跳转到主界面,同时关闭登录页。
同样跳转到登录click槽函数。
槽函数实现原理如下:

void login::on_loginButton_clicked()
{
    MAINWindow *s = new ;

    if(ui->userNameInput->text() == "user" && ui->passwordInput->text() == "12345")
    {
        s->show();
        this->close();
    }
    else
    {
        QMessageBox::about(NULL,"","用户名或密码错误");
        s->deleteLater();
    }
}

基本原理如此,更多丰富功能,按示例开发即可。

注:

这里我们直接在登录页创建主界面显示,这样最简单,不需要去发射信号出发登录。

Qt框架中,子窗口(子界面)获取窗口(界面)的关闭信号通常是通过信号和槽机制来实现的。信号和槽是Qt中用于对象间通信的一种机制,其中信号是当某个特定事件发生时由一个对象发出的通知,槽是响应这些信号的函数。在Qt中,当窗口关闭时,可以发出一个自定义信号,然后让子窗口连接这个信号到其槽函数,从而响应窗口的关闭动作。 以下是一个简单的例子: 1. 定义一个信号,例如`mainWindowClosed()`,在窗口类中。 2. 当窗口准备关闭时,发出这个信号。 3. 在子窗口类中,连接这个信号到一个槽函数,比如`onMainWindowClose()`。 代码示例: ```cpp // 窗口类 class MainWindow : public QMainWindow { Q_OBJECT public: MainWindow(QWidget *parent = nullptr) : QMainWindow(parent) { // ... } signals: void mainWindowClosed(); // 定义信号 public slots: void closeEvent(QCloseEvent *event) { emit mainWindowClosed(); // 在关闭事件中发出信号 QMainWindow::closeEvent(event); // 调用基类的closeEvent进行正常关闭处理 } }; // 子窗口类 class ChildWindow : public QWidget { Q_OBJECT public: ChildWindow(QWidget *parent = nullptr) : QWidget(parent) { // 连接窗口的信号到子窗口的槽函数 connect(parent, &MainWindow::mainWindowClosed, this, &ChildWindow::onMainWindowClose); } public slots: void onMainWindowClose() { // 这里处理窗口关闭时子窗口需要执行的操作 close(); // 例如关闭子窗口 } }; ``` 注意,在上述代码中,窗口的`closeEvent`方法被重写了,并在其中发出`mainWindowClosed`信号。子窗口通过`connect`函数连接窗口发出的`mainWindowClosed`信号到其`onMainWindowClose`槽函数。这样,当窗口关闭时,子窗口就会执行`onMainWindowClose`中的代码。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值