我现在正在显示一个窗口,当我按下某个键时,我应该能够移动到不同的窗口。如何在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无法显示。
答案 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
您应该在免费商店中创建新窗口。