簡體   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