我是(非常)新的Qt,我试图做一个简单的情节(不涉及外部库& co),它也有一个框,轴和网格线,我想要能够切换。Qt QGraphicsScene添加和删除行
我有QGraphicsScene
定义为scene
在那里我可以使用scene->addLine(...)
,但我不知道我怎么可以删除根据QCheckBox
这些行。这是(简称),我在功能plotAxes()
将与connect()
使用已设置:
QGraphicsLineItem *xAxis {new QGraphicsScene::addLine(xMin, 0, xMax, 0, *dashedLine)};
if (boxToggle->isChecked())
{
scene->addItem(xAxis);
//scene->addLine(yCenter, yMin, yCenter, yMax, *dashedLine);
scene->update();
}
else
{
scene->removeItem(xAxis);
scene->update();
}
的代码仅说明了第一轴,它是否适合,我可以延伸到一切,但它不起作用。对于xAxis
我试过QGraphicsItem
,QGraphicsScene
,组合,但这不是我想要继续的方式。我不知道如何将行(轴)作为变量或指针添加,然后使用它添加/删除/从场景中。有人可以告诉我该怎么做吗?
[编辑] 对不起,忘了说我希望能够切换它们不会影响什么的已经绘制的。
谢谢你的回答。我复制粘贴代码以获得它的感觉,但是使用Qtcreator 4.0.3,Qt 5.7.0,arch x64,它说'未定义引用'Widget'的vtable。我加了'C++ 11'这一行,但是确实如此。我不得不评论最后一个'.moc'行,'没有这样的文件或目录'。这是原因吗?另外,设想一个绘图窗口,它具有XY轴,可配置的网格线数量,以及一个框,一个矩形,以适应所有的情况。这些我想添加/删除而不触及已经绘制的线条,因此它们的数量是固定的。也许这有帮助? –
@aconcernedcitizen先运行qmake,然后尝试构建。 – thuga
然后,您可以将它们中的大部分存储为成员变量,并将信号连接到插槽并隐藏/显示该插槽中的信号。所以你不必像我在例子中那样使用'QVector'。您也可以使用插槽而不是lambda表达式。只需为每个显示/隐藏内容的复选框创建一个插槽即可。 – thuga