最近在学习QT,于是打算写个成绩管理系统,本想着登陆成功就弹出用户使用的系统窗口(StudentFrom),结果碰壁,想了很久不知道怎么回事。
这是StudentFrom.h文件内容:
#ifndef STUDENTFROM_H
#define STUDENTFROM_H
#include <QWidget>
#include"userfrom.h"
#include"student.h"
namespace Ui {
class StudentFrom;
}
class StudentFrom : public QWidget
{
Q_OBJECT
public:
explicit StudentFrom(QWidget *parent = nullptr);
explicit StudentFrom(Student * user, QWidget *parent = nullptr);
~StudentFrom();
private:
Ui::StudentFrom *ui;
Student * user=nullptr;
};
#endif // STUDENTFROM_H
定义函数createUserFrom,根据用户类型(user_type)创建对应的用户窗口(这里只能创建学生窗口)。函数定义如下:
QWidget * createUserFrom(int user_type, Person * user)
{
switch(user_type)
{
case STUDENT:
{
return new StudentFrom((Student *)(user));
break;
}
case TEACHER:
{
break;
}
default:
return nullptr;
}
return nullptr;
}
使用学生账号登陆结束后创建StudentFrom窗口,代码如下(user_from是QWidget指针):
if(true==creatUser(user_type))//建立当前用户
{
user_from=(StudentFrom *)createUserFrom(user_type, user);//创建用户窗口
if(user_from!=nullptr)
user_from->show();
this->hide();//隐藏窗口
}
这是StudentFrom的ui:
但是结果谈出来的窗口是这个样子的:
我感觉user_from是QWidget窗口而非StudentFrom窗口,StudentFrom有关的文件也没有问题,因为我直接定义一个StudentFrom对象show出来的窗口没有问题,这我就觉得很奇怪了,希望高人指点指点。