自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Qt應用 鍵盤聚焦

移動開發(fā)
本文介紹的是Qt應用 鍵盤聚焦,關于聚焦,系統(tǒng)必須要決斷擊鍵動作直接聚焦在哪個應用程序,應用程序的哪個窗口,窗口的哪個部件。先來看內容。

Qt應用 鍵盤聚焦是本文介紹的內容,關于鍵盤的更多內容,請參考本文末尾。Qt的部件按照GUI設計中的慣例來處理鍵盤聚焦。

基本的問題就是,用戶的擊鍵動作能夠直接聚焦在屏幕上的任意窗口,或者是內嵌在特定窗口的任意部件上。當用戶按下一個鍵時,他們期望焦點在他們期望的位置,軟件必須要滿足這個需求。系統(tǒng)必須要決斷擊鍵動作直接聚焦在哪個應用程序,應用程序的哪個窗口,窗口的哪個部件。

聚焦動作

鍵盤焦點聚集在一個特定的部件上的慣例有以下幾種:

1、用戶按下Tab(或者Shift+Tab)

2、用戶點擊一個部件

3、用戶按下一個鍵盤快捷鍵

4、用戶使用鼠標滾輪

5、用戶把焦點移動到一個窗口,這時應用程序必須決定窗口的哪個部件應該獲得焦點

以上這些動作機制是不同的,這些動作之中,會有不同的部件接收到焦點。下面將依次介紹:

Tab 或者 Shift+Tab

按下Tab鍵是使用鍵盤移動焦點最常用的方式。(有時在數(shù)據(jù)錄入型應用程序中Enter的作用和Tab鍵一樣;在Qt中通過一個event filter很容易實現(xiàn))

在常用的所有窗口系統(tǒng)中按下Tab鍵,每個窗口都有一個包含了其上所有部件的循環(huán)列表,焦點會切換到這個列表的下一個部件。Tab鍵會按照循環(huán)列表的一個方向切換焦點,而Shift+Tab按照相反的方向切換。按下Tab鍵后在部件之間切換的順序被稱為tab順序。

你可以使用QWidget::setTabOrder()來定制tab順序。(如果你不這樣做,Tab通常會以部件創(chuàng)建的順序切換焦點)Qt Designer提供一種可視化的方式來改變tab順序。

因為按下Tab鍵非常常用,大部分可以獲得焦點的部件都支持tab聚焦。有些罕見的部件是個例外,他們通過一些鍵盤加速器或者錯誤(keyboard accelerator or error)來切換焦點。

舉個例子,在一個數(shù)據(jù)錄入型對話框中,有一個只有在百分之一的情況下才必要的區(qū)域。在這樣的對話框中,Tab鍵就會跳過這個區(qū)域,對話框可以使用以下機制:

1、如果程序可以決定這個區(qū)域是否需要,它可以在用戶完成錄入按下OK鍵,或者當用戶完成其它區(qū)域的錄入之后按下Enter,把焦點切換到那里?;蛘撸瑢⒋藚^(qū)域包含在tab順序中但將它禁用。當用戶已經(jīng)設置完其它的區(qū)域,該區(qū)域變得比較適合時,再啟用它。

2、此區(qū)域上的標簽可以包括一個鍵盤快捷鍵,以使焦點可以切換到此區(qū)域上。

關于Tab支持的另外一種例外是必須支持tab插入的文本錄入型部件;幾乎所有的文本編輯器都屬于這一類。Qt把Ctrl+Tab當做Tab,Ctrl+Shift+Tab當做Shift+Tab,這些部件可以重新實現(xiàn)QWidget::event()函數(shù),在調用QWidget::event()完成所有其它按鍵的正常處理之前處理Tab.然而,因為一些系統(tǒng)將Ctrl+Tab用作其它的用途,用戶因此可能不知道Ctrl+Tab,總的來說并沒有一種完全的解決辦法。

用戶點擊部件

這可能是在使用鼠標或者其它點式設備的電腦上比Tab鍵更常見的聚焦方式。

通過點擊來切換焦點比Tab更強大一些。當把焦點移動到某一個部件時,對于編輯型部件而言,文本的光標(部件內部焦點)也會移動到了鼠標點擊的位置點上。

