我是(非常)新的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