首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >setParent()不显示子小部件

setParent()不显示子小部件
EN

Stack Overflow用户
提问于 2017-10-30 19:27:47
回答 1查看 554关注 0票数 0

我有一个继承自QWidget的名为TitleBar的类,我创建了一个新的窗口小部件并做了setparent(),但是在做了设置父子窗口小部件没有显示之后,它只在注释了setparent之后显示,而不是与父窗口对齐,它显示在某个随机的地方,在最大化视图上它只显示在正确的位置

代码语言:javascript
复制
TitleBar::TitleBar(QWidget *parent) : QWidget(parent)  
{
  m_jobSubmitWidget = csJobSubmitPoolWidget::getSubmitPoolInst();
 // m_jobSubmitWidget->setParent(QWidget::window());
}

void csTitleBar::BtnClicked()
{
    QPoint pos = m_queueBtn->pos() + m_serverToolBar->pos() + QPoint(-m_jobSubmitWidget->width() + m_queueBtn->width(),62); // these are member variables in TitleBar class
    // pos shows always same value on moving parent widget

    if(itemCount > 2){
        m_jobSubmitWidget->move(pos);
        m_jobSubmitWidget->show();
        m_jobSubmitWidget->setFocus();
    }

}

EN

回答 1

Stack Overflow用户

发布于 2017-10-30 20:14:01

我真的建议你在Qt documentation上好好读一读。

具有父对象的QWidgets将显示在其父对象内(QDialog除外)。如果小部件没有父级,它将显示为一个单独的窗口。

将小部件设置为QWidget::window()结果的父对象有点危险,因为您不知道将返回哪个小部件,因此不知道子小部件将在哪里结束。

此外,您也不需要在具有父级的小部件上调用show()。默认情况下,它们的可见性遵循父可见性。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47014124

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档