Qt黑科技

不能繼承于QObject的類就一定不能使用信號槽?

首先不能繼承QObject的情況在開發(fā)中遇到得并不多艺糜,筆者在一年多的Qt項(xiàng)目開發(fā)中只遇到兩三次。而且都是因?yàn)橐M(jìn)了第三方庫導(dǎo)致編譯過程中報錯吴超。

要想解決這個問題其實(shí)不難奴烙,因?yàn)楣P者遇到的問題都是想定義一個信號庄呈,定義的槽情況沒有遇到過蜕煌,可以提出一個想法诬留,有需要的朋友試一下斜纪。

要想實(shí)現(xiàn)信號發(fā)送文兑,可以定義一個信號發(fā)射器類繼承于QObject,然后在想要發(fā)送信息的類里定義一個信號發(fā)射器:

圖1
圖2


只要在想觸發(fā)信號的地方調(diào)用信號發(fā)射器的sendMsg()函數(shù)就可以讓信號發(fā)射器將信號發(fā)出绿贞。

要想實(shí)現(xiàn)槽的話因块,可以同處理信號的方式解決,建立一個信號處理器籍铁,將要處理的內(nèi)容傳入其中即可。

另外還想啰嗦幾句吩愧,雖然這個方法是筆者為了解決某些類不能繼承于QObject想到的,但是不只限于解決這一種情形增显。

在一次項(xiàng)目中雁佳,遇到一個問題:很多個(自動添加的)控件,點(diǎn)擊某個控件就將其自帶的信息顯示在一個文本框中,我解決的方案就是將一個信號處理器使用單例模式編寫甘穿,在控件的基類中的clicked()響應(yīng)的槽函數(shù)中去調(diào)用sendMsg()實(shí)現(xiàn)的梢杭。


Qt浮動按鈕的實(shí)現(xiàn)

效果如下:

圖3

估計很多做Qt有一定經(jīng)驗(yàn)的朋友會覺得這個效果不難,但是這是一個需求奇葩的實(shí)際業(yè)務(wù)中做出的效果募判。筆者會想講下客戶的需求和整體框架的矛盾。

整個項(xiàng)目主要是由Qt搭建的届垫,圖上的地圖是JavaScript實(shí)現(xiàn)的全释。顯然要實(shí)現(xiàn)這個效果在地圖控件中去實(shí)現(xiàn)在結(jié)構(gòu)上會更加合理装处,但是這些按鈕的功能是需要打開對應(yīng)的QWidget浸船,如果是在地圖控件中實(shí)現(xiàn)會讓這個公司長期維護(hù)的地圖控件嵌入業(yè)務(wù)相關(guān)的代碼,這是不合理的李命。如果是在Qt這里實(shí)現(xiàn),因?yàn)榈貓D控件是嵌入在一個QWidget中黔州,所以在QWidget上做出不屬于gaiQWidget的浮動按鈕才是真正的挑戰(zhàn)阔籽。

圖4

將所有按鈕放入一個QWidget中,在QWidget中利用這兩行代碼就可以實(shí)現(xiàn)出一組浮動的按鈕笆制,但是位置還不對。

然后是在你這組浮動按鈕的父窗口中實(shí)現(xiàn)以下事件響應(yīng):

圖5

moveEvent是為了讓浮動按鈕跟隨父窗口移動君躺,hideEvent是跟隨父窗口隱藏开缎,為什么筆者還要實(shí)現(xiàn)showEvent、paintEvent這是因?yàn)樵趕how的過程中奕删,浮動按鈕會先于父窗口恢復(fù)俺泣,給人以很怪異的感覺,所以在showEvent中將m_bISToolWidgetShow賦值為真,在接下來的PaintEvent中讓浮動按鈕晚一點(diǎn)顯示横漏,再將m_bISToolWidgetShow賦值為假熟掂,如果不是因?yàn)閟how進(jìn)的paintEvent就不需要這個處理。

總結(jié):也許筆者這些利用黑科技解決的Qt問題你一輩子都遇不上赴肚,但是一旦遇上會讓你抓狂。我分享這些的經(jīng)驗(yàn)不僅僅是為了解決某些特定的問題指厌,更是為了給你提供一些解決的思路踊跟。

?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市商玫,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌决帖,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,729評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件扁远,死亡現(xiàn)場離奇詭異刻像,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)细睡,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,226評論 3 399
  • 文/潘曉璐 我一進(jìn)店門溜徙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人蠢壹,你說我怎么就攤上這事⊥济常” “怎么了冕广?”我有些...
    開封第一講書人閱讀 169,461評論 0 362
  • 文/不壞的土叔 我叫張陵偿洁,是天一觀的道長。 經(jīng)常有香客問我睬辐,道長何吝,這世上最難降的妖魔是什么溉委? 我笑而不...
    開封第一講書人閱讀 60,135評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮坡慌,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘洪橘。我一直安慰自己,他們只是感情好渣玲,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,130評論 6 398
  • 文/花漫 我一把揭開白布弟晚。 她就那樣靜靜地躺著,像睡著了一般卿城。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上搀捷,一...
    開封第一講書人閱讀 52,736評論 1 312
  • 那天多望,我揣著相機(jī)與錄音,去河邊找鬼怀偷。 笑死,一個胖子當(dāng)著我的面吹牛枢纠,可吹牛的內(nèi)容都是我干的黎棠。 我是一名探鬼主播镰绎,決...
    沈念sama閱讀 41,179評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼随静!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起燎猛,我...
    開封第一講書人閱讀 40,124評論 0 277
  • 序言:老撾萬榮一對情侶失蹤照皆,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后膜毁,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,657評論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡候醒,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,723評論 3 342
  • 正文 我和宋清朗相戀三年杂瘸,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片败玉。...
    茶點(diǎn)故事閱讀 40,872評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡绒怨,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出南蹂,到底是詐尸還是另有隱情,我是刑警寧澤六剥,帶...
    沈念sama閱讀 36,533評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站该默,受9級特大地震影響策彤,放射性物質(zhì)發(fā)生泄漏栓袖。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,213評論 3 336
  • 文/蒙蒙 一音榜、第九天 我趴在偏房一處隱蔽的房頂上張望捧弃。 院中可真熱鬧赠叼,春花似錦违霞、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,700評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽底燎。三九已至弹砚,卻和暖如春枢希,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背苞轿。 一陣腳步聲響...
    開封第一講書人閱讀 33,819評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留瑟俭,地道東北人。 一個月前我還...
    沈念sama閱讀 49,304評論 3 379
  • 正文 我出身青樓摆寄,卻偏偏與公主長得像坯门,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子古戴,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,876評論 2 361

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

  • 內(nèi)容抽屜菜單ListViewWebViewSwitchButton按鈕點(diǎn)贊按鈕進(jìn)度條TabLayout圖標(biāo)下拉刷新...
    皇小弟閱讀 46,793評論 22 665
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫现恼、插件黍檩、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,124評論 4 61
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,331評論 25 707
  • 畫了冰淇淋杯始锚,感覺沒畫好,總想著應(yīng)該可以畫的更好些疼蛾,于是又畫了一副,應(yīng)該會有點(diǎn)進(jìn)步吧衍慎。結(jié)果是有點(diǎn)慘不忍睹,食不下...
    水泉印閱讀 260評論 3 1
  • 時光匆匆稳捆,白駒過隙麦轰。距中考過后已經(jīng)兩年零五個月了乔夯,由于中考不得意我進(jìn)入了一所中職學(xué)校款侵,在學(xué)校里我又渾渾噩噩的度過了...
    寂寞冷風(fēng)閱讀 316評論 0 1