我已经在QGraphicsScene子类中为mousePressEvent()实现了信号,但是我不知道如何在UI中使用该类。我可以在用户界面中添加QGraphicsView小部件,但是如何访问场景呢?

GraphicsScene *scene = new QGraphicsScene(this);
// Add pixmap, etc
ui->graphicsView->setScene(scene);
// Here's where I'm stuck
connect(ui->whereIsTheScene?, SIGNAL(clicked(QPoint)), this, SLOT(someSlot(QPoint));

编辑:这正在编译,但鼠标按下事件被忽略。我认为这是一个单独的问题,所以我发布了another question

最佳答案

在您的示例中:使用已经拥有的scene指针:

connect(scene, SIGNAL(clicked(QPoint)), this, SLOT(someSlot(QPoint));

或者,如果不再有指针放置,请使用this function:
connect(ui->graphicsView->scene(), SIGNAL(clicked(QPoint)), this, SLOT(someSlot(QPoint));

(未经测试,但我认为没有理由不起作用)

关于c++ - 在ui中使用QGraphicsScene子类?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3548290/

10-11 18:30