信號槽、框架的設(shè)計

進入到信號槽的學(xué)習(xí)脐雪。先來一個簡例厌小。

通過了helloworld程序的學(xué)習(xí),可見本例中的框架也是與helloworld如出一轍战秋。本程序?qū)崿F(xiàn)的功能就是創(chuàng)建一個按鈕璧亚,當(dāng)按下這個按鈕時調(diào)用quit函數(shù)退出。

下面,我們重點研究第9行癣蟋。

里面有4個參數(shù)透硝,代表如果button發(fā)出了clicked信號,a就去執(zhí)行我的quit函數(shù)疯搅。

我剛接觸信號槽的時候濒生,覺得非常像js學(xué)習(xí)中的事件,當(dāng)某一事件發(fā)生時幔欧,調(diào)用特定函數(shù)罪治。本程序中的信號槽就是如此,當(dāng)接收到按鍵信息時礁蔗,調(diào)用quit函數(shù)觉义。




進入到組件布局的學(xué)習(xí)。先來一個簡歷浴井。

? ? ? 這段代碼實現(xiàn)的功能就是加入微調(diào)器和滑動桿兩個部件晒骇,然后將他們水平放置,卻改變其中一個的數(shù)據(jù)磺浙,另外一個隨著改變洪囤。

我們先來分析一下這個程序的實現(xiàn)。要實現(xiàn)這兩個部件的信息相關(guān)改變撕氧,可以運用上節(jié)所學(xué)的信息槽實現(xiàn)瘤缩。下面我們就來分析整個程序了。

11行:先引入一個頂級窗口呵曹,這是一個新知識。這個頂級窗口就像是我們這個界面的最大化窗口何暮,便于對部件進行布局奄喂。

12行:設(shè)置窗口標(biāo)題。

14-17行:依次引入微調(diào)器和滑動桿海洼,并設(shè)置取值范圍跨新。這里特別說明一下,滑動桿默認是豎直放置的坏逢,為了美觀域帐,加入Qt::Horizontal進行設(shè)置成水平放置。

19-21行:進行信號槽的鏈接是整,并設(shè)置初始值為25肖揣。

22-26行:引入水平布局,添加微調(diào)器和滑動桿進行水平布局浮入。

最后進行程序的展示龙优,與控制權(quán)利交付,整個程序即完成事秀。


下面簡單介紹一下Qt的主要布局:

QHBoxLayout- 按照水平方向從左到右布局彤断;

QVBoxLayout- 按照豎直方向從上到下布局野舶;

QGridLayout- 在一個網(wǎng)格中進行布局,類似于HTML的table宰衙。




下面是一個對話框程序的創(chuàng)建平道。

先展示一下最后結(jié)果:

對整個框架進行編寫設(shè)計學(xué)習(xí)后,更發(fā)現(xiàn)Qt與html有很多異曲同工之妙供炼。

別看代碼這么長一屋,其實思路很簡單,我絕對暫時最大的問題就是對函數(shù)的運用不熟練了劲蜻。那我就來縷縷這些代碼的邏輯吧陆淀。

我們來觀察一下對整個框架的底層設(shè)計。先是一個最大的框先嬉,然后里面再分小框轧苫,是不是很像html中一個個的table吖。所以疫蔓,本程序的思路非常簡單含懊。

先在.h文件中進行函數(shù)的聲明。

在.cpp文件中進行組件的創(chuàng)建于組件布局衅胀、再完成相應(yīng)的函數(shù)實現(xiàn)即可岔乔。

#include

#include"dialog.h"

Dialog::Dialog(QWidget*parent)

:QDialog(parent)

{

label=newQLabel(tr("Find &what:"));

lineEdit=newQLineEdit;

label->setBuddy(lineEdit);

caseCheckBox=newQCheckBox(tr("Match &case"));

backwardCheacBox=newQCheckBox(tr("Seach &backford"));

findButton=newQPushButton(tr("&find"));

findButton->setDefault((true));

findButton->setEnabled(false);

closeButton=newQPushButton(tr("Close"));

connect(lineEdit,SIGNAL(textChanged(constQString&)),this,SLOT(enableFindButton(constQString)));

connect(findButton,SIGNAL(clicked()),this,SLOT(findChild()));

connect(closeButton,SIGNAL(clicked()),this,SLOT(close()));

QHBoxLayout*topLeftLayout=newQHBoxLayout;

topLeftLayout->addWidget(label);

topLeftLayout->addWidget(lineEdit);

QVBoxLayout*leftLayout=newQVBoxLayout;

leftLayout->addLayout(topLeftLayout);

leftLayout->addWidget(caseCheckBox);

leftLayout->addWidget(backwardCheacBox);

QVBoxLayout*rightLayout=newQVBoxLayout;

rightLayout->addWidget(findButton);

rightLayout->addWidget(closeButton);

rightLayout->addStretch();

QHBoxLayout*mainLayout=newQHBoxLayout;

mainLayout->addLayout(leftLayout);

mainLayout->addLayout(rightLayout);

setLayout(mainLayout);

setWindowTitle(tr("find"));

setFixedHeight(sizeHint().height());

}

