编辑:好的,我自己解决了这个问题,这是一种羞辱......在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
是一个公共广告位,而且它被称为新版本。为什么这不起作用?
谢谢, 迈克尔