Qt入门之QPushButton

http://blog.csdn.net/xgbing/article/details/7764326


QPushButton是一个按键类。

  1. class Q_GUI_EXPORT QPushButton : public QAbstractButton  
  2. {  
  3.     Q_OBJECT  


构造函数:

  1. QPushButton ( QWidget * parent = 0 )  
  2. QPushButton ( const QString & text, QWidget * parent = 0 )  
  3. 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

  1. #ifndef __PUSHBTN_H__  
  2. #define __PUSHBTN_H__  
  3.   
  4. #include <QPushButton>  
  5. #include <QMessageBox>  
  6.   
  7. class PushBtn : public QPushButton  
  8. {  
  9.     Q_OBJECT  
  10.   
  11. public:  
  12.     PushBtn(QWidget *parent = NULL):QPushButton(parent)  
  13.     {  
  14.         connect(this, SIGNAL(clicked()), this, SLOT(OnClicked()));  
  15.     }  
  16.   
  17. private slots:  
  18.     void OnClicked()  
  19.     {  
  20.         QString str;  
  21.         str = "You press " + this->text();  
  22.         QMessageBox::information(this, tr("Information"), str);  
  23.     }  
  24.   
  25. };  
  26.   
  27.   
  28. #endif  


 main.c

  1. #include <QApplication>  
  2. #include <QDialog>  
  3. #include <QRect>  
  4. #include <QFont>  
  5. #include <QPushButton>  
  6. #include "PushBtn.h"  
  7. #include <QLineEdit>  
  8.   
  9.   
  10. int main(int argc, char *argv[])  
  11. {  
  12.     QApplication a(argc, argv);  
  13.     QDialog *mainWindow = new QDialog;  
  14.       
  15.   
  16.     PushBtn *btn1 = new PushBtn(mainWindow);  
  17.     btn1->setText("Button1");  
  18.     btn1->setGeometry(QRect(20, 40, 80, 40));  
  19.   
  20.     PushBtn *btn2 = new PushBtn(mainWindow);  
  21.     btn2->setText("Button2");  
  22.     btn2->setGeometry(QRect(120, 40, 80, 40));  
  23.   
  24.     PushBtn *btn_ok = new PushBtn(mainWindow);  
  25.     btn_ok->setText("OK");  
  26.     btn_ok->setGeometry(QRect(100, 100, 80, 40));  
  27.   
  28.     mainWindow->resize(300, 150);  
  29.     mainWindow->setWindowTitle("Qt Test");  
  30.     mainWindow->show();  
  31.   
  32.       
  33.   
  34.   
  35.     return a.exec();  
  36. }  

 

编译运行,界面如下:

 

 ------------------分割线-----------------

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

  1. #include <QApplication>  
  2. #include <QDialog>  
  3. #include <QRect>  
  4. #include <QFont>  
  5. #include <QPushButton>  
  6. #include "PushBtn.h"  
  7. #include <QLineEdit>  
  8.   
  9.   
  10. int main(int argc, char *argv[])  
  11. {  
  12.     QApplication a(argc, argv);  
  13.     QDialog *mainWindow = new QDialog;  
  14.       
  15.   
  16.     PushBtn *btn1 = new PushBtn(mainWindow);  
  17.     btn1->setText("Button1");  
  18.     btn1->setGeometry(QRect(20, 40, 80, 40));  
  19.   
  20.     PushBtn *btn2 = new PushBtn(mainWindow);  
  21.     btn2->setText("Button2");  
  22.     btn2->setGeometry(QRect(120, 40, 80, 40));  
  23.   
  24.     PushBtn *btn_ok = new PushBtn(mainWindow);  
  25.     btn_ok->setText("OK");  
  26.     btn_ok->setGeometry(QRect(100, 100, 80, 40));  
  27.     btn_ok->setDefault(true);  
  28.   
  29.     QLineEdit *lineEdit = new QLineEdit(mainWindow);  
  30.     lineEdit->setGeometry(QRect(5, 5, 100, 20));  
  31.   
  32.     mainWindow->resize(300, 150);  
  33.     mainWindow->setWindowTitle("Qt Test");  
  34.     mainWindow->show();  
  35.   
  36.   
  37.     return a.exec();  
  38. }  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值