我是Qt的新手。似乎多次选择qgraphicsitem的默认设置是按ctrl按钮。 但是可以禁用此功能吗?或者重新加载这个功能?
答案 0 :(得分:3)
这是由项目的标志控制的。要禁用特定项目的选择,请执行
item->setFlag(QGraphicsItem::ItemIsSelectable, false);
如果您想完全禁用QGraphicsScene
的项目,无论项目标记如何,我建议您将QGraphicsScene::selectionChanged
连接到QGraphicsScene::clearSelection
。
如果您想禁用多项选择,我建议如下:
lastSelection
保存到QGraphicsItem QGraphicsScene::selectionChanged
selectedItems
:
lastSelection
:无所事事(=选择没有真正改变)lastSelection
:将lastSelection
设置为该项目(=首次选择的一项)lastSelection
。从选择中删除该内容(lastSelection->setSelected(false);
),将lastSelection
设置为剩余项目。 (=选择了另一个项目,将选择移动到它)您可能需要在修改插槽内的选择期间阻止信号。
答案 1 :(得分:2)
禁用多项选择的简单方法是:
QGraphicsItem
创建您自己的Dirived类。重载受保护的mousePressEvent
功能并禁用ControlModifier
:
protected:
void YourOwnQGraphicsItem::mousePressEvent(QGraphicsSceneMouseEvent *mouseEvent) Q_DECL_OVERRIDE
{
if(mouseEvent->modifiers() & Qt::ControlModifier)
{
mouseEvent->ignore();
}
else
{
QGraphicsItem::mousePressEvent(mouseEvent);
//Do what you want...
}
}