Итак, я сейчас пытаюсь настроить экран входа в систему, чтобы пользователь мог ввести имя пользователя и пароль, прежде чем они попадут в основную программу. Я также новичок в QT и все еще новичок в C ++. Я уже сделал экран входа в систему и просто временное главное окно, чтобы представить, что я добавлю туда. При настройке файла логина. cpp я добавляю виджет mainWindow. Затем, после того, как пользователь нажал на кнопку «Войти» и получил ее правильно, я устанавливаю текущий виджет на mainWindow, но он не изменяет размер до того, что у меня есть в Forms, он просто остается того же размера, что и форма входа, что является самым простым способом * 1004. * об исправлении, код ниже.
#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();
}