編集:さて、私は自分で問題を解決しました、これは屈辱的です... MainWindow
pyで作成されたインスタンスはありませんでしmain()
たが、ウィジェット自体をウィンドウとして使用しました-.-
QGLWidget (Qt バージョン 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
は、パブリック スロットであり、より新しい名前が付けられています。なぜこれが機能しないのですか?
ありがとう、マイケル