KMainWindow::applyMainWindowSettings() currently does resize(windowHandle()->size()); unconditionally, but that will always return 640x480. As a result, all KXMLGUI-using apps will get an initial main window size of 640x480, overriding whatever size hint they might have set. This yields an unpolished first impression to the new user due to windows being too small the first time apps are launched. Various apps have been working around this by adding an initial resize() call to their main window code, which is not super desirable, as it amounts to working around a workaround in client code. In order to avoid negative consequences from this workaround, we need to set the newly-created window to have the geometry of the existing widget, which ensures that its sizeHint is applied properly.
KXMLGUI
Framework for managing menu and toolbar actions
Introduction
KXMLGUI provides a framework for managing menu and toolbar actions in an abstract way. The actions are configured through a XML description and hooks in the application code. The framework supports merging of multiple description for example for integrating actions from plugins.
Kiosk
KXMLGui makes use of the Kiosk authorization functionality of KConfig (see the KAuthorized namespace in that framework). Notably, QAction instances added to a KActionCollection are disabled if KAuthorized::authorizeAction() reports that they are not authorized. The items on the standard help menu (KHelpMenu) can likewise be disabled based on Kiosk settings, and toolbar editing can be restricted.
See KActionCollection, KHelpMenu and KToolBar documentation for more information.