删除 QToolBar 时 toolbarBreak 消失
toolbarBreak disappears when deleting QToolBar
当我执行下面的示例代码时,我首先创建了两个工具栏,它们之间有一个分隔符,然后我删除了第二个工具栏。问题是当我这样做时 toolbarBreak 也消失了。
当我重新初始化 t2 时,没有中断了。 toolbarBreak 真的“消失”了吗?
要解决此问题,我需要在重新初始化工具栏之前调用 addToolBarBreak();
。但是我是否创建了以前的 toolbarBreak 的副本?
或者我应该在删除 t2 之前调用 removeToolbarBreak(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);
}
是的,布局负责!今天自己调试了Qt代码。
请参见 here,在 QToolBarAreaLayout::takeAt(int *x, int index)
中,中断将被删除。
当我执行下面的示例代码时,我首先创建了两个工具栏,它们之间有一个分隔符,然后我删除了第二个工具栏。问题是当我这样做时 toolbarBreak 也消失了。
当我重新初始化 t2 时,没有中断了。 toolbarBreak 真的“消失”了吗?
要解决此问题,我需要在重新初始化工具栏之前调用 addToolBarBreak();
。但是我是否创建了以前的 toolbarBreak 的副本?
或者我应该在删除 t2 之前调用 removeToolbarBreak(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);
}
是的,布局负责!今天自己调试了Qt代码。
请参见 here,在 QToolBarAreaLayout::takeAt(int *x, int index)
中,中断将被删除。