1. 程式人生 > >Qt入門-QPushButton

Qt入門-QPushButton

QPushButton是一個按鍵類。
class Q_GUI_EXPORT QPushButton : public QAbstractButton
{
    Q_OBJECT


建構函式:

QPushButton ( QWidget * parent = 0 )
QPushButton ( const QString & text, QWidget * parent = 0 )
QPushButton ( const QIcon & icon, const QString & text, QWidget * parent = 0 )


常用屬性和方法:

(1) QString text () const:返回按鍵上的文字;

(2) void setText ( const QString & text ):設定按鍵上的文字;

(3) bool autoDefault() const;:autoDefault屬性,它會影響按鍵的外觀;

(4) void setAutoDefault(bool);:設定autoDefault屬性;
(5) bool isDefault() const;:default屬性,僅在Dialog中此屬性有效;
(6) void setDefault(bool);:設定default屬性;

(7) void setFlat(bool);:設定FLAT屬性
(8) bool isFlat() const;:設定按鍵的外觀是否有突起。

示例:

pushBtn.h

#ifndef __PUSHBTN_H__
#define __PUSHBTN_H__

#include <QPushButton>
#include <QMessageBox>

class PushBtn : public QPushButton
{
	Q_OBJECT

public:
	PushBtn(QWidget *parent = NULL):QPushButton(parent)
	{
		connect(this, SIGNAL(clicked()), this, SLOT(OnClicked()));
	}

private slots:
	void OnClicked()
	{
		QString str;
		str = "You press " + this->text();
		QMessageBox::information(this, tr("Information"), str);
	}

};


#endif


 main.c

#include <QApplication>
#include <QDialog>
#include <QRect>
#include <QFont>
#include <QPushButton>
#include "PushBtn.h"
#include <QLineEdit>


int main(int argc, char *argv[])
{
	QApplication a(argc, argv);
	QDialog *mainWindow = new QDialog;
	

	PushBtn *btn1 = new PushBtn(mainWindow);
	btn1->setText("Button1");
	btn1->setGeometry(QRect(20, 40, 80, 40));

	PushBtn *btn2 = new PushBtn(mainWindow);
	btn2->setText("Button2");
	btn2->setGeometry(QRect(120, 40, 80, 40));

	PushBtn *btn_ok = new PushBtn(mainWindow);
	btn_ok->setText("OK");
	btn_ok->setGeometry(QRect(100, 100, 80, 40));

	mainWindow->resize(300, 150);
	mainWindow->setWindowTitle("Qt Test");
	mainWindow->show();

	


	return a.exec();
}

編譯執行,介面如下:

 ------------------分割線-----------------

QPushButton類有兩個屬性:default和autodefault屬性。

(1) default屬性表示當在對話方塊中時有“Enter”鍵按下時執行此按鍵的click()事件。它的預設值是false;

(2)autoDefault屬性設定為true時會影響按鍵的外觀(略微突出顯大),它的預設值是true。

default和autoDefault區分

當在Dialog中使用時default和autoDefault屬性時,不外乎下面幾種情況:
(1)當前所有按鍵的這兩個屬性值均為false,則按下ENTER時無響應;

(2)若當前焦點在一個按鍵,並且這個按鍵的autoDefault為true時,則不管是否有其它按鍵具有default屬性,若有ENTER按下時響應它。

(3)當前所有按鍵dufault屬性為false,並且有若干按鍵autoDefault屬性為true,當ENTER按下時響應下第一個autoDefault屬性為true的按鍵;

(4)當前所有按鍵的autoDefault屬性為flase時,有一個按鍵的dufault屬性為true,當按下ENTER時響應這個按鍵;

(5)當所有按鍵的autoDefault屬性為true時,有一個按鍵的dufault屬性為true,當ENTER按下時:若當前焦點在按鍵按鍵則響應這個按鍵;若焦點不在任何一個按鍵,則響應default屬性為true的按鍵。

測試程式碼:

pushBtn.h 程式碼同上。

main.cpp

#include <QApplication>
#include <QDialog>
#include <QRect>
#include <QFont>
#include <QPushButton>
#include "PushBtn.h"
#include <QLineEdit>


int main(int argc, char *argv[])
{
	QApplication a(argc, argv);
	QDialog *mainWindow = new QDialog;
	

	PushBtn *btn1 = new PushBtn(mainWindow);
	btn1->setText("Button1");
	btn1->setGeometry(QRect(20, 40, 80, 40));

	PushBtn *btn2 = new PushBtn(mainWindow);
	btn2->setText("Button2");
	btn2->setGeometry(QRect(120, 40, 80, 40));

	PushBtn *btn_ok = new PushBtn(mainWindow);
	btn_ok->setText("OK");
	btn_ok->setGeometry(QRect(100, 100, 80, 40));
	btn_ok->setDefault(true);

	QLineEdit *lineEdit = new QLineEdit(mainWindow);
	lineEdit->setGeometry(QRect(5, 5, 100, 20));

	mainWindow->resize(300, 150);
	mainWindow->setWindowTitle("Qt Test");
	mainWindow->show();


	return a.exec();
}