设置新窗口小部件后,MainWindow调整为登录屏幕的大小

时间:2020-04-10 01:12:12

标签: c++ qt

因此,我目前正在尝试设置登录屏幕,以便用户在进入主程序之前输入用户名和密码。我也是QT的新手,还是C ++的初学者。我已经创建了一个登录屏幕,只是一个临时的主窗口来代表我将添加的内容。在login.cpp文件的设置中,我添加了mainWindow小部件。然后,在用户单击登录并正确设置后,我将当前窗口小部件设置为mainWindow,但它的大小不会调整为我在Forms下拥有的大小,它的大小与登录表单的大小相同,这是最简单的方法解决此问题,代码在下面。

#include "login.h"
#include "ui_login.h"
#include<QMessageBox>

Login::Login(QWidget *parent) :
    QDialog(parent, Qt::FramelessWindowHint),
    login(new Ui::Login)
{
    login->setupUi(this);

    //Add the main window widget.
    login->stackedWidget->addWidget(&mainWindow);



    //Hides texts for incorrect login and EULA message
    login->incorrectLoginMessage->hide();
    login->acceptEULAMessage->hide();

    //Initializes the logo for the login window
    QPixmap pixLogo(":/content/Images/logo.png");
    int w = login->logoPic->width();
    int h = login->logoPic->height();
    login->logoPic->setPixmap(pixLogo.scaled(w,h,Qt::KeepAspectRatio));



}

Login::~Login()
{
    delete login;
}


//Checks if EULA box is checked on.
void Login::on_loginCheckBox_toggled(bool checked)
{
    if(checked == true)
    {
       isChecked = true;
    }
    else
        isChecked = false;
}

//For mouse movement position on click
void Login::mousePressEvent(QMouseEvent *event)
{
    mouseClick_X = event->x();
    mouseClick_Y = event->y();
}

//Moves window when user drags
void Login::mouseMoveEvent(QMouseEvent *event)
{
    move(event->globalX()-mouseClick_X, event->globalY()-mouseClick_Y);
}

//User preses login button
void Login::on_loginButton_clicked()
{
    //Reads what the user inputed for username and password fields.
    QString username = login->usernameEdit->text();
    QString password = login->passwordEdit->text();

    //EULA box is checked and username and password is correct, still need to find way to store real accounts to server.
    if(username == "username" && password == "password" && isChecked == true)
    {
        login->stackedWidget->setCurrentWidget(&mainWindow);

    }

    //EULA box not checked but username and password is correct.
    else if (username == "username" && password == "password" && isChecked == false)
        login->acceptEULAMessage->show();

    //Username or password is incorrect.
    else
        login->incorrectLoginMessage->show();
}

//When user clicks X button window closes
void Login::on_exitButton_clicked()
{
    this->close();
}

//When user clicks - button window minimizes
void Login::on_minimizeButton_clicked()
{
    this->showMinimized();
}


0 个答案:

没有答案