Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/150.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++ 在Qt中创建自定义类类型的窗口_C++_Qt_Qdialog_Qwindow - Fatal编程技术网

C++ 在Qt中创建自定义类类型的窗口

C++ 在Qt中创建自定义类类型的窗口,c++,qt,qdialog,qwindow,C++,Qt,Qdialog,Qwindow,这是我的第一个问题,所以我尽量不让自己听起来很愚蠢 说明: 我在Qt中有一个主窗口,它有一个按钮在主窗口中创建(子-?)窗口。这可以根据用户的需要多次执行,并且每个子窗口都显示相同的属性/项目集。我认为编写一个类来保存所有这些属性将是一种明智的做法(这将继承主窗口类),因为子窗口的每个实例都会自动获取属性。我正在使用插槽创建每个实例 问题: 除了所需的属性之外,我还向子窗口类添加了什么,以便让Qt知道如果我创建了该类型的对象,它应该打开一个窗口 例如,假设我在头文件中实现了所有子窗口属性,如下所

这是我的第一个问题,所以我尽量不让自己听起来很愚蠢

说明:

我在Qt中有一个主窗口,它有一个按钮在主窗口中创建(子-?)窗口。这可以根据用户的需要多次执行,并且每个子窗口都显示相同的属性/项目集。我认为编写一个类来保存所有这些属性将是一种明智的做法(这将继承主窗口类),因为子窗口的每个实例都会自动获取属性。我正在使用插槽创建每个实例

问题:

除了所需的属性之外,我还向子窗口类添加了什么,以便让Qt知道如果我创建了该类型的对象,它应该打开一个窗口

例如,假设我在头文件中实现了所有子窗口属性,如下所示:

#include <QObject>
#include <QDialog>                        //Not sure about this

class ChildWindow : public ParentWindow

{
Q_OBJECT

public:
ChildWindow(QObject* parent);
~ChildWindow();

//Remaining properties like QSpinBox, Radio buttons etc

}
我的问题是,我没有看到任何代码表明
window
是一个单独的窗口。我可以看到它的类型是
ChildWindow
,但仅仅包括
QDialog
是否就为它提供了
show()
功能

编辑:

我意识到第一个建议是尝试看看这是否有效,但在不太可能的情况下,它有效,我不会学到任何东西,我仍然不知道它为什么有效,如果没有,我会回到这里问同样的问题。我希望你们能理解

编辑2:

error C2039: 'show' : is not a member of 'ChildWindow'
所以我猜包括
QDialog
并没有起作用

编辑3:

如果我将其添加到
ChildWindow
构造函数中

QDialog* child;
child = new QDialog;
child->show()

在插槽定义中也必须这样做吗?

那么您的
父窗口是如何定义的?在Qt中,您可以显示任何
QWidget
afaik,因此它不需要是
QDialog
QWindow
(但如果要显示多个窗口以使用一个窗口,这是有意义的)是基于QMainWindow或QDialog的ParentWindow吗?@xander
ParentWindow
定义为
QDialog
,它基本上是一个显示子窗口的空白画布。它的构造函数使用“创建子窗口”按钮打开一个通用小部件。但是如何创建类型为
ChildWindow
的子窗口?我应该向
ChildWindow
类的构造函数添加什么,以便它知道如何打开窗口?@Jeroen3QDialog@EagerLearner如果您的
ParentWindow
是一个
QDialog
它应该可以与您的代码一起工作,那么只需创建一个对象并调用call方法理论上就可以了。。也许您的ParentWindow就是问题所在,所以如果对您更合适,请尝试使用默认的QDialog。
QDialog* child;
child = new QDialog;
child->show()