由于多个* .ui文件而导致多个Ui_Dialog定义?

w

我正在使用3.5英寸LCD屏幕的RaspberryPi 我有一个基于Qt 5的应用程序,该应用程序在信息亭模式下运行,没有标题栏。该应用程序使用整个320x480屏幕。我试图添加第二个对话框,当用户单击主对话框窗口中的按钮时,该对话框将显示。

每个对话框都是使用Qt Designer设计的。每个对话框都有一个*.ui设置对话框大小并添加按钮的文件。将该*.ui文件微移或移动到头文件和源文件中:

$g++ -c -pipe -g3 -O1 -O2 -Wall -W -D_REENTRANT -fPIC -DQT_NO_DEBUG -DQT_UITOOLS_
LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I. -isystem /usr/include/x86_64
-linux-gnu/qt5 -isystem /usr/include/x86_64-linux-gnu/qt5/QtUiTools -isystem /us
r/include/x86_64-linux-gnu/qt5/QtWidgets -isystem /usr/include/x86_64-linux-gnu/
qt5/QtGui -isystem /usr/include/x86_64-linux-gnu/qt5/QtCore -I. -isystem /usr/in
clude/libdrm -I. -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -o dialog1.o 
dialog1.cpp
In file included from dialog2.h:7:0,
                 from dialog1.h:8,
                 from dialog1.cpp:1:
ui_dialog2.h:22:7: error: redefinition of ‘class Ui_Dialog’
 class Ui_Dialog
       ^~~~~~~~~
In file included from dialog1.h:7:0,
                 from dialog1.cpp:1:
ui_dialog1.h:22:7: note: previous definition of ‘class Ui_Dialog’
 class Ui_Dialog
       ^~~~~~~~~
In file included from dialog2.h:7:0,
                 from dialog1.h:8,
                 from dialog1.cpp:1:
ui_dialog2.h:50:11: error: redefinition of ‘class Ui::Dialog’
     class Dialog: public Ui_Dialog {};
           ^~~~~~
In file included from dialog1.h:7:0,
                 from dialog1.cpp:1:
ui_dialog1.h:50:11: note: previous definition of ‘class Ui::Dialog’
     class Dialog: public Ui_Dialog {};
           ^~~~~~
Makefile:445: recipe for target dialog1.o failed
make: *** [dialog1.o] Error 1

问题似乎是* .ui文件的翻译方式:

$ cat ui_dialog1.h | tail -n 7
namespace Ui {
    class Dialog: public Ui_Dialog {};
} // namespace Ui

和:

$ cat ui_dialog2.h | tail -n 7
namespace Ui {
    class Dialog: public Ui_Dialog {};
} // namespace Ui

我知道这个问题,但是我不确定如何在Qt工具下解决它。这些工具需要为每个*.ui文件使用唯一的名称空间或唯一的类名称

我该如何解决该问题?


Noloader提供了MCVE | qt-ui-dialog GitHub。将MCVE克隆为:

git clone https://github.com/noloader/qt-ui-dialog

可以用以下方法重现该问题:

cd qt-ui-dialog
make clean && qmake && make
保罗

一个ui_something.h头必须包含在something.cpp源文件,而不是在something.h头。查看您的编译器输出,似乎您包含ui_dialog1.h在中dialog1.h,这是错误的:将其包含在中dialog1.cpp,(与其他对话框相同)。

但是,请务必Ui在头文件中声明名称空间和类。在两个标题中,在对话框类声明之前添加以下行:

namespace Ui {
    class Dialog;
}

这意味着您必须使用指向此类的指针Ui::Dialog,因此它必须是:

class Dialog1 : public QDialog
{
   /* ... */
private:
    Ui::Dialog * ui;
};

并因此:

Dialog1::Dialog1(QDialog *parent)
    : QDialog(parent), 
      ui(new Ui::Dialog)
{
    ui->setupUi(this);
}

清理:

