在過載qwidget控制項的event()
函式處理觸控螢幕操作時,發現單指觸控事件會被預設轉換成滑鼠事件,導致程式接收了qevent::touchbegin
事件後無法繼續接收後續的qevent::touchupdate
、qevent::touchend
事件。
檢視qt文件後發現qt的事件處理中有以上兩種屬性可以控制觸控螢幕與滑鼠事件的預設關係轉換。根據qt::aa_synthesizemouseforunhandledtouchevents
屬性的描述,由於應用程式不接受的所有觸控事件會自動轉換成滑鼠事件,因此可以用以下辦法去解決問題。
**:
bool mywidget::
event
(qevent *event)
return qwidget::
event
(event)
;}
後續的測試發現,在一定的情況下,依然會觸發滑鼠左鍵的一些事件,例如出現qevent::touchupdate
與qevent::mousemove
交替響應的情況。暫時未找到比較優雅的解決辦法。
注:
setattribute
( qt::wa_accepttouchevents,
true);
//設定控制項接收觸控事件
進一步**:
//測試後發現沒有效果,觸控事件依然存在預設的轉換
>
setattribute
(qt::aa_synthesizemouseforunhandledtouchevents,
false);
//在event()滑鼠事件中返回false後,滑鼠事件被轉換成了觸控事件
>
setattribute
(qt::aa_synthesizetouchforunhandledmouseevents,
true
);
stackoverflow上看到的解決方法:qt::aa_synthesizemouseforunhandledtouchevents on windows
所有**測試均在win10平台進行
Qt 格式轉換問題 記錄
用qt經常頭痛於一些格式不能通用的問題 在此記錄備用 1 20120112 qstring轉為char qstring str char a str hello word a str tolatin1 data 2 字串中輸入變數 char a 64 定義時直接分配空間 int temp 50 sp...
Qt 格式轉換問題 記錄(好多方法)
用qt經常頭痛於一些格式不能通用的問題 在此記錄備用 1 20120112 qstring轉為char qstring str char a str hello word a str tolatin1 data 2 字串中輸入變數 char a 64 定義時直接分配空間 int temp 50 sp...
Qt軟體發布問題記錄
最近在win7 qt 5.5.1 vs2012環境下軟體開發,開發好的軟體編譯release版本,用之前寫過的一篇帖子 qt程式發布 方式將所需要的動態庫拷貝到一起,nsis指令碼打包成exe安裝程式,以為一切ok。當然在自己的機子上執行是沒有問題的,可是換到別的電腦上,可能就要報錯了。1.缺少 m...