C++ 从当前窗口打开QWidget或QWindow
我知道有人问过这个,但没用 这是我的问题:我的程序实际上有两种形式:C++ 从当前窗口打开QWidget或QWindow,c++,qt,C++,Qt,我知道有人问过这个,但没用 这是我的问题:我的程序实际上有两种形式:LoginWindow和main window,程序从LoginWindow开始,然后我调用了一个类Login,其中有检查用户的所有方法和属性 下面是一些代码: //in LoginWindow class Login log; log.checkID(ui->usrnmle->text().toStdString(), ui->passwdle->text().toStdString());
LoginWindow
和main window
,程序从LoginWindow开始,然后我调用了一个类Login
,其中有检查用户的所有方法和属性
下面是一些代码:
//in LoginWindow class
Login log;
log.checkID(ui->usrnmle->text().toStdString(), ui->passwdle->text().toStdString());
//in Login class
void Login::checkID(string usr, string passwd)
{
if(usr == "Test" && passwd == "root")
{
cout << "Ok!" << endl;
MainWindow mw = MainWindow();
mw.show();
LoginWindow lw = LoginWindow();
lw.hide();
}
else
{
cout << "Connection failed " << endl;
}
}
//在LoginWindow类中
登录日志;
log.checkID(ui->usrnmle->text().toStdString(),ui->passwdle->text().toStdString());
//在登录类中
void Login::checkID(字符串usr,字符串passwd)
{
if(usr==“Test”&&passwd==“root”)
{
cout您的main窗口mw
是一个局部变量,一旦退出checkID
函数(或者甚至退出if
,但这并不重要)
您需要在堆上创建它
MainWindow *mw = new MainWindow();
mw->show();
然后,为了避免内存泄漏,您需要在不再使用时销毁它:
delete mw;
您的main窗口mw
是一个局部变量,一旦退出checkID
函数(或者甚至退出if
,但这并不重要)
您需要在堆上创建它
MainWindow *mw = new MainWindow();
mw->show();
然后,为了避免内存泄漏,您需要在不再使用时销毁它:
delete mw;
我不是QT开发人员,但
{
cout << "Ok!" << endl;
MainWindow mw = MainWindow();
mw.show();
LoginWindow lw = LoginWindow();
lw.hide();
}
{
cout我不是QT开发人员,但是
{
cout << "Ok!" << endl;
MainWindow mw = MainWindow();
mw.show();
LoginWindow lw = LoginWindow();
lw.hide();
}
{
对不起,我不是一个母语者,你是通过“你需要在堆上创建它”来做什么的?@ NeWokmne,它是一个关于变量生命周期的C++基础。;
它们是在堆栈上创建的,并一直存在到其作用域结束。使用new operator创建的变量MainWindow*mw=new MainWindow()
将一直存在,直到它被销毁并在堆上创建。谢谢。我习惯于使用C#和.NET Framework编程,这是我的第一个QT程序。正如你所说,我做到了,现在我可以显示主窗口,但登录窗口不会隐藏或关闭。无论如何thanks@Newokmyne这是相同的问题-只需将其创建为LoginWindow*lw=newloginwindow();
。但是不要忘记以后删除它们,当你不再需要这些对话框时(例如在main类的析构函数中)。不,一旦我登录,登录窗口必须关闭,并且主窗口将一直工作到用户关闭它。关于关闭登录窗口,我找到了另一种方法:checkID(字符串UR,String PasWd,Login Value*LW)<代码> > {LW-> CULL();} /Cord>……它工作,我认为这种方式可以。抱歉,我不是一个母语者,你是通过“你需要在堆上创建它”来做什么?@ NeWokmne,它是一个关于变量生存期的C++基础。当你创建它们时,代码<主窗口MW =主窗口();
它们是在堆栈上创建的,并一直存在到其作用域结束。使用new operator创建的变量MainWindow*mw=new MainWindow()
将一直存在,直到它被销毁并在堆上创建。谢谢。我习惯于使用C#和.NET Framework编程,这是我的第一个QT程序。正如你所说,我做到了,现在我可以显示主窗口,但登录窗口不会隐藏或关闭。无论如何thanks@Newokmyne这是相同的问题-只需将其创建为LoginWindow*lw=newloginwindow();
。但是不要忘记以后删除它们,当你不再需要这些对话框时(例如在main类的析构函数中)。不,一旦我登录,登录窗口必须关闭,并且主窗口将一直工作到用户关闭它。关于关闭登录窗口,我找到了另一种方法:checkID(stringusr,stringpasswd,LoginWindow*lw)
然后{lw->close();}
…它工作了,我想这样行吗?