如何从Visual Studio C ++中的QT表单继承

时间:2013-07-17 08:02:11

标签: c++ visual-studio qt

我在Visual Studio中的先前项目中创建了一个QT表单(我们称之为项目1),现在另一个项目的UI属性和设计几乎与之前的项目相同,因此我想创建一个QT表单在Visual 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文件吗?

对不起,如果问题不太清楚,那是因为我自己并不完全确定这个过程。

1 个答案:

答案 0 :(得分:0)

创建一个库项目(.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路径/ general /“附加图书馆目录“部分”