繁体   English   中英

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

[英]How to connect right click menu action to some function in QGraphicsView?

目前在我的 QGraphicsScene 中,有多个项目(如文本、椭圆、矩形、多段线等)我想通过右键单击它们然后选择“Color Me”选项来更改这些项目的颜色。 单击“Color Me”选项后,应弹出颜色对话框,然后我应该更改项目的颜色。

但在我的尝试中,右键单击时,出现了 Color Me 选项,但单击它的 ColorOption 插槽没有被调用。

   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;
    .....

}      
    

小部件.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;    
};

如果有人能提供帮助,我将不胜感激。

为了使信号槽机制起作用,必须在 class 声明中声明槽 function。 即以下需要在 Widget.h 中:

public slots:
    void ColorOption();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM