溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

【Qt學(xué)習(xí)筆記】5.常規(guī)控件

發(fā)布時(shí)間:2020-07-24 06:23:47 來(lái)源:網(wǎng)絡(luò) 閱讀:1162 作者:shangluyi 欄目:編程語(yǔ)言

//——————————11.30——————————————

//由于緊急情況需要惡補(bǔ)C#, Qt的學(xué)習(xí)暫時(shí)中斷  (Π 。 Π)-~


——————————12.5——————————————---

回來(lái)了,繼續(xù)更新



一、復(fù)選框(CheckBox)

操作函數(shù):

bool isChecked() const;
void setChecked(bool);

信號(hào):

void stateChanged(int state);


小練習(xí):

做如下界面,并實(shí)現(xiàn)這樣的邏輯:只有當(dāng)復(fù)選框“我接受”被選中時(shí),“繼續(xù)”按鈕才能被按下

【Qt學(xué)習(xí)筆記】5.常規(guī)控件

1.設(shè)置事件響應(yīng),初始化一系列窗體(是否可按 在 QWidget類中::enabled)

2.設(shè)置、獲取CheckBox的值,判斷它是否被選中

3.處理“下一步”按鈕

Test5_1a_11_30::Test5_1a_11_30(QWidget *parent)
	: QMainWindow(parent)
{
	ui.setupUi(this);
	assert( 
		connect(ui.cbxAgree, 
			SIGNAL(clicked(bool)),
			this, 
			SLOT(OnBtnChecked()) )
		);		//這里的參數(shù) 剛開(kāi)始學(xué)習(xí)一定要注意

}

int Test5_1a_11_30::OnBtnChecked()
{
	if (ui.cbxAgree->isChecked())
	{
		ui.pushButton->setEnabled(true);
	}
	else
	{
		ui.pushButton->setEnabled(false);
	}
	return 0;
}



二、單行文本框(QLineEdit)


小練習(xí):

構(gòu)造一個(gè)用戶登陸界面,輸入用戶名、密碼,點(diǎn)確定后檢查用戶名和密碼的正確性。

【Qt學(xué)習(xí)筆記】5.常規(guī)控件

注意:密碼文本框輸入的內(nèi)容不希望顯示,因此需要設(shè)置一下 QLineEdit類中的echoMode屬性


【Qt學(xué)習(xí)筆記】5.常規(guī)控件

Test5_2a_12_6::Test5_2a_12_6(QWidget *parent)
	: QMainWindow(parent)
{
	ui.setupUi(this);

	assert(
		connect(ui.btnOk, SIGNAL(clicked()), this, SLOT(OnBtnOk()))
		);

}

int Test5_2a_12_6::OnBtnOk()
{
	if ("admin" == ui.editUser->text() && "passwd" == ui.editPswd->text())
	{
		QMessageBox::information(this, "success", "next"); //提示框
	}
	else
	{
		QMessageBox::information(this, "error", "try again"); //提示框
	}
}


做一個(gè)改進(jìn):在密碼輸入完后,按下回車,等同于按下按鈕:

Test5_2a_12_6::Test5_2a_12_6(QWidget *parent)
	: QMainWindow(parent)
{
	ui.setupUi(this);

	assert(
		connect(ui.btnOk, SIGNAL(clicked()), this, SLOT(OnBtnOk()))
		);

	assert(
		connect(ui.editPswd, SIGNAL(returnPressed()), this, SLOT(OnReturnPressed()))
		);

}

int Test5_2a_12_6::OnBtnOk()
{
	if ("admin" == ui.editUser->text() && "passwd" == ui.editPswd->text())
	{
		QMessageBox::information(this, "success", "next"); //提示框
	}
	else
	{
		QMessageBox::information(this, "error", "try again"); //提示框
	}
	
	return 0;
}

int Test5_2a_12_6::OnReturnPressed()
{
	OnBtnOk();
	return 0;
}



三、組合框(QComboBox)

組合框:

QComboBox是一個(gè)文本框和一個(gè)下拉列表的組合。

用戶從下拉列表里選擇一個(gè)值,被選擇的值顯示在文本框中。


組合框的初始化:

方式1:用Qt Designer,雙擊QComboBox控件,可視化操作

方式2:手動(dòng)初始化,在構(gòu)造函數(shù)中,用addItm()方法


設(shè)置關(guān)聯(lián)數(shù)據(jù):

在使用QComboBox時(shí),text是顯示給用戶看的,而程序內(nèi)部往往使用的是其關(guān)聯(lián)數(shù)據(jù)。

itemData()   :  取得關(guān)聯(lián)數(shù)據(jù)

setItemData() :  設(shè)置關(guān)聯(lián)數(shù)據(jù)

示例:

Test5_3a_12_6::Test5_3a_12_6(QWidget *parent)
	: QMainWindow(parent)
{
	ui.setupUi(this);
	//添加,設(shè)置關(guān)聯(lián)
	ui.comboBox->addItem("English", "en");
	ui.comboBox->addItem("Chinese", "ch");
	ui.comboBox->addItem("Japanese", "jp");
	ui.comboBox->addItem("Germany", "gr");

	assert(
		connect(ui.pushButton, SIGNAL(clicked()), this, SLOT(OnBtnOk()))
		);

}

int Test5_3a_12_6::OnBtnOk()
{
	int index = ui.comboBox->currentIndex();
	QString data = ui.comboBox->itemData(index).toString();
	QString text = ui.comboBox->itemText(index);
	QMessageBox::information(this, "data", data);
	QMessageBox::information(this, "text", text);
	return 0;
}



四、工具按鈕(QToolButton)

Qt提供了兩種按鈕控件:

QPushButton : 普通按鈕

QToolButton : 工具按鈕

有共同的基類:QAbstractButton


QToolButton有兩個(gè)屬性:

1、text文本

2、icon圖標(biāo) 


關(guān)于icon圖標(biāo):

1、圖標(biāo)最好是 *.png格式,因?yàn)楸尘巴该?nbsp;    

2、圖標(biāo)資源由 *.qrc文件定義,最終會(huì)被編入可執(zhí)行程序中


下載后的icon圖標(biāo)放到目錄下的 Resources路徑

(icon圖標(biāo)在編譯后,內(nèi)容會(huì)被寫入 *.qrc文件中,就在項(xiàng)目的根路徑下)

設(shè)置:

【Qt學(xué)習(xí)筆記】5.常規(guī)控件

(PS:就是更漂亮的按鈕  (●ˇˇ●))


使用方法:

1、將icon圖標(biāo)添加到Recources路徑

2、在QT Disigner中的資源瀏覽器中添加

【Qt學(xué)習(xí)筆記】5.常規(guī)控件 3、在QToolButton控件的icon屬性中,選擇剛剛添加的icon圖標(biāo)


4、可以在toolButtonStyle中設(shè)置圖標(biāo)和文本的顯示方式

【Qt學(xué)習(xí)筆記】5.常規(guī)控件


接著再介紹幾個(gè)常用的QToolButton的屬性


autoRaise浮動(dòng)按鈕:

可以把QToolButton設(shè)置成浮動(dòng)的樣式,我認(rèn)為更好看喔


checkable可選擇模式:

把按鈕設(shè)置成 “按下/彈起”工作模式



五、QLabel顯示文字和圖片

1、背景色、前景色

2、字體及大小

3、對(duì)齊方式

4、是否換行

5、設(shè)置邊框


此外,QLabel還能用來(lái)顯示圖片,通常顯示一個(gè)Logo也是極好的.

使用入下:

【Qt學(xué)習(xí)筆記】5.常規(guī)控件








____________________________________________

尾巴

這里介紹了幾個(gè)控件,每個(gè)控件都有大量的屬性和方法,以及對(duì)應(yīng)的事件。而我們不可能將它們完全記住,因此在開(kāi)發(fā)的過(guò)程中,查閱文檔挺重要的

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI