gpt4 book ai didi

c++ - 来自子程序的 QT QMainWindow

转载 作者:行者123 更新时间:2023-11-30 01:10:09 24 4
gpt4 key购买 nike

我在从子例程创建 QMainWindow 对象时遇到问题。我需要这个来根据用户的请求创建不同数量的窗口。

问题在于,如果我从子程序中创建它,它会被创建为局部变量并且只显示一瞬间。通常我需要返回一个指针,但我还没有设法用这个对象来做。这是代码:

#include <QApplication>
#include <QMainWindow>

QMainWindow runGUI(){
QMainWindow window;
window.show();
window.resize(340,260);
return window;
}

int main(int argc, char *argv[])
{
QApplication app(argc, argv);
/*
QMainWindow window;
window.show();
window.resize(340,260);
*/
runGUI();
return app.exec();
}

如何正确执行此操作?

最佳答案

从 runGUI() 返回您的 QMainWindow 会调用复制构造函数:Qt 对象不是为复制而设计的。你确实应该返回一个指针,并动态分配窗口:

#include <QApplication>
#include <QMainWindow>

QMainWindow* runGUI(){
QMainWindow* window = new QMainWindow;
window->setAttribute(Qt::WA_DeleteOnClose);
window->show();
window->resize(340,260);
return window;
}

int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QMainWindow* window = runGUI();
return app.exec();
}

注意使用 Qt::WA_DeleteOnClose 确保窗口在关闭时被删除,避免内存泄漏。

关于c++ - 来自子程序的 QT QMainWindow,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38805798/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com