程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> Qt Project源碼結構分析

Qt Project源碼結構分析

編輯:關於C++

在網上閱讀了QT入門教程系列文章,感謝豆豆博客的版主,把這麼好的教程和大家分享,本文是對入門教程的筆記,以期拋磚引玉,聽到大家的好見解。 希望大家更好更快的學習QT,達到自己的目標,實現自己的理想。

本文分析QT項目的結構,如頭文件中代碼的結構與功效,主源代碼文件的結構與功效。也就是說頭文件中應該放些什麼,源代碼文件中放些什麼。

先看一個經典的例子,頭文件:

#ifndef FINDDIALOG_H 
#define FINDDIALOG_H 
     
#include <QtGui/QDialog> 
     
class QCheckBox; 
class QLabel; 
class QLineEdit; 
class QPushButton; 
     
class FindDialog : public QDialog 
{ 
        Q_OBJECT 
     
public: 
        FindDialog(QWidget *parent = 0); 
        ~FindDialog(); 
signals: 
        void findNext(const QString &str, Qt::CaseSensitivity cs); 
        void findPrevious(const QString &str, Qt::CaseSensitivity cs); 
private slots: 
        void findClicked(); 
        void enableFindButton(const QString &text); 
private: 
        QLabel *label; 
        QLineEdit *lineEdit; 
        QCheckBox *caseCheckBox; 
        QCheckBox *backwardCheckBox; 
        QPushButton *findButton; 
        QPushButton *closeButton; 
}; 
     
#endif // FINDDIALOG_H

主函數:

#include <QApplication> 
     
#include "finddialog.h" 
     
int main(int argc, char *argv[]) 
{ 
        QApplication app(argc, argv); 
        FindDialog *dialog = new FindDialog; 
        dialog->show(); 
        return app.exec(); 
}

主源代碼函數:

#include <QtGui> 
#include "finddialog.h" 
     
FindDialog::FindDialog(QWidget *parent) 
        : QDialog(parent) 
{ 
        label = new QLabel(tr("Find &what:")); 
        lineEdit = new QLineEdit; 
        label->setBuddy(lineEdit); 
     
        caseCheckBox = new QCheckBox(tr("Match &case")); 
        backwardCheckBox = new QCheckBox(tr("Search &backford")); 
     
        findButton = new QPushButton(tr("&Find")); 
        findButton->setDefault(true); 
        findButton->setEnabled(false); 
     
        closeButton = new QPushButton(tr("Close")); 
     
        connect(lineEdit, SIGNAL(textChanged(const QString&)), this, SLOT(enableFindButton(const QString&))); 
        connect(findButton, SIGNAL(clicked()), this, SLOT(findClicked())); 
        connect(closeButton, SIGNAL(clicked()), this, SLOT(close())); 
     
        QHBoxLayout *topLeftLayout = new QHBoxLayout; 
        topLeftLayout->addWidget(label); 
        topLeftLayout->addWidget(lineEdit); 
     
        QVBoxLayout *leftLayout = new QVBoxLayout; 
        leftLayout->addLayout(topLeftLayout); 
        leftLayout->addWidget(caseCheckBox); 
        leftLayout->addWidget(backwardCheckBox); 
     
        QVBoxLayout *rightLayout = new QVBoxLayout; 
        rightLayout->addWidget(findButton); 
        rightLayout->addWidget(closeButton); 
        rightLayout->addStretch(); 
     
        QHBoxLayout *mainLayout = new QHBoxLayout; 
        mainLayout->addLayout(leftLayout); 
        mainLayout->addLayout(rightLayout); 
        setLayout(mainLayout); 
     
        setWindowTitle(tr("Find")); 
        setFixedHeight(sizeHint().height()); 
} 
     
FindDialog::~FindDialog() 
{ 
     
} 
     
void FindDialog::findClicked() 
{ 
        QString text = lineEdit->text(); 
        Qt::CaseSensitivity cs = caseCheckBox->isChecked() ? Qt::CaseInsensitive : Qt::CaseSensitive; 
        if(backwardCheckBox->isChecked()) { 
                emit findPrevious(text, cs); 
        } else { 
                emit findNext(text, cs); 
        } 
} 
     
void FindDialog::enableFindButton(const QString &text) 
{ 
        findButton->setEnabled(!text.isEmpty()); 
}

程序的運行結果是這樣的:

本文出自 “LinuxQt濟南高新區” 博客,請務必保留此出處http://qtlinux.blog.51cto.com/3052744/571692

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved