Qt入門-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();
}