如何将通过removeWidget()从QStatusBar移除的部件重新添加回去?
解决QStatusBar移除部件后重新添加不显示的问题
问题核心是你调用show()的对象错误——文档中要求的是调用被添加部件自身的show(),而非状态栏的show()。
当执行removeWidget(ui->label)时,该部件仅被隐藏(调用了hide())并未被销毁。重新添加时,除了调用addWidget(),必须显式触发部件自身的显示:
ui->statusbar->addWidget(ui->label); ui->statusbar->removeWidget(ui->label); ui->statusbar->addWidget(ui->label); ui->label->show(); // 调用label的show(),而非statusbar的show()
补充说明:如果是通过Qt Designer直接将label拖入状态栏,初始状态下label已是状态栏的子部件并处于显示状态。第一次调用removeWidget后它会被隐藏,后续重新添加时addWidget()不会自动恢复部件的显示状态,必须手动调用部件的show()。
内容的提问来源于stack exchange,提问作者big_0
相关产品推荐
相关产品推荐

