编辑:好的,我自己解决了这个问题,这很丢脸......MainWindow
在py中没有创建实例,main()
但我使用小部件本身作为窗口-.-
我正在使用 QGLWidget(Qt 版本 5.3)在 Qt 中使用 OpenGL。我的问题如下:我有一个PaintWidget
派生自QGLWidget
. 在其中PaintWidget::mousePressEvent(QMouseEvent*)
,我从模板缓冲区中读取了一些值,并希望通过 an 将其发送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
是一个公共插槽,它被称为较新。为什么这不起作用?
谢谢,迈克尔