1

编辑:好的,我自己解决了这个问题,这很丢脸......MainWindow在py中没有创建实例,main()但我使用小部件本身作为窗口-.-

我正在使用 QGLWidget(Qt 版本 5.3)在 Qt 中使用 OpenGL。我的问题如下:我有一个PaintWidget派生自QGLWidget. 在其中PaintWidget::mousePressEvent(QMouseEvent*),我从模板缓冲区中读取了一些值,并希望通过 an 将其发送emitMainWindow. 该信号被实现为

class PaintWidget : public QGLWidget {
    Q_OBJECT
signals:
    void objectClicked(int id);

public:
    PaintWidget(QWidget* parent = 0);
...
}

mousePressEvent方法看起来

void PaintWidget::mousePressEvent(QMouseEvent* event) {   
    GLuint id;
    glReadPixels(event->x(), m_height - event->y(), 1, 1, GL_STENCIL_INDEX, GL_UNSIGNED_INT, &id);
    if (id > 0) {
        emit objectClicked((int)id);
    }
}

现在,当我将此信号连接到一个插槽时,PaintWidget一切都按预期工作,这意味着该插槽被调用。但是当我将它连接到我的 MainWindow 的某个插槽时,它不起作用。的MainWindow构造函数是:

MainWindow::MainWindow(QWidget* parent) : QMainWindow(parent) {
    m_paintEngine = PaintEngine::instance();
    m_paintWidget = new PaintWidget();
    connect(m_paintWidget, SIGNAL(objectClicked(int)), this, SLOT(dummy(int)));
    setCentralWidget(m_paintWidget);
}

在这里,dummy是一个公共插槽,它被称为较新。为什么这不起作用?

谢谢,迈克尔

4

0 回答 0