因此,我目前正在尝试设置登录屏幕,以便用户在进入主程序之前输入用户名和密码。我也是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();
}