1
因此,我正在編寫一個qtwidget,它需要重寫相應的函數來輸入鍵盤和鼠標。然而,按鍵事件不會發生,直到發生mousepress事件。我一直在關注焦點,這似乎沒有幫助。我覺得我錯過了關於qt如何處理事件的事情。你可以填寫任何我。謝謝KeyPress事件等待MousePress事件qt
這是我認爲是相關的代碼位。讓我知道你是否需要更多
MeshTest::MeshTest(QWidget *parent) :
QGLWidget(parent)
{
setFocusPolicy(Qt::StrongFocus);
/* Other stuff */
}
void MeshTest::mousePressEvent(QMouseEvent *event)
{
if (event->button() == Qt::LeftButton) {
/* Some math/ray casting here */
hasHit = MeshTest::findIntersections(x,y,z,dirx,diry,dirz);
}
}
void MeshTest::mouseReleaseEvent(QMouseEvent *event){
if (event->button() == Qt::LeftButton) {
/* Some ray casting stuff here */
}
if(hasHit)
updateGL();
}
void MeshTest::keyPressEvent(QKeyEvent* event){
printf("Key Pressed\n"); //Just for debugging this particular bug
}
您是否可以發佈一些代碼?聽起來像MainWindow類(如果你有一個?)正在採取關鍵事件,並且小部件在鼠標事件之後只接受它們的原因是因爲它具有焦點。你可能想要爲小部件嘗試setFocusPolicy(Qt :: StrongPolicy),看看是否有效。 –
右鍵我將該行添加到構件的構件,但它沒有解決問題。我會在幾個代碼中獲得一些代碼 – user1415372
還在主窗口中添加了NoFocus,但仍然遇到了同樣的問題 – user1415372