如何将右键单击菜单操作连接到QGraphicsView中的某些功能



当前在我的QGraphicsScene中,有多个项目(如Text、Ellipse、Rectangle、Polyline等(,我想右键单击这些项目,然后选择"给我上色";选项一旦点击";"给我上色";选项,颜色对话框应该弹出,然后,我应该更改项目的颜色。

但在我的尝试中,右键单击,"给我上色"选项出现了,但单击它的"颜色选项"插槽,并没有被调用。

Widget::Widget(QWidget *parent)
: QGraphicsView(parent)
, ui(new Ui::Widget)
{      
.....

myCustomAction1 = new QAction(tr("Color Me"), this);
connect(myCustomAction1, SIGNAL(triggered()), this, SLOT(ColorOption()));      
.....
}   

void Widget::ColorOption()
{
QColor color = QColorDialog::getColor(currentColor);
if(color.isValid())
currentColor = color;
.....
}      

Widget.h

class Widget : public QGraphicsView
{
Q_OBJECT
public:
Widget(QWidget *parent = nullptr);
~Widget();
private:
Ui::Widget *ui;
QGraphicsScene* scene;
QGraphicsView* view;
QAction* myCustomAction1;
QColor currentColor;    
};

如果有人能帮忙,我将不胜感激。

为了使信号槽机制工作,槽函数必须在类声明中声明。也就是说,Widget.h中需要以下内容:

public slots:
void ColorOption();

最新更新