繁体   English   中英

如何使Qt图出现在同一窗口中?

[英]How do I make Qt graphs appear in the same window?

我在程序中使用Qt。 我有一个小部件窗口,并在其中放置了一个按钮和一个列表框。 然后,我创建了一个名为myplot的类,该类完成了图形绘制。 然后在我的按钮事件处理程序中,我调用了myplot的对象

 myplot * p1 = new myplot(session,session ,24, "session"); // send arrays in argument containing the data to be plot 
    p1->show();
    myplot * p2 = new myplot(payload,payload ,24, "payload"); // send arrays in argument containing the data to be plot 
    p2->show();

当我的图形出现在新窗口中时,它工作正常,但是我想要的是图形应该出现在我的主窗口中。

接下来要做的是删除我编写此Qt代码的图形窗口的标题栏:

p1->setWindowFlags(Qt::FramelessWindowHint);
p2->setWindowFlags(Qt::FramelessWindowHint);

现在

1)我应该怎么做才能在主窗口中放置并添加图形窗口? 另外,当我关闭主窗口时,我的图形窗口也应该关闭。
2)当我从列表框中选择另一个值并单击按钮时,旧图消失,新图应出现

我拖放了verticlalayout然后写

ui->verticalLayout->addChildWidget(p1);

但是有一个错误

/usr/include/qt4/QtGui/qlayout.h:191:错误:“ void QLayout :: addChildWidget(QWidget *)”受保护

然后我忍受了一下,放下了滚动区域,然后写道

myplot * p1 = new myplot(session,session ,24, "session");
p1->setWindowFlags(Qt::FramelessWindowHint);
ui->scrollArea->addScrollBarWidget(p1,0);
p1->show();

我的图表停止出现,请不要指导我做错了或正确的方法

显然, myplot是QWidget的子类。 因此,您可以仅在主窗口上定义一个布局(例如,使用QHBoxLayout ),然后将这两个小部件添加到其中。 这将导致它们被绘制在主窗口中。 还要确保将主窗口作为图的QWidget父级传递。

要替换图,可以从布局中删除旧图,然后添加新图。 但是我更愿意使您的主窗口的绘图成员,并包括一些将与新数据一起重绘的更新方法

基本上,您不必担心它们出现在窗口中,只因为它们没有其他父窗口而出现。

您需要做的是在构造父窗口小部件时指定它们。

(此答案基于您的图也是QWidgets的假设,如果您可以提及它们实际上是什么类,并且也许链接到文档,它将确实帮助我们回答您。)

当您在没有父项的窗口小部件上调用show时,它会自动包裹在窗口中。 您应该做的是创建一个小部件,然后将图形添加到其布局中。 如果需要的话,请参见QMainWindow示例,以及有关停靠小部件的部分。

暂无
暂无

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

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