Seite 1 von 1

Widget automatisch verkleinern??? [gelöst]

Verfasst: 11. November 2008 15:41
von Hulk2442
Hi

Habe eigentlich ein sehr simples Problem zu welche ich irgendwie kein Lösung finde!

Ich erzeuge eine Widget welches sich dynamisch der Größe des Inhalts anpassen soll!
Ablauf:
  • 1) Start nur der Button ist sichtbar
    2) Button wird betätigt und der Inhalt welcher auf „hide“ gesetzt war wird mittels „show“ eingeblendet
    2.1) Das Widget streckt sich und passt sich automatisch dem dargestelltem Inhalt an
    3) Button wird noch einmal betätigt und das Inhalt wird mittels „hide“ versteckt.
    3.1) PROBLEM: Das Widget bleibt vergrößert trotz dessen das nur der Button angezeigt wird.
Die Inhalte sollen in der Zukunft dieser Software Dynamisch zusammengestellt werden wodurch eine fixe Größe nicht (ohne erheblich Mehraufwand) so leicht zu ermitteln ist.

FRAGE: Gibt es einen Befehl so das ich dem Widget, oder dem Layout welches dem Widget zugewiesen wurde, mitteile das es sich wieder verkleinert???

Code: Alles auswählen

void CAdminWindow::createWindow()
{
	pConfigButton = new QToolButton;
	pConfigButton->setIcon( QIcon(strImagePath + "config.png" ) );
	connect( pConfigButton, SIGNAL(released()), this, SLOT(buttonSlot()) );
	
	createTimer();		//erzeugen von pTimerBox
	createAlarm();		//erzeugen von pAlarmBox
	
	//Layout
	pVLayout = new QVBoxLayout;
	pVLayout->addWidget(pConfigButton);
	pVLayout->addWidget(pTimerBox);
	pVLayout->addWidget(pAlarmBox);
	
	setLayout(pVLayout);
}


void CAdminWindow::buttonSlot()
{
	if( true == pTimerBox->isVisible() )
	{
		pTimerBox->hide();
		pAlarmBox->hide();
		/* HIER VERKLEINERN */
	}
	else
	{
		pTimerBox->show();
		pAlarmBox->show();
	}
}
Benutze Qtopia Core 4.2

TIA

Verfasst: 11. November 2008 19:46
von upsala
Versuch mal ein

Code: Alles auswählen

resize(minimumSize())
nach jeder Änderung.

Verfasst: 12. November 2008 07:12
von macman
Hatten wir erst gestern :-)
http://doc.trolltech.com/4.4/qwidget.html#setFixedSize
Alternatively, if you want the widget to have a fixed size based on its contents, you can call QLayout::setSizeConstraint(QLayout::SetFixedSize);
Allerdings kann man dann die Größe nicht mehr manuell ändern.

Verfasst: 12. November 2008 07:56
von Hulk2442
THX für die Hilfe habe beim suchen den "gestrigen" thread leider nicht gefunden.
Jedoch folgender code:

Code: Alles auswählen

QLayout::setSizeConstraint(QLayout::SetFixedSize);
erfüllt genau was ich gesucht habe!