Qt之與遊戲手柄的互動(一)

2021-08-28 13:28:10 字數 1471 閱讀 7815

通過手柄與qt的通訊,傳送指令至遠端裝置,控制遠端裝置的運動。

市面上的遊戲手柄也有多種種類,主流的是藍芽手柄2.4g手柄usb手柄。2.4g手柄有的會識別出來是xbox裝置,有的識別出來是usb裝置。

本文中的方法只支援xbox手柄,使用其他手柄不會被qt的手柄模組識別到,這裡用的是**銷量第一的北通手柄,接收器接上電腦後會識別為xbox360裝置,如下圖:

其它手柄可能會識別為下圖的裝置,不會被qt手柄模組識別:

通過**,發現了兩種qt與遊戲手柄通訊的方法。

方法二:使用windows的手柄模組的api。此方法可以支援上述的所有手柄,但是我這邊測試了四個主流手柄,按鍵對映有三款都不一樣,而且有兩個是相同品牌的手柄按鍵對映也不一致,這樣想要換手柄就比較麻煩,還要改對映。

按鍵對映:就是手柄實際按鍵對應手柄驅動(手柄模組)中的按鍵的對應關係。

這裡以北通阿修羅手柄為例,標識出了按鍵對映,如下圖:

/連線裝置

qgamepad

*m_gamepad =

newqgamepad(0

, this);.

..//顯示手柄按下的按鍵的名稱

connect

(m_gamepad,

&qgamepad

::buttonachanged, this,[=

](bool pressed));

connect

(m_gamepad,

&qgamepad

::buttonbchanged, this,[=

](bool pressed));

.../

/顯示搖桿的值

connect

(m_gamepad,

&qgamepad

::buttonl2changed, this,[=

](double value));

connect

(m_gamepad,

&qgamepad

::buttonr2changed, this,[=

](double value)

);

Qt 與 HTML JS 的互動

qwebchannel qwebengineview qwebchannel.js 一般在安裝目錄下 webchannel shared qwebchannel.js 1.定義互動類 include class jsclass public qobject public slots js 呼叫 qt...

實現滑鼠與遊戲的互動(與遊戲中的物品互動)

我們這裡用到的是射線中的滑鼠螢幕射線 screenpointtoray 射線 ray ray new ray position startposition,position endposition 返回滑鼠座標 input,mouseposition 以上部分可參考開發者文件 拿到滑鼠在螢幕的射線 ...

Qt的事件和與Widget跨執行緒互動

一般gui的程式的模型總有至少兩個主要執行緒,乙個是介面的主事件迴圈所在的執行緒,另乙個是處理工作任務的執行緒,工作執行緒看不見,在後台處理事務產生資料,然後顯示在介面上。例如乙個即時通訊客戶端,主介面顯示好友列表,工作執行緒接受來自網路的訊息,收到訊息後,要通知介面,將對應的好友的頭像閃爍顯示。這...