Dialog1::~Dialog1()
{
    delete ui;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

由于SSIS中的多个JOIN导致超时

来自分类Dev

如何使多个UIImage同时由于重力而下落?

来自分类Dev

检测由于内容长度而发送的多个SMS

来自分类Dev

多个c ++文件导致“多个定义”错误?

来自分类Dev

避免由于缺少命令而导致多个管道损坏

来自分类Dev

在多个组件之间共享数据 - 由于对象引用而导致的问题

来自分类Dev

由于继承,模板化函数的多个函数定义

来自分类Dev

由于读取多个大小不同的文件时struct.unpack()的内存泄漏而导致的MemoryError

来自分类Dev

多个领域事务导致UI线程冻结

来自分类Dev

由于“多个过程”,即时运行不起作用

来自分类Dev

由于多个匹配项,该名称不明确:

来自分类Dev

WCF-使用多个服务证书(由于证书更改)

来自分类Dev

由于多个匹配项,该名称不明确:

来自分类Dev

由于多个域,Outlook 2016无法连接到Office 365

来自分类Dev

由于多个“主”,STM8 上的 cpputest 失败

来自分类Dev

由于变量中的实际值而改变多个变量的值

来自分类Dev

由于未知原因,在 Python 循环中应用多个条件失败

来自分类Dev

在Onsen UI中使用多个HTML文件

来自分类Dev

Kendo UI多个文件上传问题

来自分类Dev

在 Qt 中连接多个 .ui 文件

来自分类Dev

在头文件中定义变量会导致多个变量定义

来自分类Dev

由于自定义图像,Google Maps API v3 多个标记不起作用?

来自分类Dev

SpringBoot由于多个感叹号而无法从Runnable jar加载属性文件

来自分类Dev

由于熊猫中单个单元格中有多个字符串,导致日期时间转换错误

来自分类Dev

$ this在多个jquery ui滑块上,给出未定义?

来自分类Dev

可选的jQuery UI:动态定义多个可选对象

来自分类Dev

由于未捕获的异常而将多个UITableViewCells终止应用子类化

来自分类Dev

PHP:由于多个相似的名称,array_diff计数问题

来自分类Dev

由于WebSphere中有多个AJAX请求,如何处理高线程使用率

Related 相关文章

  1. 1

    由于SSIS中的多个JOIN导致超时

  2. 2

    如何使多个UIImage同时由于重力而下落?

  3. 3

    检测由于内容长度而发送的多个SMS

  4. 4

    多个c ++文件导致“多个定义”错误?

  5. 5

    避免由于缺少命令而导致多个管道损坏

  6. 6

    在多个组件之间共享数据 - 由于对象引用而导致的问题

  7. 7

    由于继承,模板化函数的多个函数定义

  8. 8

    由于读取多个大小不同的文件时struct.unpack()的内存泄漏而导致的MemoryError

  9. 9

    多个领域事务导致UI线程冻结

  10. 10

    由于“多个过程”,即时运行不起作用

  11. 11

    由于多个匹配项,该名称不明确:

  12. 12

    WCF-使用多个服务证书(由于证书更改)

  13. 13

    由于多个匹配项,该名称不明确:

  14. 14

    由于多个域,Outlook 2016无法连接到Office 365

  15. 15

    由于多个“主”,STM8 上的 cpputest 失败

  16. 16

    由于变量中的实际值而改变多个变量的值

  17. 17

    由于未知原因,在 Python 循环中应用多个条件失败

  18. 18

    在Onsen UI中使用多个HTML文件

  19. 19

    Kendo UI多个文件上传问题

  20. 20

    在 Qt 中连接多个 .ui 文件

  21. 21

    在头文件中定义变量会导致多个变量定义

  22. 22

    由于自定义图像,Google Maps API v3 多个标记不起作用?

  23. 23

    SpringBoot由于多个感叹号而无法从Runnable jar加载属性文件

  24. 24

    由于熊猫中单个单元格中有多个字符串,导致日期时间转换错误

  25. 25

    $ this在多个jquery ui滑块上,给出未定义?

  26. 26

    可选的jQuery UI:动态定义多个可选对象

  27. 27

    由于未捕获的异常而将多个UITableViewCells终止应用子类化

  28. 28

    PHP:由于多个相似的名称,array_diff计数问题

  29. 29

    由于WebSphere中有多个AJAX请求,如何处理高线程使用率

热门标签

归档