由于這種方式如此的常見,用戶很習慣這種方式,自然而然的應該是大部分部件都支持這種方式。然而,也存在一些需要的理由要規(guī)避這種方式:比如用戶可能不想從當前焦點所在的部件上移除焦點。

舉例來說,再一個文本編輯器中,當用戶點擊‘B’(粗體)功能按鈕,鍵盤焦點應該怎么應對?是應該保留在它所在的位置,一般來說這個時候肯定是在編輯文本當中,還是將焦點移動到‘B’按鈕處?

我們建議支持文本錄入的部件同時支持點擊聚焦,為了避免上述情況鼠標點擊在不同的情況下會承擔不同的作用。(對于按鈕來說,我們推薦添加鍵盤快捷鍵,QAbstractButton及其子類可以很容易實現(xiàn))

在Qt中,只有QWidget::setFocusPolicy()函數(shù)會影響點擊聚焦。

用戶按下鍵盤快捷鍵

通過鍵盤快捷鍵來切換焦點不是很常見。在打開模態(tài)對話框時會隱式發(fā)生,但是如果使用諸如QLabel::setBuddy(),QGroupBox,QTabBar提供的焦點加速器時會明確的發(fā)生。

我們建議用戶想要跳轉的所有部件都支持快捷鍵聚焦。舉例來說,一個標簽對話框可以為每個頁面設置鍵盤快捷鍵,因此用戶可以按下比如Alt+P快捷鍵來跳轉到打印頁面。但是按鍵總共就只有那么多,所以為命令提供鍵盤快捷鍵顯得很重要。Alt+P也可以用作粘貼、播放、打印的快捷鍵,比如在Standard Accelerator Keys列表中就這樣用。

用戶滾動鼠標滾輪

在微軟Windows操作系統(tǒng)中,鼠標滾輪往往是由具有鍵盤焦點的部件來處理。在Mac OS X和X11中,則是由獲得其它鼠標事件的部件來處理。

Qt處理這種平臺差異性的方法是當使用滾輪時讓部件切換鍵盤焦點。應用程序遵循每個部件上的正確的聚焦策略,應用程序就可以以慣用的方式在Windows,Mac OS X,和X11平臺上正確的運行。

用戶把焦點移動到窗口

在這種情況下,應用程序必須決定窗口內的哪個部件獲得焦點。

這可能很簡單,如果焦點之前已經(jīng)在該窗口上,之前獲得焦點的***一個部件會重新獲得焦點。Qt可以自動實現(xiàn)。

如果焦點之前從沒有聚焦到該窗口上,而且你知道焦點應該開始于哪里,在調用QWidget::show()之前調用某部件上的QWidget::setFocus(),該部件就會獲得焦點。如果不這樣做,Qt會挑選一個合適的部件來使它獲得焦點。

小結:關于Qt應用 鍵盤聚焦的內容到這里就介紹完了,希望本文能對你有所幫助。更多相關 內容請參考編輯推薦。

責任編輯:zhaolei 來源: 互聯(lián)網(wǎng)
相關推薦

2011-06-29 18:09:57

Qt 矩陣鍵盤

2011-06-22 10:27:32

QT 鍵盤 焦點

2012-10-23 17:16:16

企業(yè)云寶德云計算

2009-10-14 19:22:30

多路服務器曙光

2011-06-29 15:14:22

Qt Embedded 鍵盤

2011-06-29 15:36:21

Qt Embedded 鍵盤

2024-06-21 13:37:09

JavaScript開發(fā)

2024-07-30 14:40:35

avaScript聚焦應用

2021-07-30 09:53:22

JavaScriptfocusblur

2011-09-09 17:59:26

QT Widget

2011-03-22 10:36:27

漢柏行業(yè)定制化

2011-06-09 09:12:12

QT symbian

2011-09-07 16:28:46

QT WidgetQWidget

2011-06-15 18:20:20

Qt 移植 Android

2011-09-07 16:36:00

Qt Widget

2011-06-21 14:53:25

QT 界面美化 QStyle

2010-07-29 10:40:12

2020-02-26 08:30:14

RSAC2020應用安全DevSecOps

2011-09-09 17:24:39

Qt Webkit模塊

2015-05-27 13:29:06

PWorld
點贊
收藏

51CTO技術棧公眾號