我想从子窗口小部件访问父窗口小部件元素
父窗口小部件有Qlistwidget
,我想将所选项目从父窗口小部件传输到子窗口小部件。
我尝试了一个简单的示例来访问父窗口标题,之后我将尝试访问qlistWidget
中的所选项目。
但是第一次尝试访问父窗口小部件窗口标题失败了。
ui->lineEdit->setText(this->parentWidget()->windowTitle());
现在我的询问是:
qlistWidget
中的所选项目
父窗口小部件 答案 0 :(得分:2)
使用parent()
功能获取QObject
的父级。要获取父级的子级,请使用QObject的findChildren
函数,将对象名称或类型作为模板传递。
QListWidget
类具有selectedItems()
成员函数,将返回所选项。
使用qobject_cast
将QObject
指针投射到所需的类。
答案 1 :(得分:1)
您可以访问父元素,但这不是正确的方法。你应该控制孩子。在对话框中添加方法以设置文本,在打开对话框时使用它来初始化对话框以及每次更改QListWidget
所选项目时。
此方法允许减少依赖项的数量,避免相互依赖,在程序的其他位置使用对话框。
不是用于知识:
首先,如何访问窗口标题等父窗口小部件元素。
你做得对。很可能你没有将父对象传递给对话框的构造函数。
Dialog* dialog = new QDialog(this);
其次,如何访问qlistWidget中父窗口小部件中的选定项目
a)您可以使用dynamic_cast
或qobject_cast
将父窗口小部件转换为窗口的确切类,并使用公共方法获取所有需要的信息。
b)您可以从具有获取数据所需方法的接口继承窗口,并将此接口传递给对话框。