QMenuBar焦點問題 QTBUG18896

2021-08-25 20:28:41 字數 2145 閱讀 9102

簡單地說:選單欄本來需要alt+'m'(或其他字元)來啟用並彈出某個選單,現在直接按'm'就可以啟用了。

初次看到感覺很有意思,後來發現問題還算簡單。我們可以用下面的程式來重現這個問題:

};mainwindow::mainwindow(qwidget *parent) :

qmainwindow(parent)

int main(int argc, char *argv)

工作完畢

void qmenubarprivate::handlereparent()

//we also need event filter on top-level (for shortcuts)

qwidget *newwindow = newparent ? newparent->window() : 0;

if (oldwindow != newwindow)

oldparent = newparent;

oldwindow = newwindow;

void qmenubarprivate::updategeometries()

}// fall through

case qevent::mousebuttonpress:

case qevent::mousebuttonrelease:

case qevent::mousemove:

case qevent::focusin:

case qevent::focusout:

case qevent::activationchange:

d->altpressed = false;

break;

default:

break;

}} else if (isvisible()) }}

}return false;

bool qmenubar::event(qevent *e)

} break;

void qmenubar::keypressevent(qkeyevent *e)

if(key == qt::key_tab) //means right

key = qt::key_right;

else if(key == qt::key_backtab) //means left

key = qt::key_left;

bool key_consumed = false;

switch(key) else if(key == qt::key_enter || key == qt::key_return || key == qt::key_space)

key_consumed = true;

break; }

case qt::key_right:

case qt::key_left:

}break; }

case qt::key_escape:

d->setcurrentaction(0);

d->setkeyboardmode(false);

key_consumed = true;

break;

default:

key_consumed = false;

}if(!key_consumed &&

(!e->modifiers() ||

(e->modifiers()&(qt::metamodifier|qt::altmodifier))) && e->text().length()==1 && !d->popupstate) }}

}}

qaction *next_action = 0;

if(clashcount >= 1)

if(next_action)

}if(key_consumed)

e->accept();

else

e->ignore();

}

void qmenubarprivate::setkeyboardmode(bool b)

keyboardstate = b;

if(b) else

}q->update();

}

flex canvas焦點問題

問題解決辦法,通過click手動上canvas 獲取焦點。因為我的是乙個class extends canvas,所以再加上 implements ifocusmanagercomponent.因為ifocusmanagercomponent 有 setfocus 方法。然後mxml裡寫 width...

EditText焦點問題

1 在乙個activity中加入乙個edittext後,每次進入這個activity時輸入法都會自己主動彈出來。非常煩,找了些資料,在此記下解決的方法 方法 在edittext的父控制項中獲得焦點。這樣焦點就不會自己主動跑到edittext上了。2 希望在edittext獲得焦點時才彈出輸入法,失去...

ListView的焦點問題

1 listview中的item內有button或chckable等,這時item焦點就會被搶去,解決方案 在item檔案中,根目錄設定 android descendantfocusability blocksdescendants 在item檔案中,button按鈕中設定 android foc...