Seite 1 von 1

QToolBox an veränderten Inhalt (Größe) anpassen?

Verfasst: 16. Juni 2008 17:33
von Kerstin
Hallo zusammen,

ich habe Probleme eine QToolBox an ihren veränderten Inhalt anzupassen.

Ich hab eine QToolBox mit insgesamt 5 Tabs, jedem Tab hab ich ein QWidget hinzugefügt. Die QWidgets besitzen dieselbe Breite, aber unterschiedliche Höhen. Am Anfang passt sich jedes Tab der QToolBox an die unterschiedlchen Größen (Höhen) der Widgets an und zeigt den Inhalt korrekt an (d.h. ohne Scrollbar, Lücken, etc).

Ein Tab bzw. Widget besitzt nun eine Tabelle, die ich variabel gestalten möchte, d.h. der Benutzer soll die Möglichkeit haben, die Anzahl der angezeigten Zeilen der Tabelle selbst auszuwählen. Indem er einen QPushButton in der gui drückt, wird ein Signal ausgesendet und die Methode updateSegments() aufgerufen, die nun die Größe des QToolBox Tabs an die neue Größe des QTableWidgets anpassen sollte. Leider klappt dies nicht. Ich habe es mit den verschiedensten Funktionen, wie adjustSize(), resize(),... probiert, um dem Tab klarzumachen, dass es seine Größe ändern sollte. Auf jeden Fall weiß das QWidget, dass es seine Größe geändert hat (probiert durch Auslesen), dies wird aber leider nicht an das QToolBox Tab weitergegeben. Auch finde ich keine passende QSizePolicy.

Kennt jemand dieses Problem und hat eine Idee, wie ich die QToolBox gestalten kann, dass sie sich an veränderten Inhalt anpasst??

Vielen Dank!!

Lg, Kerstin

PS: Operating System: Ubuntu, Qt Version 4.3

Teile des Code:

Code: Alles auswählen

initializeControlBox()
{
controlBox = new QGroupBox();
controlBox->setFixedWidth(325);

m_pTabControl = new QToolBox(controlBox);

m_pArmconfig = new QWidget();
m_pTabControl->addItem(m_pArmconfig, tr("Arm Configuration"));

m_pToolLayoutVertical = new QVBoxLayout();
m_pToolLayoutVertical->addWidget(m_pTabControl);
m_pToolLayoutVertical->setAlignment(m_pTabControl, Qt::AlignTop);
controlBox->setLayout(m_pToolLayoutVertical);

//Widget Arm Configuration
	m_pSegLayout = new QGridLayout();

	m_pNumberSeg = new QLabel("Number of segments");
	m_pSelectSeg = new QSpinBox();
	m_pSelectSeg->setMaximum(8);
	m_pSelectSeg->setMinimum(3);
	m_pSelectSeg->setValue(8);
	m_pApplySeg = new QPushButton("Apply Segments");
	m_pApplySeg->setFixedWidth(110);

	m_pSelectSegLayout = new QGridLayout();
	m_pSelectSegLayout->addWidget(m_pNumberSeg, 0, 0);
	m_pSelectSegLayout->addWidget(m_pSelectSeg, 0, 1);
	m_pSelectSegLayout->setVerticalSpacing(5);
	m_pSelectSegLayout->addWidget(m_pApplySeg, 1, 1);
	m_pSelectSegLayout->setAlignment(m_pApplySeg, Qt::AlignRight);

	// QTableWidget 
	m_pSegTable = new QTableWidget();
		m_pSegTable->setRowCount(8);
 		m_pSegTable->setColumnCount(4);

	vboxConfig = new QVBoxLayout();
	vboxConfig->addItem(m_pSelectSegLayout);
	vboxConfig->addSpacing(10);
	vboxConfig->addWidget(m_pSegTable,0, 0);
	m_pArmconfig->setLayout(vboxConfig);
}

updateSegments() {
m_numberseg = m_pSelectSeg->value();
if (m_numberseg == 3) 
	{
	//hide table rows
	m_pSegTable->setRowHidden(0, false);
	m_pSegTable->setRowHidden(1, false);
	m_pSegTable->setRowHidden(2, false);
	
		for (int i=3; i<8; i++)
		{
		m_pSegTable->setRowHidden(i, true);
		}
	}
}