ctrl+enter傳送資訊的實現
在現在的即時聊天程式中,一般都設定有快捷鍵來實現一些常用的功能,類似qq可以用ctrl+enter來實現資訊的傳送。
在qt4中,所有的事件都繼承與qevent這個類,以下是用qevent來實現快捷鍵的功能。
首先所有qt類的基類qobject有乙個成員函式installeventfilter,這個函式是用來將乙個事件處理器和該qobject繫結起來,所以就有了我下面的想法。
首先在chat類定義乙個eventfilter,該函式是乙個虛函式,可以由子類進行更改。所以宣告eventfilter如下:
virtual bool eventfilter(qobject *obj, qevent *e);看了下qt文件對於這個函式的宣告的解釋,大概意思就是如果你要過濾某個事件就返回false,如果要使用某個事件就返回true。
我想在這個函式中加入對enter鍵和ctrl+enter組合鍵的判斷,具體檢視qkeyevent類的文件
qkeyevent類中有函式key和modifier,key函式返回的是發生時間的按鍵值,modifier返回的而是修飾鍵,qt所支援的修飾鍵如下:
constant value description所以可以重寫eventfilter函式來實現快捷鍵的功能,可以根據qkeyevent的key和modifire來分別是enter還是ctrl+enter被按下。qt::nomodifier 0x00000000 no modifier key is pressed.
qt::shiftmodifier 0x02000000 a shift key on the keyboard is pressed.
qt::controlmodifier 0x04000000 a ctrl key on the keyboard is pressed.
qt::altmodifier 0x08000000 an alt key on the keyboard is pressed.
qt::metamodifier 0x10000000 a meta key on the keyboard is pressed.
qt::keypadmodifier 0x20000000 a keypad button is pressed.
qt::groupswitchmodifier 0x40000000 x11 only. a mode_switch key on the keyboard is pressed.
重寫eventfilter的函式如下:
}
return false;
}
然後把這個過濾器用installeventfilter函式安裝在聊天視窗的輸入框上(qtextedit),這樣就實現快捷鍵的功能了。
三鍵組合shift + ctrl + a的實現
只要在窗體中相應keypressevent事件函式即可。
}
鍵盤按住ctrl鍵 + 滑鼠左鍵的實現
在窗體中相應mousepressevent事件函式在其中檢測ctrl鍵是否按住即可。
void window::mousepressevent(qmouseevent *e)
}
}
Qt獲取組合鍵
ctrl enter傳送資訊的實現 在現在的即時聊天程式中,一般都設定有快捷鍵來實現一些常用的功能,類似qq可以用ctrl enter來實現資訊的傳送。在qt4中,所有的事件都繼承與qevent這個類,以下是用qevent來實現快捷鍵的功能。首先所有qt類的基類qobject有乙個成員函式insta...
qt設定組合鍵
ctrl enter傳送資訊的實現 在現在的即時聊天程式中,一般都設定有快捷鍵來實現一些常用的功能,類似qq可以用ctrl enter來實現資訊的傳送。在qt4中,所有的事件都繼承與qevent這個類,以下是用qevent來實現快捷鍵的功能。首先所有qt類的基類qobject有乙個成員函式insta...
Qt中設定組合鍵
from by vic.ming 2009 07 01 16 24 08 ctrl enter傳送資訊的實現 在現在的即時聊天程式中,一般都設定有快捷鍵來實現一些常用的功能,類似qq可以用ctrl enter來實現資訊的傳送。在qt4中,所有的事件都繼承與qevent這個類,以下是用qevent來實...