Qt4 如何强制QWidget在单独的窗口中显示?
我有 主窗口<代码>主窗口w代码> 我想要Qt4 如何强制QWidget在单独的窗口中显示?,qt4,qwidget,Qt4,Qwidget,我有 主窗口主窗口w 我想要 从w创建MyWidget的新实例 要在QCloseEvent之后或使用w销毁的实例(现在它们仅在QCloseEvent之后销毁) 使实例显示在新窗口中 我正在创建MyWidget的新实例,如下所示: class MyWidget : public QWidget { Q_OBJECT public: explicit MyWidget (QWidget *parent); // ... }; // here is ALL the code
w
创建MyWidget的新实例李>
QCloseEvent
之后或使用w
销毁的实例(现在它们仅在QCloseEvent
之后销毁)李>
MyWidget
的新实例,如下所示:
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");
}
当我尝试使用w
作为父项创建widg
时,widg
出现在w
的内部(在左上角)
最简单、最清晰的解决方法是什么
谢谢 当写入窗口小部件以使其成为窗口时,其父窗口应为0。但是,当父对象为0时,父对象为“你”:(即,你必须照顾它们)将它们放在某个可到达的地方,并在适当的时间(在关闭事件、析构函数或使用共享指针时)销毁它们
添加到的构造函数应该做您想做的事情。Qt::Window作为WindowFlags怎么样?这并不要求你在没有家长的情况下跑步。@something:你说得对,我忘了标志。谢谢你的召回。
void MainWindow::visualize()
{
MyWidget *widg = new MyWidget(this); // or widg = new MyWidget(0)
widg->show();
widg->raise();
widg->activateWindow();
}
MyWidget::MyWidget(QWidget *parent)
: QWidget(parent, Qt::Window)
{
glWidget = new GLWidget(this, cluster);
QHBoxLayout *mainLayout = new QHBoxLayout;
mainLayout->addWidget(glWidget);
setLayout(mainLayout);
setWindowTitle("Visualization");
}