簡體   English   中英

如何從Visual Studio C ++中的QT表單繼承

[英]How to inherit from a QT form in Visual Studio C++

我已經在Visual Studio的先前項目(我們稱為項目1)中創建了QT表單,現在另一個項目具有與先前項目幾乎相同的UI屬性和設計,因此我正在考慮在Visual中創建QT表單項目。 Studio(項目2),並繼承以前的QT表單,而不是重寫代碼。 例如,對於項目1:

class GUIBase : public QMainWindow
{
    Q_OBJECT

public:
    GUIBase (QWidget *parent = 0, Qt::WFlags flags = 0);
    ~GUIBase ();

public slots:
    //some slot definitions
};

在項目2中,派生形式為:

class GUIDerived: public GUIBase
{
    Q_OBJECT
public:
    GUIDerived (QWidget *parent = 0, Qt::WFlags flags = 0);
    ~GUIDerived ();
};

編譯項目2時,在項目1中移動GUIBase時會出現問題(因為GUIBase的頭文件位於其他文件夾中)。 所以我的主要問題是,如何設置moc流程? 我只是移動GUIBase還是需要同時移動GUIBase和GUIDerived? 而且我還需要GUIDerived的.ui文件嗎?

很抱歉,如果問題不是很清楚,那是因為我自己不太完全確定該過程。

創建一個庫項目(.dll)並將UI放入其中(.ui文件和UI的源代碼)。 在需要的所有項目中使用該庫。

庫(標題):

#ifndef GUI_BASE_H
#define GUI_BASE_H

#ifdef UILIB
#define DLL __declspec(dllexport)
#else
#define DLL __declspec(dllimport)
#endif

class DLL GUIBase : public QMainWindow
{
    Q_OBJECT

public:
    GUIBase (QWidget *parent = 0, Qt::WFlags flags = 0);
    ~GUIBase ();

public slots:
    //some slot definitions
};

#endif //GUI_BASE_H

lib項目中的預處理器定義:

UILIB

lib頭文件和生成的.lib文件必須在所有項目中都可用。 將.lib文件添加到Visual Studio中“項目屬性”的“鏈接器/輸入”部分中的“其他依賴項”(並確保VS知道lib的路徑,您可以在鏈接器/通用/“其他”中添加lib路徑圖書館目錄”部分)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM