日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

响应键盘delete键的删除功能

發(fā)布時間:2025/7/14 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 响应键盘delete键的删除功能 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
有一段時間都沒有想出自己接下來可以寫點什么,要說沒工夫?qū)懩鞘墙o自己找借口了,更多的原因,還是覺得東西學得還不是很徹底,寫出來的也顯得幼稚和膚淺,反倒會貽笑大方了。然而,真要是按這種心態(tài)下去的話,我這也就別指望寫點屬于自己的東西了,所以還是知道多少寫多少,由淺入深。希望一方面能幫到某些用得著的朋友,一方面也能鞏固自身所學。 在學習和應用Qt的工作當中,曾經(jīng)花了很大的力氣去解決一個問題——即希望在應用的軟件當中,響應鍵盤的delete鍵去刪除某一選中控件,前提是應用程序中已經(jīng)存在一個delete按鍵,即希望兩種方式都能實現(xiàn)對所選控件的刪除功能。 雖然在毫無頭緒的情況下,向師兄請教了此種情況下的解決途徑——使用類QWidget中的成員函數(shù)setFocus ()或setFocusPolicy( QWidget?*?w),將焦點設置在使用中的主窗口(active window,即活動窗口)。但是,情況并沒有自己想象中的順利,經(jīng)過反復的修改、測試、再修改、再測試。最后也沒能得到自己想要的結(jié)果。之所以這么不順,不得不說,挫折發(fā)生還是有原因的。一方面當時自己對C++中this的使用還很生疏,而恰恰當時就需要用得著;另一方面,并不是對主窗口設置了焦點就能實現(xiàn)相應鍵盤刪除的功能,在此之前還必須先做好另一項前提性的工作。以下說明自己在這個過程中的解決方法。 將focus設置在主窗口,這點并沒有錯,因為成員函數(shù)setFocus()和setFocusPolicy( QWidget?*?w)本身就是為了使Widget接受鍵盤輸入的焦點。只不過,在此值得說明的是,兩個函數(shù)的使用方式和實現(xiàn)的功能稍有差異(對此,這里不再贅述,Qt Assistant中有更為詳盡的說明)。在實現(xiàn)控件的刪除功能相應鍵盤中delete鍵,首先要做的是設置好軟件中delete按鈕的另一種鍵盤按鍵快捷方式。這里有兩種方式,一是使用函數(shù)setAccel ( const?QKeySequence?& ) ,另一種是在Qt Designer中對所選widget的accel屬性設置快捷鍵,直接在鍵盤輸入即可,如ctr+D。 做完該項工作,可以說就先完成了一個必要的前提工作。接下來,就可以使用setFocus這一成員函數(shù),把焦點設置在主窗口,這樣程序就會在主窗口當中去尋找可能的鍵盤相應事件,否則focus仍然在被選中的部件上,如某一選中的控件,這一點很重要。 那么,是不是這樣就可以了呢,答案是否定的,在這個響應事件當中,必須要注意時刻的選取。因為焦點會隨著鼠標的點擊或其他某種方式而改變,如選中某控件后,并不立即按下delete鍵刪除,繼續(xù)點擊其他選項,這時再按delete的話,并不能實現(xiàn)刪除的功能。這樣會使系統(tǒng)因為找不到事件的目標而不起作用。就如一輛車在十字路口的時候不選擇轉(zhuǎn)彎,等到?jīng)]有岔路口的時候又要求車轉(zhuǎn)彎一樣,已經(jīng)散失了原有實現(xiàn)的條件。因此,這里必須要注意加入setFocus()語句的位置。程序員可以選擇選中控件后的這一時刻,將焦點設置在主窗口,或者在鼠標左鍵點擊某一控件這一事件后,立即運行setFocus()這一語句,從而使焦點在活動窗口上,系統(tǒng)能夠在整個窗口內(nèi)尋找可能要發(fā)生的響應鍵盤輸入事件。 說到這,我一直沒有再說上面提到的this給我?guī)淼睦_是什么。因為這其實只是對C++還不是很熟悉的朋友而言的,并非整個事件的障礙。在我本人修改和調(diào)試程序的過程中,因為還不是很懂得this的使用,雖然知道需要調(diào)用setFocus()這一函數(shù),但如何調(diào)用,其實現(xiàn)方式卻很難達成,屬于“巧婦有米無柴也難炊”的狀況。后來知道了this的使用后,問題才得以迎刃而解。其實很簡單,如果是調(diào)用類,且實現(xiàn)刪除功能的語句就在活動窗口類當中,這時只需要使用this->setFocus();即可。現(xiàn)在回過頭再去看的時候,卻又是那么簡單。

轉(zhuǎn)載于:https://blog.51cto.com/sunshine1106/299677

總結(jié)

以上是生活随笔為你收集整理的响应键盘delete键的删除功能的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。