Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在表单中使用接口类,以便使用所需的派生类_C++_Qt_Qt Creator - Fatal编程技术网

C++ 在表单中使用接口类,以便使用所需的派生类

C++ 在表单中使用接口类,以便使用所需的派生类,c++,qt,qt-creator,C++,Qt,Qt Creator,我想根据情况在同一区域使用不同的自定义小部件。为此,我创建了一个接口类和一些派生的自定义类widget,因为它们具有相同的方法和清洁度 我的界面是: 伊迪尔 派生类: 第一拨,第二拨 这些派生类继承自IDial,因此它们具有IDial的公共函数 当我启动程序时,我想选择显示哪个拨号盘,这取决于宏或参数,这并不重要 为了能够显示我想要的派生类小部件,除了将接口类名IDial作为表单设计模式下小部件区域的objectName之外,我没有其他选择 问题是Qt正在尝试实例化此接口。。。因为纯粹的虚函数,

我想根据情况在同一区域使用不同的自定义小部件。为此,我创建了一个接口类和一些派生的自定义类widget,因为它们具有相同的方法和清洁度

我的界面是:

伊迪尔

派生类:

第一拨,第二拨

这些派生类继承自IDial,因此它们具有IDial的公共函数

当我启动程序时,我想选择显示哪个拨号盘,这取决于宏或参数,这并不重要

为了能够显示我想要的派生类小部件,除了将接口类名IDial作为表单设计模式下小部件区域的objectName之外,我没有其他选择

问题是Qt正在尝试实例化此接口。。。因为纯粹的虚函数,这是不可能的,也是正常的


我想指出,该区域可以包含不同的小部件,这些小部件都继承自此接口。

将QFrame添加到您想要的位置,而不是类IDial。在头文件中:

#include "firstdial.h"
#include <QHBoxLayout>
...
QHBoxLayout* layout;
FirstDial* firstDial;
将小部件添加到布局:

layout->addWidget(firstDial);

不清楚你在问什么。@ddriver好的,我会尽量用一个最简单的例子更好地解释。@ddriver我试图改进我的解释,希望你能理解。你的解释对我来说没有任何意义,也许只是我,我不是一个很好的程序员,也许这些概念对我来说太高级了;发布你的代码,然后我们就可以看到并理解你在做什么。
layout->addWidget(firstDial);