Dialog::~Dialog()

{

}

voidDialog::findChild()

{

QStringtext=lineEdit->text();

Qt::CaseSensitivitycs=caseCheckBox->isChecked()?Qt::CaseInsensitive:Qt::CaseSensitive;

if(backwardCheacBox->isChecked())

{

emitfindPrevious(text,cs);

}

else

{

emitfindNext(text,cs);

}

}

voidDialog::enableFindButton(constQString&text)

{

findButton->setEnabled(!text.isEmpty());

}

在main函數(shù)中進行類的展示。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末滚躯,一起剝皮案震驚了整個濱河市雏门,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌掸掏,老刑警劉巖茁影,帶你破解...
    沈念sama閱讀 217,185評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異丧凤,居然都是意外死亡募闲,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評論 3 393
  • 文/潘曉璐 我一進店門愿待,熙熙樓的掌柜王于貴愁眉苦臉地迎上來浩螺,“玉大人,你說我怎么就攤上這事仍侥∫觯” “怎么了?”我有些...
    開封第一講書人閱讀 163,524評論 0 353
  • 文/不壞的土叔 我叫張陵农渊,是天一觀的道長厨幻。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么况脆? 我笑而不...
    開封第一講書人閱讀 58,339評論 1 293
  • 正文 為了忘掉前任饭宾,我火速辦了婚禮,結(jié)果婚禮上格了,老公的妹妹穿的比我還像新娘看铆。我一直安慰自己,他們只是感情好盛末,可當(dāng)我...
    茶點故事閱讀 67,387評論 6 391
  • 文/花漫 我一把揭開白布弹惦。 她就那樣靜靜地躺著,像睡著了一般悄但。 火紅的嫁衣襯著肌膚如雪棠隐。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,287評論 1 301
  • 那天檐嚣,我揣著相機與錄音助泽,去河邊找鬼。 笑死嚎京,一個胖子當(dāng)著我的面吹牛嗡贺,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播鞍帝,決...
    沈念sama閱讀 40,130評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼诫睬,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了帕涌?” 一聲冷哼從身側(cè)響起摄凡,我...
    開封第一講書人閱讀 38,985評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎蚓曼,沒想到半個月后亲澡,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,420評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡辟躏,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,617評論 3 334
  • 正文 我和宋清朗相戀三年谷扣,在試婚紗的時候發(fā)現(xiàn)自己被綠了土全。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片捎琐。...
    茶點故事閱讀 39,779評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖裹匙,靈堂內(nèi)的尸體忽然破棺而出瑞凑,到底是詐尸還是另有隱情,我是刑警寧澤概页,帶...
    沈念sama閱讀 35,477評論 5 345
  • 正文 年R本政府宣布籽御,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏技掏。R本人自食惡果不足惜铃将,卻給世界環(huán)境...
    茶點故事閱讀 41,088評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望哑梳。 院中可真熱鬧劲阎,春花似錦、人聲如沸鸠真。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,716評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽吠卷。三九已至锡垄,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間祭隔,已是汗流浹背货岭。 一陣腳步聲響...
    開封第一講書人閱讀 32,857評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留序攘,地道東北人茴她。 一個月前我還...
    沈念sama閱讀 47,876評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像程奠,于是被迫代替她去往敵國和親丈牢。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,700評論 2 354

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

  • 為什么在頭文件中有的是使用前置聲明瞄沙,而有的是包含頭文件己沛? 如下代碼: 前置聲明(forward declarati...
    Joe_HUST閱讀 1,277評論 0 6
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,098評論 25 707
  • 韓元旭、余橙距境、沈開洋 Qt介紹 Qt是一個跨平臺的C++圖形用戶界面應(yīng)用程序框架申尼。它早在1991年奇趣科技公司兩位...
    開洋_shen閱讀 16,184評論 4 24
  • 2.概覽 本章將介紹如果開始使用 Qt 5 進行開發(fā)。將展示如何安裝 Qt SDK垫桂,以及如何使用 Qt Creat...
    趙者也閱讀 1,519評論 3 2
  • 早上好师幕!#幸福實修#~每天進步1%#幸福實修10班@藍國梁--銀川# 20170815 23/30 【幸福三朵玫瑰...
    藍國梁lan閱讀 134評論 1 2