[gelöst] QScrollArea verkleinert Inhalt bis zur Unlesbarkeit

Alles rund um die Programmierung mit Qt
Antworten
Luftballon
Beiträge: 29
Registriert: 10. Mai 2009 20:03

[gelöst] QScrollArea verkleinert Inhalt bis zur Unlesbarkeit

Beitrag von Luftballon »

Moin Moin!

Mein Programm listet MC-Fragen (TplQuestion, abgeleitet von QWidget) untereinander. Allerdings ist die Liste länger als die vertikale Fläche eines Bildschirms. Ein zuvor verwendeter QFrame, der die Widgets der Fragen aufnimmt, ging über den unteren Bildschirmrand hinaus. Ich würde es gerne so einrichten, dass das Fenster bis maximal zum unteren Bildschirmrand reicht, dann endet und die restlichen Fragen über das Rollen mit einem Scrollbar erreicht werden können. Um dies zu erreichen verwende ich jetzt statt des QFrame eine QScrollArea. Allerdings wird nun der Inhalt in dieser QScrollArea verkleinert und zwar so, dass man den Inhalt nicht mehr erkennen kann. Ich möchte aber, dass alle Widgets weiterhin in der Standardgröße angezeigt werden.

Wie es aktuell ausschaut, zeigt der Screenshot im Anhang.

Die Anweisung "area->setWidgetResizable(false)" hat keine Abhilfe geschaffen.

Wo liegt das Problem?

Würde mich über Hilfe riesig freuen!

Beste Grüße,
der Luftballon

mainwindow.cpp (uninteressante Bereiche durch [...] ersetzt

Code: Alles auswählen

#include "mainwindow.h"
#include "tplQuestion.h"
#include <QtCore>
#include <QtGui>
#include <QtSql>

MainWindow::MainWindow( QWidget * parent, Qt::WFlags f) : QMainWindow(parent, f) {	
	[..]
		
	// Hauptfenster
	resize(640,480);
	setWindowTitle("Qt-Test");
	area	= new QScrollArea(this);
	QVBoxLayout *VBox	= new QVBoxLayout(area);
	
	// Menü
	QMenu *fileMenu = new QMenu(tr("&Datei"), this);
	menuBar()->addMenu(fileMenu);
	fileMenu->addAction(QIcon("./images/cancel.png"), tr("Neue Frage..."), qD, SLOT(exec()), QKeySequence(tr("Ctrl+N", "Datei|Neue Frage...")));
	fileMenu->addAction(QIcon("./images/cancel.png"), tr("Beenden..."), this, SLOT(close()), QKeySequence(tr("Ctrl+X", "Datei|Beenden")));
	
	// Verbindungen
	[...]
	
	// Abfrage der Datenbank und Erstellen der Fragen-Templates
	[...]
		
	while( query.next() ) {
		QHash<QString, QVariant> hash;
		[...]		
		tpl[i] = new TplQuestion(hash);
		VBox->addWidget(tpl[i]);
		i++;
	}	
	
	// Ausgabe
	setCentralWidget(area);
}
Dateianhänge
nach_Programmstart.png
nach_Programmstart.png (16.95 KiB) 1271 mal betrachtet
Zuletzt geändert von Luftballon am 22. Mai 2009 19:04, insgesamt 1-mal geändert.
Luftballon
Beiträge: 29
Registriert: 10. Mai 2009 20:03

Beitrag von Luftballon »

Ich habe das Problem lösen können.

1. hatte ich QScrollArea::addWidget() und nicht QScrollArea::setWidget() verwendet

und

2. weise ich jetzt der QScrollArea eine QWidget zu, das als Container für TplQuestion dient.
Antworten