⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 qchateventfilter.cpp

📁 用qt4 编写的局域网聊天工具
💻 CPP
字号:
/*************************************************************************** *   Copyright (C) 2007 by Anistratov Oleg                                 * *   ower86@gmail.com                                                      * *                                                                         * *   This program is free software; you can redistribute it and/or modify  * *   it under the terms of the GNU General Public License version 2        * *   as published by the Free Software Foundation;                         * *                                                                         * *   This program is distributed in the hope that it will be useful,       * *   but WITHOUT ANY WARRANTY; without even the implied warranty of        * *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         * *   GNU General Public License for more details.                          * *                                                                         * ***************************************************************************/#include "qchateventfilter.h"#include <QEvent>#include <QKeyEvent>#include "qchatsettings.h"#include "chatwgt.h"#include "singlemsgshistoryview.h"// #include <QX11Info>//// #include <X11/X.h>// #include <X11/Xlib.h>// #include <X11/keysym.h>QChatEventFilter::QChatEventFilter(QObject *parent) : QObject(parent),  m_chatWgt(NULL){//   int i;//  int grab_keys[4] = {0x25, 0x40, 0x6d, 0x71}; /* alt and ctl keys *///  for (i = 0; i < 4; i++)//    XGrabKey(QX11Info::display(), grab_keys[i], AnyModifier, QX11Info::appRootWindow(), False, GrabModeAsync, GrabModeAsync);//   XGrabKey(QX11Info::display(), XKeysymToKeycode(QX11Info::display(), XK_Escape), 0, QX11Info::appRootWindow(), False, GrabModeAsync, GrabModeAsync);//   XGrabKey(QX11Info::display(), XKeysymToKeycode(QX11Info::display(), XK_H), AnyModifier, QX11Info::appRootWindow(), False, GrabModeAsync, GrabModeAsync);//   XGrabKeyboard(QX11Info::display(), QX11Info::appRootWindow(), False, GrabModeAsync, GrabModeAsync, CurrentTime);//   XSync(QX11Info::display(), False);}QChatEventFilter::~QChatEventFilter(){  qDebug("[~QChatEventFilter]");}bool QChatEventFilter::eventFilter(QObject* obj, QEvent* ev){  QKeySequence seq;  bool processed = false;  if(ev->type() == QEvent::KeyPress/* 6*/)  {    QKeyEvent* keyEvent = static_cast<QKeyEvent*>(ev);    seq = keyEvent->key() + keyEvent->modifiers();    processed = true;    if(QChatSettings::settings()->shortcuts("Hide2Tray").contains(seq))      emit wantHide2Tray();    else if(m_chatWgt)    {      if(QChatSettings::settings()->shortcuts("NextNewMessage").contains(seq))        m_chatWgt->smhView()->nextNewMessage();      else if(QChatSettings::settings()->shortcuts("PrevNewMessage").contains(seq))        m_chatWgt->smhView()->prevNewMessage();      else if(QChatSettings::settings()->shortcuts("NextOpenedMessage").contains(seq))        m_chatWgt->smhView()->nextOpenedMessage();      else if(QChatSettings::settings()->shortcuts("PrevOpenedMessage").contains(seq))        m_chatWgt->smhView()->prevOpenedMessage();      else if(QChatSettings::settings()->shortcuts("CloseAllNewMessages").contains(seq))        m_chatWgt->smhView()->closeAllNewMessages();      else if(QChatSettings::settings()->shortcuts("CloseAllOpenedMessages").contains(seq))        m_chatWgt->smhView()->closeAllOpenedMessages();      else        processed = false;     }  }  return processed ? true : QObject::eventFilter(obj, ev);}void QChatEventFilter::setChatWgt(ChatWgt* wgt){  m_chatWgt = wgt;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -