在Qt中同时显示两个窗口

在Qt中同时显示两个窗口,qt,qt4,qwidget,qmainwindow,Qt,Qt4,Qwidget,Qmainwindow,如何同时显示两个窗口?我有一个主窗口,当我按下一个按钮时,我加载一个插件,该插件创建并返回一个qwidget,并将其设置为central widgetsetCentralWidget(),但我的应用程序崩溃了。如果我没有错,这无论如何只会同时显示一个窗口 来自插件的代码: QWidget* PlPlugin::initPltter() { plotter = new QWidget(); plotter->resize(200,300); plotter->

如何同时显示两个窗口?我有一个主窗口,当我按下一个按钮时,我加载一个插件,该插件创建并返回一个qwidget,并将其设置为central widget
setCentralWidget()
,但我的应用程序崩溃了。如果我没有错,这无论如何只会同时显示一个窗口

来自插件的代码:

QWidget* PlPlugin::initPltter() {

    plotter = new QWidget();
    plotter->resize(200,300);
    plotter->setWindowTitle("mypl");
    plotter->show();

    return plotter;
}
在我的应用程序中,我正在做:

setCentralWidget(plotter->initPlotter());

尽量不要调整大小或显示它。如果它将成为主窗口的中心部件,那么它就没有必要了


此外,从您的示例中,没有任何迹象表明您正在尝试显示两个窗口。您正在做的是创建另一个小部件并将其设置为主窗口的子窗口。执行一个或另一个操作:创建小部件并直接显示它,或创建它并在另一个小部件下创建它。

main.cpp中显示的主窗口子窗口,对于第二个小部件,请执行以下操作:

QWidget* PlPlugin::initPltter() {

  plotter = new QWidget();
  plotter->resize(200,300);
  plotter->setWindowTitle("mypl");
  plotter->show();

  return plotter;
}
不要这样做

setCentralWidget(plotter->initPlotter());

它允许您在单独的“窗口”中获取MainWindow和widget

错误显示了什么?使用qt窗口小部件时,所有内容都是关于父窗口的,您应该能够通过父窗口显示第二个绘图。您想在主窗口中显示两个窗口还是两个窗口小部件?在第一种情况下,不要将绘图仪小部件设置为中心小部件。在第二种情况下,应添加带有布局的容器小部件(或QSplitter、QDockwidget等)将绘图仪作为子项添加到布局中。在这种情况下,不要在小部件上调用show()。