Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/157.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_Widget_Parent - Fatal编程技术网

C++ Qt,从另一个子小部件获取子小部件内的数据

C++ Qt,从另一个子小部件获取子小部件内的数据,c++,qt,widget,parent,C++,Qt,Widget,Parent,我在主窗口中创建新的cad小部件: glWidget = new MeshViewerWidget(this); 然后是我的文本视图小部件: tbl = new tableView( this ); 在我的主窗口中,我可以使用以下工具获取网格: glWidget->mesh(); 如何在我的tableview.cc中获取它?ty您可以使用QObject的功能,获得一个小部件的所有子部件的列表,该小部件可以转换为给定类型。乙二醇 QList<QTableView*> all

我在主窗口中创建新的cad小部件:

glWidget = new MeshViewerWidget(this);
然后是我的文本视图小部件:

tbl = new tableView( this );
在我的主窗口中,我可以使用以下工具获取网格:

glWidget->mesh();
如何在我的tableview.cc中获取它?ty

您可以使用
QObject
的功能,获得一个小部件的所有子部件的列表,该小部件可以转换为给定类型。乙二醇

QList<QTableView*> allTableViews = glWidget->findChildren<QTableView *>();
// Iterate in order to find the table view either by checking the name, the parent etc....
QList alltableview=glWidget->findChildren();
//通过检查名称、父视图等来迭代查找表视图。。。。

另一种方法是西蒙建议的,对要从顶级控件中获得的成员添加公共访问函数。< /P>我使用python使用python中的Qt,我不能给你C++代码,但是打印剪裁相同。子类tableview,带有一个接受附加参数的自定义构造函数,因此在实例化tableview时可以传入网格。或者,向tableview子类添加一个setMesh方法,并以这种方式传递网格。因此,如果我理解正确:glWidget->findChildren会给我列出glWidget的所有子类吗?我很困惑,因为如果我想把glWidget列在主窗口()的子窗口中,我需要它们。但是为什么,我已经知道这个名字了(glWidget)?在我看来,孩子看不到他“兄弟”的数据?只是在具有自定义构造函数的父级的帮助下?这里是大n00b…我是这样得到的:QList allmeshwidgets=parentWidget()->findChildren();MyMesh&mesh=allmeshwidgets.first()->mesh();谢谢你的帮助!