QGLWidget不向QMainWindow发出信号

时间:2014-12-12 17:11:00

标签: c++ qt qglwidget emit

编辑:好的,我自己解决了这个问题,这是一种羞辱......在py MainWindow中没有创建main()的实例,但我使用了Widget本身作为窗口 - .-

我使用QGLWidget(Qt Version 5.3)在Qt中玩OpenGL。我的问题如下:我有一个来自PaintWidget的课程QGLWidget。在其PaintWidget::mousePressEvent(QMouseEvent*)中,我从模板缓冲区中读取了一些值,并希望通过emit将其发送到MainWindow。信号实现为

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是一个公共广告位,而且它被称为新版本。为什么这不起作用?

谢谢, 迈克尔

0 个答案:

没有答案