0

当我执行下面的示例代码时,我首先创建了两个工具栏,它们之间有一个中断,然后我删除了第二个工具栏。问题是toolbarBreak 在我这样做时也会消失。

当我重新初始化 t2 时,不再有中断。toolbarBreak 真的在这里“消失”了吗?要解决此问题,我需要addToolBarBreak();在重新初始化工具栏之前调用。但是我是否创建了以前的 toolbarBreak 的副本?

还是我应该removeToolbarBreak(t2)在删除 t2 之前打电话?

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(); // fixes the problem
    addToolBar(t2);
}
4

1 回答 1

0

是的,布局会处理它!我今天自己调试了 Qt 代码。看到这里,在QToolBarAreaLayout::takeAt(int *x, int index)break中会被删除。

于 2021-12-08T18:22:59.777 回答