【Qt】Qt之Tab鍵切換焦點順序【轉】
簡介
Qt的視窗部件按使用者的習慣來處理鍵盤焦點。也就是說,其出發點是使用者的焦點能定向到任何一個視窗,或者視窗中任何一個部件。
焦點獲取方式比較多,例如:滑鼠點選、Tab鍵切換、快捷鍵、滑鼠滾輪等。
習慣性的,我們經常會使用Tab鍵來控制焦點順序,比如:使用者註冊時,個人資訊輸入框焦點的切換、執行按鈕焦點的切換等。
效果
實現方式
介面說明:
static void QWidget::setTabOrder(QWidget * first, QWidget * second)
Puts the second widget after the first widget in the focus order.
也就是說,按下Tan鍵後,焦點會從第一個控制元件切換到第二個控制元件。
注意,如果第二個控制元件Tab順序改變,則應該這樣設定一個順序鏈:
//設定a、b、c、d順序
setTabOrder(a, b); //a->b
setTabOrder(b, c); //a->b->c
setTabOrder(c, d); //a->b->c->d
而不是這樣:
//錯誤
setTabOrder(c, d); // c->d
setTabOrder(a, b); // a->b 和 c->d
setTabOrder(b, c); // a->b->c, 但不是c->d
原始碼
這裡以三個按鈕如三個輸入框為例,來說明Tab的順序。
設定獲取焦點時的樣式,以便我們更清楚的觀看效果。
QPushButton *pButton1 = new QPushButton(this);
QPushButton *pButton2 = new QPushButton(this);
QPushButton *pButton3 = new QPushButton(this);
QLineEdit *pLineEdit1 = new QLineEdit(this);
QLineEdit *pLineEdit2 = new QLineEdit(this);
QLineEdit * pLineEdit3 = new QLineEdit(this);
pButton1->setText("1");
pButton2->setText("3");
pButton3->setText("5");
pLineEdit1->setText("6");
pLineEdit2->setText("4");
pLineEdit3->setText("2");
pButton1->setStyleSheet("QPushButton:focus{border:none; background: green; color: white;}");
pButton2->setStyleSheet("QPushButton:focus{border:none; background: green; color: white;}");
pButton3->setStyleSheet("QPushButton:focus{border:none; background: green; color: white;}");
pLineEdit1->setStyleSheet("QLineEdit:focus{border:2px solid green;}");
pLineEdit2->setStyleSheet("QLineEdit:focus{border:2px solid green;}");
pLineEdit3->setStyleSheet("QLineEdit:focus{border:2px solid green;}");
QWidget::setTabOrder(pButton1, pLineEdit3);
QWidget::setTabOrder(pLineEdit3, pButton2);
QWidget::setTabOrder(pButton2, pLineEdit2);
QWidget::setTabOrder(pLineEdit2, pButton3);
QWidget::setTabOrder(pButton3, pLineEdit1);
就這樣,簡簡單單的一個介面解決了我們的問題。有興趣的小夥伴可以看下focusNextChild
。
相關推薦
【Qt】Qt之Tab鍵切換焦點順序【轉】
簡介 Qt的視窗部件按使用者的習慣來處理鍵盤焦點。也就是說,其出發點是使用者的焦點能定向到任何一個視窗,或者視窗中任何一個部件。 焦點獲取方式比較多,例如:滑鼠點選、Tab鍵切換、快捷鍵、滑鼠滾輪等。 習慣性的,我們經常會使用Tab鍵來控制焦點順序,比如:使用者註冊時,個人資訊輸入框焦點的切換、執行
Qt之Tab鍵切換焦點順序
void Widget::setorder() { QWidget::setTabOrder(ui->pcComboBox, ui->switcherComboBox); QWidget::setTabOrder(ui->switcherComboBox, u
Qt 之 Tab 鍵切換焦點順序
簡介 Qt的視窗部件按使用者的習慣來處理鍵盤焦點。也就是說,其出發點是使用者的焦點能定向到任何一個視窗,或者視窗中任何一個部件。 焦點獲取方式比較多,例如:滑鼠點選、Tab鍵切換、快捷鍵、滑鼠滾輪等。 習慣性的,我們經常會使用Tab鍵來控制焦點順序,比如:
在介面上用回車鍵代替tab鍵切換焦點的辦法
現在資源視圖裡面,把對話方塊上所有需要切換焦點的視窗或者按鈕的tabstop屬性設定為TRUE。 為視窗對映PreTranslateMessage訊息處理函式 新增以下程式碼: if((pMsg-&
【Selenium2】【selenium之 定位以及切換frame(iframe)】
js xml imp int webdriver 寫法 pre avr ray -a 參考:http://blog.csdn.net/huilan_same/article/details/52200586 總有人看不明白,以防萬一,先在開頭大寫加粗說明一下: fra
【VS2017】怎麼調整Tab鍵的順序和回車直接登入
有時候使用筆記本沒有滑鼠的時候,大家都會使用Tab鍵去選擇文字框去輸入自己的使用者名稱密碼,這就產生了一個需求,如何修改Tab鍵的順序呢? 怎麼調整Tab鍵的順序 第一步:點選檢視 第二步:點選如上圖的Tab鍵順序 此時用滑鼠第一次點選的控制元件就是Tab鍵第一次按
unity 按tab鍵切換下一個inputfild
body oge false selected bool and right down unit using UnityEngine; using UnityEngine.UI; using UnityEngine.EventSystems; publi
【leetcode 66題 之 6 從尾到頭列印連結串列】
這道題是一道基本的連結串列操作題目。 使用python構建的連結串列是利用前插法構建的,即由最開始的一個節點A(next指向None),插入一個新的節點B,head就指向這個新的節點,然後這個新的節點B的next指向A。以此類推。 題目描述 輸入一個連結串列,按連結串列值從尾到頭的順序返回一
【vue大師晉級之路第二集:深入瞭解元件】第3章——自定義事件
事件名 不同於元件和 prop,事件名不存在任何自動化的大小寫轉換。而是觸發的事件名需要完全匹配監聽這個事件所用的名稱。舉個例子,如果觸發一個 camelCase 名字的事件: this.$emit('myEvent') 則監聽這個名字的 kebab-case
【vue大師晉級之路第二集:深入瞭解元件】第4章——插槽
插槽內容 Vue 實現了一套內容分發的 API,這套 API 基於當前的 Web Components 規範草案,將 < slot> 元素作為承載分發內容的出口。 它允許你像這樣合成元件: <navigation-link url="/prof
【vue大師晉級之路第二集:深入瞭解元件】第5章——動態元件 & 非同步元件
在動態元件上使用 keep-alive 我們之前曾經在一個多標籤的介面中使用 is 特性來切換不同的元件: <component v-bind:is="currentTabComponent"></component> 當在這些元件之間
vue之tab標籤切換功能(一)
專案開發中,使用vue實現tab頁籤切換功能。具體例項如下:(1)首先定義子元件,如下圖:以select01.vue為例,子元件的原始碼如下:<template> <div slot='select01'>{{msg}}</div>
不改動duilib原始碼的情況下,實現tab鍵切換登入介面EDIT控制元件功能
由於duilib是開源無專人管理的介面庫,導致網上流傳了各式各樣的版本。今天某某修復了這個bug上傳一版,明天某某修復另一個bug上傳別的版本,太過雜亂。而且之所以寫這篇文章,是因為公司用的duilib庫,存在EDIT控制元件對table鍵支援的bug。即焦點混亂。花了近一
iOS【二維碼之快速開啟相機讀取二維碼】
上一篇文章寫了怎麼生成二維碼,這兒就說說怎麼讀取吧,反正也很簡單,iOS封裝的太強大了 步驟呢就是這樣: 讀取二維碼需要匯入AVFoundation框架#import <AVFoundation/AVFoundation.h> 1:利用攝像頭識別二維碼中的
MFC 更換 按tab鍵 切換順序
當我們做好介面以後,比如登入介面,輸完帳號以後,習慣性的按tab鍵,切換到密碼輸入。但有時候你按tab鍵,預設不是跳到密碼輸入。這下需要自己更改按TAB鍵,切換控制元件的順序。 操作方法:在介面狀態按"ctrl+D",在控制元件上會出現數字,單擊上面的數字即可改變切換順
WinForm中變Enter鍵為Tab鍵實現焦點轉移的方法
+= end prev mar select 窗口 detail com ota if (e.KeyCode == Keys.Enter) { //this.SelectNextControl
enter鍵切換焦點,input獲得焦點後placeholder消失
需求:充分考慮使用者體驗,輸入使用者名稱和密碼時,不用按Tab鍵,而是按enter鍵就可以進行上下切換。並且為了其美觀性,在input獲得焦點時,placeholder會消失。 描述:通常在做input來提交使用者名稱和密碼時,會用placeholder來提示
【Qt】Qt之密碼框不可選中、複製、貼上、無右鍵選單等【轉】
簡述 在做使用者登入、修改密碼的時候,往往會用到密碼框,其中一些功能要求與普通的輸入框不同,例如:不能選中、複製、貼上、無右鍵選單等功能,當然設定密碼不可見是必須的! 下面介紹兩種方式來實現相同的效果。 簡述 效果 基礎部分 事件過濾器 介面說明 實現方式 事件重
【Qt】QDialog之遮蔽Esc鍵【轉】
簡述 Qt中Esc鍵會在一些控制元件中預設的進行一些事件的觸發,比如:QDialog,按下Esc鍵視窗消失。大多數情況下,我們不需要這麼做,那麼就需要對預設事件進行遮蔽。 簡述 原始碼分析 事件過濾器 事件重寫 原始碼分析 通過檢視QDialog的原始碼,我們很容易會發現
【Qt入門實踐】Qt之哲學家問題(linux 多線程)
avi .cpp private 1=1 endif debug 問題 tel pub 轉載請註明出處:http://blog.csdn.net/feng1790291543 linux多線程實現哲學家問題,依據哲學家吃飯、拿筷子、放下筷子...... 首先,主