2014-11-08 56 views
0

有人能告訴我如何爲我的櫃檯課程製作不同的文件嗎?如何在不同的文件中創建我的課程?

這是我的代碼,但它是由error.I編譯應該把我的類在另一個文件(.H)。但我不知道如何做到這一點..

我的軟件是Qt Creator的5

#include <QCoreApplication> 
#include <QObject> 

class Counter : public QObject 
{ 
    Q_OBJECT 
    int m_value; 
public: 
    int value() const { return m_value; } 
public slots: 
    void setValue(int value); 
signals: 
    void valueChanged(int newValue); 
}; 
void Counter::setValue(int value) 
{ 
    if (value != m_value) 
    { 
     m_value = value; 
     emit valueChanged(value); 
    } 
} 
int main(int argc, char *argv[]) 
{ 
    QCoreApplication a(argc, argv); 
    Counter d, b; 
     QObject::connect(&d, SIGNAL(valueChanged(int)), 
         &b, SLOT(setValue(int))); 

    d.setValue(12); // a.value() == 12, b.value() == 12 

    return a.exec(); 
} 

回答

0

您應該創建它寫成如下Counter.h:

#include <QObject> 

class Counter : public QObject 
{ 
Q_OBJECT 
    int m_value; 
public: 
    int value() const { return m_value; } 
public slots: 
    void setValue(int value); 
signals: 
    void valueChanged(int newValue); 
} 

然後把下面的代碼Couter.cpp

#include "Counter.h" 

void Counter::setValue(int value) 
{ 
    if (value != m_value) 
    { 
     m_value = value; 
     emit valueChanged(value); 
    } 
}  

現在繼續你的main.c

#include <QCoreApplication> 
#include "Couter.h" 

int main(int argc, char *argv[]) 
{ 
    QCoreApplication a(argc, argv); 
    Counter d, b; 
    QObject::connect(&d, SIGNAL(valueChanged(int)), 
       &b, SLOT(setValue(int))); 

    d.setValue(12); // a.value() == 12, b.value() == 12 

    return a.exec(); 
}  

我不確定您是否使用qmake構建。如果是這樣,您需要將兩個文件名Couter.h和Counter.cpp添加到YourProjName.pro中,例如Counter.pro。

你應該在Qt網頁上找到更多關於它的內容。

0

類聲明應該在Counter.h中。 Counter :: setValue方法應該在Counter.C中。 Counter.C和包含main的文件都應包含Counter.h。

0

把類定義在.h文件中:

Counter.h

#pragma once 

#include <QCoreApplication> 
#include <QObject> 

class Counter : public QObject 
{ 
    Q_OBJECT 
    int m_value; 
public: 
    int value() const { return m_value; } 
public slots: 
    void setValue(int value); 
signals: 
    void valueChanged(int newValue); 
}; 

將成員函數的定義在.cpp文件。

Counter.cpp:

#include "Counter.h" 

void Counter::setValue(int value) 
{ 
    if (value != m_value) 
    { 
     m_value = value; 
     emit valueChanged(value); 
    } 
} 

main功能在其他.cpp文件。

TestCounter.cpp:

#include "Counter.h" 

int main(int argc, char *argv[]) 
{ 
    QCoreApplication a(argc, argv); 
    Counter d, b; 
     QObject::connect(&d, SIGNAL(valueChanged(int)), 
         &b, SLOT(setValue(int))); 

    d.setValue(12); // a.value() == 12, b.value() == 12 

    return a.exec(); 
} 

由於類從QObject派生,你必須運行moc編譯器,Qt的發行版的一部分,創建另一個.cpp文件。編譯所有的.cpp文件。然後,鏈接目標文件以創建可執行文件。

+0

它對我很有用,很喜歡;) – 2014-11-08 11:48:51

相關問題