gpt4 book ai didi

c++ - 在 Qt 中访问父对象

转载 作者:行者123 更新时间:2023-11-28 02:43:51 24 4
gpt4 key购买 nike

我尝试从 child 访问 parent 。父子类继承QWidget让我们看看:

//parent.h

public:
child* h_child = nullptr; //pointer to child - now i can control child in parent methods


//method in parent.cpp
h_child = new child(); //show child window
h_child->show(); //show next window

和 child

//child.cpp in child method
parent_class *sth = qobject_cast<parent_class*>(parentWidget());

if (sth == NULL){
QMessageBox::warning(this, "error !", "error!");
}

我看到了“错误”

  1. 我尝试用 this->parent() 替换 parentWidget()。//结果相同
  2. 我尝试像那样运行子实例:

    h_child = new child(this);//显示子窗口

但是当我尝试使用 h_child->show() 时,显示的窗口是“损坏的”(我在窗口中有窗口(在父窗口中有子窗口,没有子窗口框架)-看起来难以辨认)

那么我怎样才能访问父方法和变量呢?

最佳答案

在你创建你的 child 之后,你是否将你的 parent 设置为parentWidget?通常,当您创建 QWidget 时,您会将 parent 传递给构造函数,但在您的代码中,我看到 child() 构造函数没有任何参数。这就是 parentWidget() 返回 NULL 的原因,您只是没有在任何地方设置它。

关于c++ - 在 Qt 中访问父对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25057092/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com