在QT中从另一个调用一个构造函数

时间:2014-05-06 07:42:09

标签: c++ qt

我现在正在显示一个窗口,当我按下某个键时,我应该能够移动到不同的窗口。如何在QT中完成? 其实我正在主流窗口,我从主类调用。然后通过那个主窗口类我想调用其他类让我们说window2。

Main.cpp的

int main(int argc, char **argv)
{
    QApplication app(argc,argv);
    mywindow window;
    window.show();
    return app.exec();
}

mywindow.cpp

mywindow::mywindow(QWidget *parent) : QWidget(parent)
{
//What should we used here to call 2nd constructor window2
       window2 obj;
       obj.show();
       this.hide();
}

window2.cpp

window2::window2(QWidget *parent)
{

}

现在我使用了hide()show()。但现在它无法正常工作,并且window2无法显示。

2 个答案:

答案 0 :(得分:1)

您应该在堆中创建window2并使用window1作为父级,这样只要父级存在并且父级本身被销毁时,window2就会存在。

 mywindow::mywindow(QWidget *parent) : QWidget(parent)
{

   window2* obj=new window2(this);
   obj->show();
   this->hide(); // don't use '.' operator for pointer
}

答案 1 :(得分:0)

第二个窗口放在堆栈上

   window2 obj;

它是正确创建和显示的,但你没有机会看到它,因为一旦你遇到创建它的范围的封闭括号 - mywindow构造函数的主体,窗口就会消失。

mywindow::mywindow(QWidget *parent) : QWidget(parent)
{
       window2 obj;      // obj window is created on stack
       obj.show();
       this.hide();
}                        // obj window dies

您应该在免费商店中创建新窗口。