精华内容
下载资源
问答
  • 按下esc键时退出该过程 对于CLI工具非常有用,它使用户可以按esc或Ctrl + c退出。 安装 $ npm install esc-exit 用法 import escExit from 'esc-exit' ; escExit ( ) ; 原料药 使用此选项可防止进程正常退出。 您...
  • QDialog 之屏蔽 Esc

    万次阅读 多人点赞 2015-12-19 09:43:16
    Qt中Esc键会在一些控件中默认的进行一些事件的触发,比如:QDialog,按下Esc键窗口消失。大多数情况下,我们不需要这么做,那么就需要对默认事件进行屏蔽。 简述 源码分析 事件过滤器 事件重写

    简述

    Qt中Esc键会在一些控件中默认的进行一些事件的触发,比如:QDialog,按下Esc键窗口消失。大多数情况下,我们不需要这么做,那么就需要对默认事件进行屏蔽。

    | 版权声明:一去、二三里,未经博主允许不得转载。

    源码分析

    通过查看QDialog的源码,我们很容易会发现keyPressEvent事件中,当按下Esc键时,会默认执行reject()。

    void QDialog::keyPressEvent(QKeyEvent *e)
    {
        //   Calls reject() if Escape is pressed. Simulates a button
        //   click for the default button if Enter is pressed. Move focus
        //   for the arrow keys. Ignore the rest.
    #ifdef Q_OS_MAC
        if(e->modifiers() == Qt::ControlModifier && e->key() == Qt::Key_Period) {
            reject();
        } else
    #endif
        if (!e->modifiers() || (e->modifiers() & Qt::KeypadModifier && e->key() == Qt::Key_Enter)) {
            switch (e->key()) {
            case Qt::Key_Enter:
            case Qt::Key_Return: {
                QList<QPushButton*> list = findChildren<QPushButton*>();
                for (int i=0; i<list.size(); ++i) {
                    QPushButton *pb = list.at(i);
                    if (pb->isDefault() && pb->isVisible()) {
                        if (pb->isEnabled())
                            pb->click();
                        return;
                    }
                }
            }
            break;
            case Qt::Key_Escape:
                reject();
                break;
            default:
                e->ignore();
                return;
            }
        } else {
            e->ignore();
        }
    }

    Ok,我们如果想改变Esc键的默认动作,则可以通过两种途径:

    1. 重写Esc键对应的事件

    2. 重写reject()

    事件过滤器

    对QDialog使用事件过滤器,过滤Esc键。

    installEventFilter(new EventFilter(this));

    bool EventFilter::eventFilter(QObject *obj, QEvent *event)
    {
        QDialog *pDialog = qobject_cast<QDialog *>(obj);
        if (pDialog != NULL)
        {
            switch (event->type())
            {
            case QEvent::KeyPress:
            {
                QKeyEvent *pKeyEvent = static_cast<QKeyEvent*>(event);
                if (pKeyEvent->key() == Qt::Key_Escape)
                {
                    return true;
                }
            }
            }
        }
        return QObject::eventFilter(obj, event);
    }

    事件重写

    重写QDialog的键盘事件keyPressEvent。

    void Dialog::keyPressEvent(QKeyEvent *event)
    {
        switch (event->key())
        {
        case Qt::Key_Escape:
            break;
        default:
            QDialog::keyPressEvent(event);
        }
    }

    重写reject

    m_bClosed为关闭的条件,为true时,窗口才会关闭。

    void Dialog::reject()
    {
        if (m_bClosed)
            QDialog::reject();
    }

    关于事件过滤器和事件重写其实是属于一种情况,都是基于事件判断和过滤的,而事件过滤器相对来说更易用、扩展性更好,不需要针对每个控件都去重写对应的事件。

    更多参考:

    展开全文
  • python——esc按键按下与识别

    千次阅读 2021-05-30 04:45:43
    esc按键ASCII码为27,模拟按下esc按键代码如下: import win32api import time win32api.keybd_event(27,0,0,0) time.sleep(0.1) win32api.keybd_event(27,0,2,0) 识别esc按键按下代码如下: import win32api ...

    esc按键ASCII码为27,模拟按下esc按键代码如下:

    import win32api
    import time
    
    win32api.keybd_event(27,0,0,0)
    time.sleep(0.1)
    win32api.keybd_event(27,0,2,0)
    

    识别esc按键按下代码如下:

    import win32api
    
    while True:
    	esc = win32api.GetKeyState(27)
    	if esc<0:
    		print('esc')
    
    展开全文
  • 今天小编就为大家分享一篇关于易语言设置是否启用Esc键关闭窗口的功能,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
  • ESC键不为人知的使用技巧.docx
  • ESC键的四个妙用?.docx
  • ubuntu下esc键与caps lock键交换

    千次阅读 2017-03-29 09:13:33
    为了方便vim操作,退出编辑模式时候直接使用esc键距离会太远,操作特别不方便,虽然除了esc键外,还有ctrl+c组合或者ctrl+[ 键,但也一样带来不方便。为了方便,很多都是直接把esc键和caps lock键功能交换来使用,即...

    ubuntu下esc键与caps lock键交换,之前一直都是直接使用网上说的xmodmap来修改:

     

    xmodmap -e 'clear Lock' -e 'keycode 0x42 = Escape'

     

    但xmodmap的修改虽然也能达到效果,但是使用起来极其不方便,当你切换到中文输入后,发现你设计的功能又失效了,你又得重新配置,虽然说可以写成脚本进行修改,但平时编辑代码,中英文的切换还是很频繁的,所以最后的结果就是不断需要执行脚本修改按键。

    最近确定在网上再找找办法解决,最后找到了这个方法dconf-editor,使用这个修改切换中英文都不会发生改变,修改是永久的,为了下次修改方便,特地在此记录下,如果对他人有所帮助那再好不过了。按照提示直接sudo apt install dconf-editor进行安装,接着运行dconf-editor命令启动图形界面,选择org >> gnome >> desktop >> input-sources,修改xkb-options为['caps:swapescape'],如下图:

    展开全文
  • C——esc按键按下与识别

    千次阅读 2021-05-30 04:35:57
    esc按键ASCII码为27,模拟按下esc按键代码如下: # include <stdio.h> # include <windows.h> int main() { keybd_event(27, 0, 0, 0); //按下 Sleep(100); keybd_event(27, 0, 2, 0); //松开 ...

    esc按键ASCII码为27,模拟按下esc按键代码如下:

    # include <stdio.h>
    # include <windows.h>
     
    int main()
    {
    	keybd_event(27, 0, 0, 0); //按下
    	Sleep(100);
    	keybd_event(27, 0, 2, 0); //松开 
    
     	return 0;
    }
    

    识别esc按键按下代码如下:

    # include <stdio.h>
    # include <windows.h>
     
    int main()
    {
    	int esc;
    	while(1)
    	{
    		esc = GetKeyState(27);
    		if(esc<0)
    		{
    			printf("esc\n");
    		}
    	}
    
     	return 0;
    }
    
    展开全文
  • jquery绑定Esc键事件

    千次阅读 2018-10-11 18:03:23
    操作键盘Esc键触发的事件 //Esc键 $(document).keyup(function(e){ var key = e.which || e.keyCode;; if(key == 27){ $('#head_wrap .show-msg').eq(0).addClass('active').siblings().removeClass('active'...
  • 哦,我的电调! 该应用程序是为MacBook Pro的Touch Bar型号而设计的。 当您按ESC键时,将播放指定的声音。
  • qt的Esc键

    千次阅读 2015-04-27 15:44:03
    Esc键对大家来说实在熟悉不过的了,在Qt中Esc键也会默认的进行一些事件的触发,今天对Esc键测试了一下,突然发现不像我想象的那样,在QDialog中按下Esc键会默认调用reject()方法而不是closeEvent(QCloseEvent *event...
  • mac系统按Esc键无法切换vim编辑模式

    千次阅读 2020-10-22 08:37:06
    mac系统按 Esc 无法退出vim编辑模式,按完 Esc ,输入":",还是编辑模式,结果是在文本中输入了冒号,(((φ(◎ロ◎;)φ)))晕。。。
  • XP系统中如何屏蔽Ctrl+Esc键序列.docx
  • ESC键退出

    2013-02-25 14:43:57
    #region ESC键退出 //添加ESC键退出功能 protected override bool ProcessCmdKey(ref Message msg, Keys keyData) { if (keyData == Keys.Escape) { this.C
  • Qt之Esc键

    2014-01-20 09:49:44
    Esc键对大家来说实在熟悉不过的了,在Qt中Esc键也会默认的进行一些事件的触发,今天对Esc键测试了一下,突然发现不像我想象的那样,在QDialog中按下Esc键会默认调用reject()方法而不是closeEvent(QCloseEvent *event...
  • Dialog屏蔽Esc按键

    千次阅读 2016-06-17 10:05:06
    Dialog打开后,默认按下Esc按键会关闭Dialog,有时候业务需要屏蔽此按键监听,方法如下: 1.创建监听 public class DialogEscTraverseListener implements TraverseListener { /** * @see org.eclipse.swt....
  • Linux下ESC键无法退出

    千次阅读 2019-03-01 09:30:22
    先按Esc键之后,没有什么反应,再按冒号就会出现反应,然后输入命令如(:wq)就Ok啦
  • Windows中如何屏蔽 Ctrl+Alt+Del、Alt+Tab以及Ctrl+Esc键序列 屏蔽任务管理器,Alt+Tab,Ctrl+Esc,Alt+Esc,
  • 实现长按esc退出全屏,全屏模式下拦截esc按键事件 作者:theajack 浏览器的全屏api requestFullscreen 在全屏模式下会屏蔽掉对 esc 按键的监听,全屏模式下按 esc 只能是退出全屏。 使用 navigator.keyboard api ...
  • 屏蔽键盘esc键

    2010-08-02 18:50:00
     在很多时候,我们都需要屏蔽键盘的Esc键,以此来减少用户的误操作。在Class View 列表右键需要屏蔽的类的类名,选择properties,安然选择Overrides里的PreTranslateMessage,添加此函数,接着对其进行处理。...
  • QDialog之屏蔽Esc键

    2016-05-06 16:07:26
    Qt中Esc键会在一些控件中默认的进行一些事件的触发,比如:QDialog,按下Esc键窗口消失。大多数情况下,我们不需要这么做,那么就需要对默认事件进行屏蔽。 简述 源码分析 事件过滤器 事件重写 重写reject ...
  • 很多人在使用modal时遇到了esc键按下无法关闭的问题,即使显式传入keyboard选项也不生效。 $(‘#editFormItemModal’).modal({show:true, keyboard:true}); 此问题在2.1以后版本出现,要解决这个问题也很简单,...
  • 回车键和ESC键的处理

    千次阅读 2014-12-12 17:49:04
    1. 在对话框程序中,按回车键或ESC键会退出当前对话框,原因是回车键相应了OnOK()函数,ESC键相应了OnCancel()函数。 如不想退出当前对话框则在上述两个函数里  void CDialog::OnOK() { // TODO: 在此添加专用...
  • Windows XP系统中如何屏蔽 Ctrl+Alt+Del、Alt+Tab以及Ctrl+Esc键序列
  • 屏蔽WIN、ALT+TAB、CTRL+ESC键的低级键盘钩子.zip
  • linux系统下ESC键失效

    千次阅读 2015-09-18 10:49:42
    程序员难免要跟linux系统打交道,可能某些原因,导致ESC键坏掉,那么之前编辑的内容要付之一炬了吗,岂不是很痛心,其实未必, 用 CTRL+[ 组合键,完美替代,手还不需要离开键盘,perfect!
  • 原因是 回车键和esc键 默认消息处理 分别是 onok 和oncancel  可以屏蔽onok和oncancel 或者重载pretranslatemessage 中截取回车消息和esc消息 if(WM_KEYDOWN == pMsg-&gt;message)  WM_ESCAPE 和WM_...
  • MFC对话框程序屏蔽回车与ESC键,Tab键

    千次阅读 2018-08-02 16:53:08
    这里仅介绍重载对话框的消息预处理函数...这时候运行程序,按下回车键或者ESC键,程序都会退出。 《Inside Visual C++》一书中:“当用户按下Enter键时,Windows就会自动去查找“输入焦点”落在了哪...
  • 对于一般用户而言,位于键盘左上方的ESC键并不常用,但你知道吗?其实借助ESC键还能实现不少快捷操作哦!

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 159,883
精华内容 63,953
关键字:

esc键