Qt开发:删除QToolBar时toolbarBreak消失相关问题咨询
Qt工具栏分隔符丢失问题解答
问题1:删除t2时toolbarBreak是否真的被移除?
- 是的,Qt的QMainWindow工具栏布局逻辑中,
addToolBarBreak()添加的分隔符是和紧跟在它之后插入的工具栏绑定关联的。当你删除紧跟分隔符的t2时,Qt会自动清理这个绑定的分隔符,不会残留孤立的分隔标记。
问题2:重新添加t2前调用addToolBarBreak()会不会导致分隔符重复?
- 不会。因为之前的分隔符已经随着t2的删除被自动清理了,此时调用
addToolBarBreak()是新增一个全新的分隔符,不会出现重复多余的分隔。
问题3:删除t2前是否需要先调用removeToolbarBreak(t2)?
- 不需要。Qt已经默认实现了删除工具栏时自动清理关联分隔符的逻辑,手动调用这个方法没有额外收益,属于冗余操作。
修复后完整示例代码
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) { auto* t1 = new QToolBar(this); t1->setMovable(false); t1->addAction("Hello t1 Action"); auto* t2 = new QToolBar(this); t2->setMovable(false); t2->addAction("Hello t2 Action"); addToolBar(t1); addToolBarBreak(); addToolBar(t2); delete t2; t2 = new QToolBar(this); t2->setMovable(false); t2->addAction("Hello t2 Action"); addToolBarBreak(); // 此处添加即可正常恢复分隔,无重复问题 addToolBar(t2); }
内容的提问来源于stack exchange,提问作者easysaesch
相关产品推荐
相关产品推荐

