From 692e642305e2c24883645bd56db491d031e97252 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thorbj=C3=B8rn=20Lund=20Martsum?= Date: Fri, 10 Aug 2012 15:24:33 +0200 Subject: QSizePolicy - add retainSizeWhenHidden MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sometimes it is nice that hiding a widget does not affect the layout. This patch makes that possible by allowing hidden widgets to take up space. Change-Id: Ifbc1cdee0e112950acc025919b98199ea9558db7 Reviewed-by: Jan Arve Sæther Reviewed-by: Thorbjørn Lund Martsum --- tests/manual/widgets/kernel/kernel.pro | 3 +- tests/manual/widgets/kernel/sizeonhide/main.cpp | 134 +++++++++++++++++++++ .../widgets/kernel/sizeonhide/sizeonhide.pro | 3 + 3 files changed, 138 insertions(+), 2 deletions(-) create mode 100644 tests/manual/widgets/kernel/sizeonhide/main.cpp create mode 100644 tests/manual/widgets/kernel/sizeonhide/sizeonhide.pro (limited to 'tests/manual/widgets/kernel') diff --git a/tests/manual/widgets/kernel/kernel.pro b/tests/manual/widgets/kernel/kernel.pro index 4d26c9ee19..968d71724f 100644 --- a/tests/manual/widgets/kernel/kernel.pro +++ b/tests/manual/widgets/kernel/kernel.pro @@ -1,3 +1,2 @@ TEMPLATE = subdirs -SUBDIRS = qtooltip - +SUBDIRS = qtooltip sizeonhide diff --git a/tests/manual/widgets/kernel/sizeonhide/main.cpp b/tests/manual/widgets/kernel/sizeonhide/main.cpp new file mode 100644 index 0000000000..e8b95dfe28 --- /dev/null +++ b/tests/manual/widgets/kernel/sizeonhide/main.cpp @@ -0,0 +1,134 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Thorbjørn Martsum - tmartsum[at]gmail.com +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtWidgets module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include + +class KeepSizeExampleDlg : public QDialog +{ + Q_OBJECT +public: + QGridLayout *gridLayout; + QHBoxLayout *horizontalLayout; + QVBoxLayout *verticalLayout; + QCheckBox *checkBox; + QCheckBox *checkBox2; + QCheckBox *checkBox3; + QCheckBox *checkBox4; + QGroupBox *groupBox; + QVBoxLayout *verticalLayout2; + QRadioButton *radioButton; + QRadioButton *radioButton2; + QRadioButton *radioButton3; + QTableView *tableView; + QPushButton *pushButton; + QSpacerItem *horizontalSpacer; + + KeepSizeExampleDlg() + { + QWidget *form = this; + form->resize(408, 295); + gridLayout = new QGridLayout(form); + horizontalLayout = new QHBoxLayout(); + verticalLayout = new QVBoxLayout(); + checkBox = new QCheckBox(form); + verticalLayout->addWidget(checkBox); + checkBox2 = new QCheckBox(form); + verticalLayout->addWidget(checkBox2); + checkBox3 = new QCheckBox(form); + verticalLayout->addWidget(checkBox3); + checkBox4 = new QCheckBox(form); + verticalLayout->addWidget(checkBox4); + horizontalLayout->addLayout(verticalLayout); + groupBox = new QGroupBox(form); + verticalLayout2 = new QVBoxLayout(groupBox); + radioButton = new QRadioButton(groupBox); + verticalLayout2->addWidget(radioButton); + radioButton2 = new QRadioButton(groupBox); + verticalLayout2->addWidget(radioButton2); + radioButton3 = new QRadioButton(groupBox); + verticalLayout2->addWidget(radioButton3); + horizontalLayout->addWidget(groupBox); + gridLayout->addLayout(horizontalLayout, 0, 0, 1, 2); + tableView = new QTableView(form); + gridLayout->addWidget(tableView, 1, 0, 1, 2); + pushButton = new QPushButton(form); + gridLayout->addWidget(pushButton, 2, 0, 1, 1); + horizontalSpacer = new QSpacerItem(340, 20, QSizePolicy::Expanding, QSizePolicy::Minimum); + gridLayout->addItem(horizontalSpacer, 2, 1, 1, 1); + checkBox->setText(QString::fromUtf8("CheckBox1")); + checkBox2->setText(QString::fromUtf8("CheckBox2")); + checkBox3->setText(QString::fromUtf8("CheckBox - for client A only")); + checkBox4->setText(QString::fromUtf8("CheckBox - also for client A")); + groupBox->setTitle(QString::fromUtf8("Mode")); + radioButton->setText(QString::fromUtf8("Mode 1")); + radioButton2->setText(QString::fromUtf8("Mode 2")); + radioButton3->setText(QString::fromUtf8("Mode 3")); + pushButton->setText(QString::fromUtf8("&Hide/Show")); + + QObject::connect(pushButton, SIGNAL(clicked()), this, SLOT(showOrHide())); + } + + protected slots: + void showOrHide() + { + if (checkBox3->isVisible()) { + checkBox3->hide(); + checkBox4->hide(); + } else { + checkBox3->show(); + checkBox4->show(); + } + } +}; + +int main(int argc, char *argv[]) +{ + QApplication app(argc, argv); + KeepSizeExampleDlg d; + QSizePolicy policyKeepSpace = d.checkBox3->sizePolicy(); + policyKeepSpace.setRetainSizeWhenHidden(true); + d.checkBox3->setSizePolicy(policyKeepSpace); + d.checkBox4->setSizePolicy(policyKeepSpace); + d.show(); + app.exec(); +} + +#include "main.moc" diff --git a/tests/manual/widgets/kernel/sizeonhide/sizeonhide.pro b/tests/manual/widgets/kernel/sizeonhide/sizeonhide.pro new file mode 100644 index 0000000000..1969392ab3 --- /dev/null +++ b/tests/manual/widgets/kernel/sizeonhide/sizeonhide.pro @@ -0,0 +1,3 @@ +TEMPLATE = app +SOURCES = main.cpp +QT += widgets core-private -- cgit v1.2.3