gpt4 book ai didi

c++ - 如何让 Qt 图形出现在同一个窗口中?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:00:33 24 4
gpt4 key购买 nike

我在我的程序中使用 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();

它工作正常,因为我的图表出现在新窗口中,但我想要的是图表应该出现在我的 mainwidget 窗口中。

我接下来要做的是删除我写的图表窗口的标题栏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 父级传递。

要替换地 block ,您可以从布局中删除旧地 block 并添加新地 block 。但我更愿意将绘图作为主窗口的成员,并包含一些可以使用新数据重绘的更新方法

关于c++ - 如何让 Qt 图形出现在同一个窗口中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6383364/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com