2017-12-12 39 views
0

키를 누릅니다터치 패드 + QToolButton = supperios 내가 <code>QToolButton</code>이

btn_ = new QToolButton(this); 
btn_->setFocusPolicy(Qt::NoFocus); 
btn_->setAutoRepeat(false); 
connect(btn_, SIGNAL(pressed()), this, SLOT(btnPressed())); 

내 슬롯은 터치 패드에 appreciable 인쇄기에 두 번했다.

내 프로그램의 디버그 중 첫 번째 호출이 QAbstractButton::mousePressEvent 이고 두 번째 호출이 QAbstractButton::mouseMoveEvent 인 것을 볼 수 있습니다.

잠시 터치 패드를 누른 다음 터치 패드에서 손을 뗀 경우 QAbstractButton::mousePressEvent에서 btnPressed이라는 한 번만 전화를받습니다.

이 문제를 해결하는 방법에 대한 아이디어가 있으십니까? 그래서 저는 노트북의 터치 패드 에서 손을 떼지 않았습니다. 하나의 btnPressed에서 으로 시간을 측정하는 타이머에 대해서는 생각하지만 이것을 막기 위해 시간 초과 값을 알지 못합니다. 당연히 내 노트북의 시간 제한을 선택할 수는 있지만, 다른 노트북에서는 이 너무 작거나 큰 것을 선택하면 사용자는 책임이없는 인터페이스에 대해 불평을 시작합니다. 는 사용자가 하나의 버튼을 눌러에서 기대하는 행동을 반영로/X11/qt4.8/AMD64

답변

1

리눅스는, clicked() 대신 pressed()의 사용하십시오/클릭합니다. 일반적으로 버튼을 누르는 순간 슬롯이 즉시 필요하다고 확신하지 못하는 경우 (와 함께 제공 될 수있는 특수한 경우 처리) clicked()을 사용해야합니다.