我在我的课程中在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();
我的图表停止出现,请指导我,我做错了或做对了
答案 0 :(得分:3)
显然,myplot
是QWidget的子类。因此,您可以在主窗口上定义布局(例如,使用QHBoxLayout
),并将这两个小部件添加到其中。这将导致它们被绘制在主窗口内。还要确保将主窗口作为图的QWidget父级传递。
要替换图,您可以从布局中删除旧图并添加新图。但我更愿意制作主窗口的图表成员并包含一些将使用新数据重绘的更新方法
答案 1 :(得分:0)
当您在没有父母的小部件上调用show
时,它会自动包含在窗口中。你应该做的是创建一个小部件并将图形添加到它的布局。如果您需要,请参阅QMainWindow示例和有关停靠窗口小部件的部分。
答案 2 :(得分:0)
基本上你不需要担心他们出现的窗口,只是因为他们没有其他父母而出现。
您需要做的是在构建父窗口小部件时指定它。
(这个答案是基于你的情节也是QWidgets的假设,如果你能提到它们实际上是什么类,并且可能链接到文档,这将真正帮助我们回答你。)