[英]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.