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

art*_*stv 6 qt4 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");
}
Run Code Online (Sandbox Code Playgroud)

和主窗口MainWindow w;.

我想要

  1. 从中创建MyWidget的新实例w;
  2. 在之后QCloseEvent或之后要销毁的实例w(现在它们只在之后被销毁QCloseEvent);
  3. 那些实例出现在新窗口中.

我正在创建这样的新实例MyWidget:

void MainWindow::visualize()
{
    MyWidget *widg = new MyWidget(this); // or widg = new MyWidget(0)
    widg->show();
    widg->raise();
    widg->activateWindow();
}
Run Code Online (Sandbox Code Playgroud)

当我尝试widgwa 创建时parent,widg出现在w(左上角)内部.

解决这个问题的最简单,最明确的方法是什么?

谢谢!

auk*_*ost 11

MyWidget::MyWidget(QWidget *parent)
    : QWidget(parent, Qt::Window)
{
    glWidget = new GLWidget(this, cluster);

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

    setWindowTitle("Visualization");
}
Run Code Online (Sandbox Code Playgroud)

添加Qt::Window到构造函数QWidget应该做你想要的.