在Qt中觸摸屏幕時有什麼方法可以接收。無論何時觸摸觸摸屏,我都需要將計數器重置爲0。如何在Qt中接收觸摸事件?
我有功能systemIdleControl
重置計數器爲零。所以當我觸摸觸摸屏時,應該調用systemIdleControl
。
在Qt中觸摸屏幕時有什麼方法可以接收。無論何時觸摸觸摸屏,我都需要將計數器重置爲0。如何在Qt中接收觸摸事件?
我有功能systemIdleControl
重置計數器爲零。所以當我觸摸觸摸屏時,應該調用systemIdleControl
。
如果您的環境和平臺設置正確,那麼您應該在QWidget中以mousePressEvent的形式接收觸摸事件。 從那裏你應該打電話給你的功能。
如果你想攔截所有觸摸事件,無論哪個部件被觸摸時,這樣做的一個方式是繼承QApplication
(或QGuiApplication
如果這是你的選擇),並覆蓋其notify
方法。喜歡的東西
class TouchResetApplication : public QApplication
{
Q_OBJECT
Q_DISABLE_COPY(TouchResetApplication)
public:
TouchResetApplication(int&, char**);
protected:
bool notify(QObject*, QEvent*) Q_DECL_OVERRIDE;
};
TouchResetApplication::TouchResetApplication(int& argc, char **argv)
: QApplication(argc, argv)
{
}
bool TouchResetApplication::notify(QObject *receiver, QEvent *event)
{
switch (event->type()) {
case QEvent::TouchBegin:
case QEvent::TouchUpdate:
case QEvent::TouchEnd:
case QEvent::TouchCancel:
systemIdleControl();
return true;
default:
return QApplication::notify(receiver, event);
}
}
如果你想觸摸事件,正常處理呼叫systemIdleControl
後,那麼你當然可以刪除return true
,任其掉落到默認值。
另一種方法是在QCoreApplication::instance
上安裝事件過濾器。在QCoreApplication::notify
的文檔中描述了您的選項的完整列表。
如何將mousePressEvent連接到插槽'systemIdleControl'? – Shyam
如果您可以發出連接到插槽的信號,或者您可以直接調用該方法,或者您可以根據其他要求使用QMetaObject :: invokeMethod。 –
你能否解釋一下我該如何接收這個觸摸事件? – Shyam