Seite 1 von 1

QTreeWidget in QDockWidget lässt die Size eklig verändern

Verfasst: 7. Juli 2010 23:45
von forgoden
Hallo,

ich hab QTreeWidget in QDockWidget erzeugt. Dadurch wird die Fenstergröße von QDockWidget verändert. Es ist glaub ich die Standardgröße von QTreeWidget.

Ich will aber wieder die ursprüngliche Größe, etwa ~145pixel wight

mit resize schon versucht.
Mit setMaximumSize kann man es zwar erzwingen, aber dann kann der Anwender es nicht größer machen.

Der code sieht so aus:

Code: Alles auswählen

	dockWidgetObjectManager = new QDockWidget(this);
    dockWidgetContentsObjectManager = new QTreeWidget();


dockWidgetObjectManager->setWindowTitle(QApplication::translate("MainWindowClass", "Objekt-Manager", 0, QApplication::UnicodeUTF8));
	dockWidgetObjectManager->setWidget(dockWidgetContentsObjectManager);
    addDockWidget(Qt::LeftDockWidgetArea, dockWidgetObjectManager);

folgendes geht nicht:

dockWidgetContentsObjectManager->resize(145,145);
dockWidgetObjectManager->resize(145,145);

Verfasst: 8. Juli 2010 09:05
von upsala
Warum gerade 145 Pixel, wo kommt diese Zahl her?

Verfasst: 8. Juli 2010 10:02
von forgoden
die hab ich ausgewählt, damit die Breite etwa so ausschaut wie im Projektmappen-Explorer z.b.

Verfasst: 8. Juli 2010 11:29
von forgoden
wieso funktioniert das auch nicht?

treeWidget->setColumnWidth(0,40);

wenn nur eine Spalte ist.
Immer nur nachträglich mit der Hand???

wieso ist so etwas banales in qt nicht zu erreichen?

Verfasst: 8. Juli 2010 12:20
von upsala
Und wenn ich jetzt soetwas banales wie die Schriftgröße von meinem System ändere, passen die 145 Pixel auch noch?

Verfasst: 8. Juli 2010 22:54
von forgoden
Was willst du damit sagen? Es gibt schon eine Lösung. Mit QResizeEvent von geerbten QDockWidget auf setGeometry von QTreeWidget connecten. Aber es ist ein Umweg und ist behindert...

Verfasst: 8. Juli 2010 23:01
von upsala
Das Vorhaben an sich ist völlig unnötig und der connect wird auch nicht funktionieren.

Verfasst: 8. Juli 2010 23:18
von forgoden
doch auf slot geht es schon


private slots:

Code: Alles auswählen

void MainWindow::setsize(QSize size) {
	treeWidget->setGeometry(0,0,size.width(), size.height()-20);
}
geerbte QDockWidget Methode

Code: Alles auswählen

void DockWidgetOM::resizeEvent(QResizeEvent *event) {
	emit status_size(this->size());
}
mainwindow

Code: Alles auswählen

connect( dockWidgetObjectManager, SIGNAL( status_size(QSize)), this, SLOT(setsize(QSize)));
dockWidgetObjectManager ist der geerbte QDockWidget (DockWidgetOM) welchem treeWidget trägt.