如何强制QWidget显示在单独的窗口中?

我有
class MyWidget : public QWidget
{
    Q_OBJECT
public:
    explicit MyWidget (QWidget *parent);
    // ...
};

// here is ALL the code in MyWidget constructor
MyWidget::MyWidget(QWidget *parent)
    : QWidget(parent)
{
    glWidget = new GLWidget(this, cluster);

    QHBoxLayout *mainLayout = new QHBoxLayout;
    mainLayout->addWidget(glWidget);
    setLayout(mainLayout);

    setWindowTitle("Visualization");
}
和主窗口
MainWindow w;
。 我想要 从
w
创建MyWidget的新实例; 在
QCloseEvent
w
之后销毁的实例(现在它们仅在
QCloseEvent
之后销毁); 那些实例出现在新窗口中。 我正在创建
MyWidget
的新实例,如下所示:
void MainWindow::visualize()
{
    MyWidget *widg = new MyWidget(this); // or widg = new MyWidget(0)
    widg->show();
    widg->raise();
    widg->activateWindow();
}
当我尝试用
w
作为
parent
创建
widg
时,
widg
出现在
w
(左上角)内。 解决这个问题的最简单,最明确的方法是什么? 谢谢!     
已邀请:
MyWidget::MyWidget(QWidget *parent)
    : QWidget(parent, Qt::Window)
{
    glWidget = new GLWidget(this, cluster);

    QHBoxLayout *mainLayout = new QHBoxLayout;
    mainLayout->addWidget(glWidget);
    setLayout(mainLayout);

    setWindowTitle("Visualization");
}
Qt::Window
添加到
QWidget
的构造函数中应该做你想要的。     
因为它是在QWidget的构造函数引用中写入的一个小部件成为一个窗口,它的父级应该是0.但是当父级为0时,它的父级是“你”:) - 即你必须照顾它们 - 让它们保持一些可到达的地方,并在适当的时候销毁它们(关闭事件,析构函数或使用共享指针)。     

要回复问题请先登录注册