我在堆叠的小部件中有2个自定义小部件,我希望能够从一个更改为另一个按下按钮,但是当我当前单击它时,程序才会终止。
这是第一个自定义小部件.cpp:
#include "loginpage.h"
#include "ui_loginpage.h"
#include "mainwindow.h"
#include "mainpage.h"
#include "QtGui"
LoginPage::LoginPage(QWidget *parent) :
QWidget(parent),
ui(new Ui::LoginPage)
{
ui->setupUi(this);
connect(ui->loginPushButton, SIGNAL(clicked()), this, SLOT(doLogin()));
}
LoginPage::~LoginPage()
{
delete ui;
}
QString LoginPage::getUsername()
{
QString userName = ui->usernameLineEdit->text();
return userName;
}
QString LoginPage::getPassword()
{
QString passWord = ui->passwordLineEdit->text();
return passWord;
}
void LoginPage::doLogin()
{
QString username = getUsername();
QString password = getPassword();
bool check = checkCredentials(password, username);
if(check == true)
{
MainWindow *main;
main = new MainWindow;
main->test();
}else
{
QMessageBox::information(this, tr("incorrect"), tr("incorrect"));
}
}
...
这是主窗口.cpp:
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "loginpage.h"
#include "ui_loginpage.h"
#include "mainpage.h"
#include <QtGui>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::test()
{
ui->stackedWidget->setCurrentIndex(1);
}
任何帮助表示赞赏
答案 0 :(得分:0)
我认为你的意思是它崩溃而不是终止。在你写的doLogin()
中
MainWindow *main;
main->test();
但是那时main
仍然是一个空指针。因此调用test()
毫无意义。因此,您的程序可能会崩溃。
答案 1 :(得分:0)
首先qDebug()
是Qt程序员的朋友,你可以放qDebug() << "In x function"
并查看代码所在的位置。无法看到您的UI文件或错误发生时我猜你正在将QStackedWidget的currentIndex设置为1,只有一个窗口小部件关联。仔细检查UI是否设置正确,并检查调试跟踪以查看它崩溃的位置。