// NotebookUtil.cpp // // Copyright (C) 2015 Jaye Evins // // This file is part of gLabels-qt. // // gLabels-qt is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // gLabels-qt is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with gLabels-qt. If not, see . // #include "NotebookUtil.hpp" #include namespace glabels { /// /// Establish notebook size based on largest page /// void NotebookUtil::establishSize( QTabWidget* notebook ) { // Establish size of notebook size based on its largest page. // This may not be established until runtime, due to varying // lengths of translated strings or may even be influenced by // the current theme and fonts. Without doing this, the // notebook may change size as tabs are selected for the first // time, which can be very annoying. // This hack shows the top-level window containing the notebook, // then shows each page and invalidates the window's layout. // Finally it re-hides the window without ever having // relinquishing control to the Qt event loop. QWidget* window = notebook->window(); int iTabSaved = notebook->currentIndex(); int nTabs = notebook->count(); window->show(); for ( int iTab = 0; iTab < nTabs; iTab++ ) { notebook->setCurrentIndex( iTab ); window->layout()->invalidate(); } window->hide(); notebook->setCurrentIndex( iTabSaved ); } }