Random crush when calling restoreState
vlomov opened this issue · 1 comments
vlomov commented
patch.txt
try apply this to AutoHideExample mainwindow.cpp, compile and run. Click Run!!! button on toolbar
MSVC 19
Qt 6.6.2
Release
githubuser0xFFFF commented
You should not call restoreState() multiple times without giving the ui the possibility to update its state. I do not consider this a bug. If you split the update into two separate update actions, it works perfectly:
auto * action = new QAction("Run!!!");
action->connect(action, &QAction::triggered,
[this]() {
DockManager->restoreState(
{ R"(<?xml version="1.0" encoding="UTF-8"?><QtAdvancedDockingSystem Version="1" UserVersion="0" Containers="1" CentralWidget="CentralWidget"><Container Floating="0"><Splitter Orientation="|" Count="2"><Area Tabs="1" Current="Table 1"><Widget Name="Table 1" Closed="0"/></Area><Splitter Orientation="-" Count="1"><Splitter Orientation="|" Count="2"><Area Tabs="1" Current="CentralWidget" AllowedAreas="f" Flags="1"><Widget Name="CentralWidget" Closed="0"/></Area><Area Tabs="1" Current="Properties"><Widget Name="Properties" Closed="0"/></Area><Sizes>734 256 </Sizes></Splitter><Sizes>707 </Sizes></Splitter><Sizes>256 995 </Sizes></Splitter><SideBar Area="1" Tabs="1"><Widget Name="Table 2" Closed="0" Size="100"/></SideBar></Container></QtAdvancedDockingSystem>)"});
//DockManager->restoreState(
//{ R"(<?xml version="1.0" encoding="UTF-8"?><QtAdvancedDockingSystem Version="1" UserVersion="0" Containers="1" CentralWidget="CentralWidget"><Container Floating="0"><Splitter Orientation="|" Count="2"><Area Tabs="1" Current="Table 2"><Widget Name="Table 2" Closed="0"/></Area><Splitter Orientation="-" Count="1"><Splitter Orientation="|" Count="2"><Area Tabs="1" Current="CentralWidget" AllowedAreas="f" Flags="1"><Widget Name="CentralWidget" Closed="0"/></Area><Area Tabs="1" Current="Properties"><Widget Name="Properties" Closed="0"/></Area><Sizes>734 256 </Sizes></Splitter><Sizes>707 </Sizes></Splitter><Sizes>256 995 </Sizes></Splitter><SideBar Area="1" Tabs="1"><Widget Name="Table 1" Closed="0" Size="272"/></SideBar></Container></QtAdvancedDockingSystem>)"});
});
ui->toolBar->addAction(action);
action = new QAction("Run2!!!");
action->connect(action, &QAction::triggered,
[this]() {
//DockManager->restoreState(
//{ R"(<?xml version="1.0" encoding="UTF-8"?><QtAdvancedDockingSystem Version="1" UserVersion="0" Containers="1" CentralWidget="CentralWidget"><Container Floating="0"><Splitter Orientation="|" Count="2"><Area Tabs="1" Current="Table 1"><Widget Name="Table 1" Closed="0"/></Area><Splitter Orientation="-" Count="1"><Splitter Orientation="|" Count="2"><Area Tabs="1" Current="CentralWidget" AllowedAreas="f" Flags="1"><Widget Name="CentralWidget" Closed="0"/></Area><Area Tabs="1" Current="Properties"><Widget Name="Properties" Closed="0"/></Area><Sizes>734 256 </Sizes></Splitter><Sizes>707 </Sizes></Splitter><Sizes>256 995 </Sizes></Splitter><SideBar Area="1" Tabs="1"><Widget Name="Table 2" Closed="0" Size="100"/></SideBar></Container></QtAdvancedDockingSystem>)"});
DockManager->restoreState(
{ R"(<?xml version="1.0" encoding="UTF-8"?><QtAdvancedDockingSystem Version="1" UserVersion="0" Containers="1" CentralWidget="CentralWidget"><Container Floating="0"><Splitter Orientation="|" Count="2"><Area Tabs="1" Current="Table 2"><Widget Name="Table 2" Closed="0"/></Area><Splitter Orientation="-" Count="1"><Splitter Orientation="|" Count="2"><Area Tabs="1" Current="CentralWidget" AllowedAreas="f" Flags="1"><Widget Name="CentralWidget" Closed="0"/></Area><Area Tabs="1" Current="Properties"><Widget Name="Properties" Closed="0"/></Area><Sizes>734 256 </Sizes></Splitter><Sizes>707 </Sizes></Splitter><Sizes>256 995 </Sizes></Splitter><SideBar Area="1" Tabs="1"><Widget Name="Table 1" Closed="0" Size="272"/></SideBar></Container></QtAdvancedDockingSystem>)"});
});
ui->toolBar->addAction(action);