自学内容网 自学内容网

QBoxLayout的addWidget(QWidget * w)会改变w的parent()

示例:

我希望在page_frame对象中使用orders_add_page对象的price变量,

但按照下面这样写得到的price的值都不对。

int price;
orders_add_page::orders_add_page(QWidget *parent)
: QDialog(parent)
{
    ui.setupUi(this);
    page = new page_frame(type, this);

    QVBoxLayout* layout = new QVBoxLayout(ui.page_main);
layout->addWidget(page);
}
void page_frame::init_orders_add_page()
{
orders_add_page* page = (orders_add_page*)p;
    qDebug()<<page->price;
}

原因:这样写,实际上我调用的是ui.page_main的price变量,而该变量并不存在,所以得到的值不正确。

本来我以为

page = new page_frame(type, this);

这样写,page的父类parent()就会是this。

    QVBoxLayout* layout = new QVBoxLayout(ui.page_main);
    layout->addWidget(page);

这两条语句,把page的父类parent()变为了ui.page_main。 


原文地址:https://blog.csdn.net/weixin_51883798/article/details/138125413

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!