如何访问父窗口小部件元素?

时间:2014-08-25 22:41:00

标签: c++ qt widget qt5

我想从子窗口小部件访问父窗口小部件元素 父窗口小部件有Qlistwidget,我想将所选项目从父窗口小部件传输到子窗口小部件。

我尝试了一个简单的示例来访问父窗口标题,之后我将尝试访问qlistWidget中的所选项目。

但是第一次尝试访问父窗口小部件窗口标题失败了。

ui->lineEdit->setText(this->parentWidget()->windowTitle());

现在我的询问是:

  • 首先,如何访问窗口标题等父窗口小部件元素。
  • 其次,如何访问qlistWidget中的所选项目 父窗口小部件

2 个答案:

答案 0 :(得分:2)

使用parent()功能获取QObject的父级。要获取父级的子级,请使用QObject的findChildren函数,将对象名称或类型作为模板传递。 QListWidget类具有selectedItems()成员函数,将返回所选项。 使用qobject_castQObject指针投射到所需的类。

答案 1 :(得分:1)

您可以访问父元素,但这不是正确的方法。你应该控制孩子。在对话框中添加方法以设置文本,在打开对话框时使用它来初始化对话框以及每次更改QListWidget所选项目时。

此方法允许减少依赖项的数量,避免相互依赖,在程序的其他位置使用对话框。

不是用于知识:

  

首先,如何访问窗口标题等父窗口小部件元素。

你做得对。很可能你没有将父对象传递给对话框的构造函数。

Dialog* dialog = new QDialog(this);  
  

其次,如何访问qlistWidget中父窗口小部件中的选定项目

a)您可以使用dynamic_castqobject_cast将父窗口小部件转换为窗口的确切类,并使用公共方法获取所有需要的信息。

b)您可以从具有获取数据所需方法的接口继承窗口,并将此接口传递给对话框。