Qt keyPressEvent keyReleaseEvent 分析

最近使用Qt時(shí),在增加一個(gè)按下某鍵(M),臨時(shí)顯示圖層,鍵(M)彈起時(shí)隱藏圖層的功能時(shí),碰到了一些問(wèn)題: keyPressEvent 事件不響應(yīng)

這個(gè)問(wèn)題,網(wǎng)上搜到的結(jié)果是可能是控件沒(méi)獲取焦點(diǎn),比如QPushButton一直占著焦點(diǎn),可是界面上并沒(méi)有焦點(diǎn),而且,在keyPressEvent 和keyReleaseEvent 中同時(shí)打出日志,keyReleaseEvent 里面是可以響應(yīng)的

最后找出來(lái)結(jié)果是因?yàn)樵谄溆嗟胤绞褂昧丝旖萱I,代碼如下:

test::test()
{
    QShortcut* shortcut = new QShortcut(QString("M"),this);
    QObject::connect( shortcut ,&QShortcut::activated,[=]{
        qDebug()<<"shortcut";
    });
}

void test::keyPressEvent (QKeyEvent* event)
{
    qDebug()<<"keyPressEvent ";
}
void test::keyReleaseEvent (QKeyEvent* event)
{
    qDebug()<<"keyReleaseEvent ";
}

按M的時(shí)候輸出:

shortcut--------------->按下
keyReleaseEvent 
shortcut
keyReleaseEvent 
shortcut
keyReleaseEvent 
...
shortcut
keyReleaseEvent ----->彈起

也就是說(shuō)設(shè)置快捷鍵之后,是無(wú)法觸發(fā)keyPressEvent 事件的

如果想去掉中間重復(fù)的這部分,可以這樣(網(wǎng)上搜索說(shuō)是要自己設(shè)置flag,額,我沒(méi)設(shè)置flag,好像也沒(méi)什么問(wèn)題)

test::test()
{
    QShortcut* shortcut = new QShortcut(QString("M"),this);
    shortcut ->setAutoRepeat(false);
    QObject::connect( shortcut ,&QShortcut::activated,[=]{
        qDebug()<<"shortcut";
    });
}

void test::keyReleaseEvent (QKeyEvent* event)
{
   if(event->isAutoRepeat())
      event->ignore();
   else
      qDebug()<<"keyReleaseEvent ";
}

這樣輸出變?yōu)?/p>

shortcut --------------->按下
keyReleaseEvent  ------->彈起
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 1.ios高性能編程 (1).內(nèi)層 最小的內(nèi)層平均值和峰值(2).耗電量 高效的算法和數(shù)據(jù)結(jié)構(gòu)(3).初始化時(shí)...
    歐辰_OSR閱讀 29,553評(píng)論 8 265
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒(méi)有地址/指針的概念1.2> 泛型1.3> 類(lèi)型嚴(yán)謹(jǐn) 對(duì)...
    cosWriter閱讀 11,136評(píng)論 1 32
  • ??JavaScript 與 HTML 之間的交互是通過(guò)事件實(shí)現(xiàn)的。 ??事件,就是文檔或?yàn)g覽器窗口中發(fā)生的一些特...
    霜天曉閱讀 3,528評(píng)論 1 11
  • 早上排隊(duì)等待的2小時(shí),看完了的《解憂雜貨店》。這是本在亞馬遜和豆瓣上評(píng)分挺高的書(shū),也是身邊小伙伴積極推薦的書(shū)。好讀...
    南星小姐閱讀 477評(píng)論 0 2
  • 今天中午去嬸嬸家吃飯,心里有點(diǎn)擔(dān)心,我只吃蔬菜,我會(huì)不會(huì)受到別人的影響。一起吃飯的還有嬸嬸家的其他客人,坐在...
    455be9e96fab閱讀 263評(píng)論 1 1