0

我在 Visual Studio 的前一个项目(我们称之为项目 1)中创建了一个 QT 表单,现在另一个项目的 UI 属性和设计与前一个项目几乎相同,因此我正在考虑在 Visual Studio 中创建一个 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 中 moc-ing GUIBase 时出现问题(因为 GUIBase 的头文件在不同的文件夹中)。所以我的主要问题是,如何设置 moc 流程?我只是 moc GUIBase 还是我需要同时 moc GUIBase 和 GUIDerived?我还需要 GUIDerived 的 .ui 文件吗?

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

4

1 回答 1

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路径图书馆目录”部分)

于 2013-07-17T09:15:44.540 回答