繁体   English   中英

QT QMainWindow来自子程序

[英]QT QMainWindow from subroutine

我在从子例程创建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来确保关闭窗口时将其删除,从而避免内存泄漏。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM