我在Windows 7 Ultimate 32位上使用Qt 4.7。

我程序的QMainWindow有一个QDockWidget。我注意到,如果通过标题栏上的“最小化”按钮来最小化主窗口,则还原后,停靠窗口小部件将关闭。我没有为此功能提供任何支持!

这是如何发生的以及如何预防呢?

谢谢。

最佳答案

我遇到了同样的问题...通过使用称为StoreWindowsLayout和RestoreWindowsLayout的方法,我设法摆脱了这个问题。

StoreWindowsLayout将保存由QMainwindow::saveState()方法返回的ByteArray的内容。

RestoreWindowsLayout将还原该字节数组,并因此还原您的Windows布局,qdockwidget可见性状态等等。

我在ApplicationMainFrm::changeEvent,ApplicationMainFrm::closeEvent(很可能需要这个)和ApplicationMainFrm::hide()中调用StoreWindowsLayout。

然后我在ApplicationMainFrm::showEvent中使用restoreWindowsLayout。

在MainForm中使用restoreWindowsLayout的示例:

void ApplicationMainFrm::showEvent(QShowEvent* pEvent)
{
    QMainWindow::showEvent(pEvent);

    restoreWindowsLayout();
}

希望能帮助到你 !

关于c++ - 如果最小化主窗口,则QDockWidget将关闭,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4633826/

10-11 18:40