【Qt】qt庫結構及示例

QT庫結構安全

  Qt圖形庫是一個組織嚴謹的C++類庫,其結構如圖所示app

 


細說Qt庫ide

  Qt類庫中包含了上百個類,結構十分複雜,上圖展現了Qt_3.2類庫的基本結構。函數

  Qt類庫中的類能夠分紅兩種類型:佈局

    • 一種是直接或者繼承自Qt類spa

    • 另外一種是獨立的,不從任何類集成設計

  獨立的類在Qt庫中通常用來完成獨立的功能,例如操做XML文件的QXmlReader類。指針

  直接從從Qt類繼承的類主要能夠分紅QObject類和QEvent類。QObject類是全部應用組件的基類QEvent類是全部QT事件響應類的基類。其餘的還有QCursor、QPen、QTab等類描述的窗口組件能夠在窗體的任意地方出現,所以直接從Qt基類繼承。對象

QWidget類是組件容器,全部能夠結合在一塊兒的組件都從該類繼承。QWidget類繼承自QObject類,由於全部的窗體組件都是應用組件的一部分。blog

  Qt類庫組織合理,在使用的時候按照類的集成關係操做。如QButton、QSlider等組件能夠被加入到QWidget對象中,而QProcess、QTimer組件是不能加入到QWidget對象中的。

 


示例效果

 


工程源碼

/*
*功能:滑動Slider控件的滑塊時,Spin控件的數值相應改變。一樣的,在修改Spin控件值的時候,Slider控件的數值也相應變化
*/
#include <qapplication.h>
#include <qpushbutton.h>
#include <qlayout.h>
#include <qslider.h>
#include <qspinbox.h>
#include <qwidget.h>
class MyWidget : public QWidget
{
public:
    MyWidget(QWidget *parent=0);    //聲明MyWidget類的構造函數
};  //注意分號
MyWidget::MyWidget(QWidget *parent):QWidget(parent)
{
    QSpinBox *agenum_sb=new QSpinBox();
    agenum_sb->setRange(0,100);
    agenum_sb->setValue(0);
    QSlider *agenum_sl=new QSlider(Qt::Horizontal);
    agenum_sl->setRange(0,100);
    agenum_sl->setValue(0);
    connect(agenum_sb,SIGNAL(valueChanged(int)),agenum_sl,SLOT(setValue(int)));
            //設置Spin控件修改數值響應函數,將Spin控件改變數值的事件與Slider控件關聯
    connect(agenum_sl,SIGNAL(valueChanged(int)),agenum_sb,SLOT(setValue(int)));
            //設置SLider控件修改數值響應函數,將Slider控件改變數值的事件與Spin控件關聯
    QHBoxLayout *layout=new QHBoxLayout;    //建立列布局的對象
    layout->addWidget(agenum_sb);
    layout->addWidget(agenum_sl);
    setLayout(layout);  //設置MyWidget使用列布局
    setWindowTitle("Enter a number By-Mystery");   //設置窗體標題
}
int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    MyWidget widget;
    widget.show();
    return app.exec();
}

 


Qt中信號與槽系統

  源碼中的connect()函數原型爲:connect(boject1, signal, object2, slot);

  其中,Object1和Object2分別表明兩個不一樣的Qt對象(繼承自QObject基類),signal表明Object的信號,slot表明Object2的槽。

信號和槽是Qt引進的一種處理機制,信號能夠被理解爲一個對象發出的事件請求,槽是處理信號的函數。

設計信號和槽的機制是爲了不回調函數的缺點回調函數是一個函數指針,若是但願一個處理函數發出一些通知事件,能夠把另外一個函數的指針傳遞給處理函數,處理函數在適當的時候使用函數指針回調通知函數。從回調函數的調用過程能夠看出,回調函數存在類型不安全和參數不安全的缺點。由於對於調用函數來講,經過函數指針沒法判斷出函數的返回類型以及參數類型。

  信號和槽能完成回調函數的全部功能,而且信號和槽機制是類型安全的,並且還能完成其餘許多複雜的功能。

  信號和槽不只是單一的對應關係,還能夠是多對多的關係。一個信號能夠被鏈接到多個槽,一個槽也能夠響應多個信號,此外,信號之間也能夠被鏈接。

 

本文出自 「成鵬致遠」 博客,請務必保留此出處http://infohacker.blog.51cto.com/6751239/1199405

相關文章
相關標籤/搜索