C++ 在QMainWindows之间切换
我有三个C++ 在QMainWindows之间切换,c++,qt,C++,Qt,我有三个QMainWindows、EntryWindow、WindowA、WindowB。EntryWindow中有两个按钮,单击buttonA显示WindowA并退出EntryWindow,单击buttonB显示WindowB并退出EntryWindow 在main.cpp中: int main(int argc, char *argv[]) { QApplication a(argc, argv); QTextCodec::setCodecForCStrings(QTextC
QMainWindow
s、EntryWindow
、WindowA
、WindowB
。EntryWindow
中有两个按钮,单击buttonA
显示WindowA
并退出EntryWindow
,单击buttonB
显示WindowB
并退出EntryWindow
在main.cpp
中:
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale());
Entry w;
w.show();
return a.exec();
}
在entryWindow.cpp
中:
void Entry::on_chooseABtn_clicked()
{
this->hide();
WindowA w;
w.show();
}
void Entry::on_chooseBBtn_clicked()
{
this->hide();
QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale());
WindowB w;
w.show();
}
但这似乎不起作用。单击按钮后,
WindowA
或WindowB
刚刚闪烁。我应该如何修改代码?将窗口创建为指针,否则它们会在超出范围时自动删除:
this->hide();
WindowA* w = new WindowsA(this);
w->show();
在堆栈上创建WindowA和WindowB类的实例:
WindowA w;
所以,当方法返回时,它们被删除,就在
w.show();
可以将这些窗口作为实例变量添加到条目
类中
编辑:一些代码示例。在.h文件中:
class Entry : public QMainWindow {
//your stuff
private:
WindowA windowA;
WindowB windowB;
}
您可以更改按钮单击处理程序,如下所示:
void Entry::on_chooseABtn_clicked()
{
this->hide();
windowA.show();
}
正确,除了C++中没有“垃圾收集”),如果对象不必是成员变量,也可以使用W-> SETAtQualt(QT::WAYDELTEONEONGORD)。当窗口关闭时,它将自动对对象调用delete.Works。但是真的没有垃圾收集机制。谢谢