[gelöst] Anfängerproblem mit QScrollArea (Qt 4.2.3/Windows)

Alles rund um die Programmierung mit Qt
Antworten
xdecrepitx
Beiträge: 9
Registriert: 11. Juli 2007 23:32
Wohnort: Winterthur, Schweiz

[gelöst] Anfängerproblem mit QScrollArea (Qt 4.2.3/Windows)

Beitrag von xdecrepitx »

Hallo Forum

Irgendwie stehe ich auf dem Schlauch, denn ich möchte eigentlich etwas ganz simples machen und kriegs einfach nicht hin.

Ich habe eine MainWindow-App, diese enthält einen Splitter, im unteren Teil des Splitters gibt es ein QTabWidget und in die Tab-Pages sollen grössere Formulare reinkommen. Da die Formulare aufgrund ihrer Grösse nie und nimmer komplett angezeigt werden können, soll am rechten Rand der Tag-Pages ein Scrollbar angezeigt werden. Im Screenshot habe ich den ersehnten Scrollbar als roten Strich gezeichnet. Eigentlich ist es nichts anderes als das was in der QTableView im oberen Teil automatisch passiert.

Ich versuche nun, dieses Ziel unter Verwendung einer QScrollArea zu erreichen - bisher leider erfolglos.

Wenn ich das Ganze recht verstehe, hat die QScrollArea ein Parent und ist selber dem Widget, welches gescrollt werden soll, ein Parent. In meinem Fall also QTabWidget (mainTab) -> QScrollArea (scrollArea) -> QWidget (customerEditArea).

Untenstehend mein Versuch, dies zu codieren. Leider führt es nicht zum gewünschten Ergebnis, sondern sieht so aus: Screenshot.

Weiss jemand Rat?

Code: Alles auswählen

mainTab 		= new QTabWidget(this);
customerEditArea    = new QWidget(); // erste Tab-Page
feedbackEditArea    = new QWidget(); // zweite Tab-Page
	
QVBoxLayout *customerLayout 	= new QVBoxLayout();

// damit ein bisschen was in der Tab-Page steht ein paar QLineEdits...
QLineEdit	*customerTextEdit1	= new QLineEdit();
QLineEdit	*customerTextEdit2	= new QLineEdit();
QLineEdit	*customerTextEdit3	= new QLineEdit();
QLineEdit	*customerTextEdit4	= new QLineEdit();
	
customerLayout->addWidget(customerTextEdit1);
customerLayout->addWidget(customerTextEdit2);
customerLayout->addWidget(customerTextEdit3);
customerLayout->addWidget(customerTextEdit4);

customerEditArea->setMinimumSize(QSize(100, 100));
customerEditArea->setMaximumSize(QSize(16777215, 16777215));
customerEditArea->setLayout(customerLayout);
	
QScrollArea *scrollArea = new QScrollArea(mainTab);
scrollArea->setBackgroundRole(QPalette::Dark);
scrollArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAsNeeded);
scrollArea->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded);
scrollArea->setMinimumSize(QSize(100, 100));
scrollArea->setMaximumSize(QSize(16777215, 16777215));
scrollArea->setWidget(customerEditArea);

mainTab->addTab(customerEditArea,tr("Customer"));
mainTab->addTab(feedbackEditArea,tr("Feedback Form"));
Zuletzt geändert von xdecrepitx am 10. Oktober 2007 11:40, insgesamt 1-mal geändert.
q-tee
Beiträge: 32
Registriert: 17. September 2007 17:43

Beitrag von q-tee »

ich kann im moment nur raten, aber ich würde anstatt der vorletzten zeile das hier vorschlagen:

Code: Alles auswählen

mainTab->addTab(scrollArea,tr("Customer")); 
xdecrepitx
Beiträge: 9
Registriert: 11. Juli 2007 23:32
Wohnort: Winterthur, Schweiz

Beitrag von xdecrepitx »

q-tee hat geschrieben:ich kann im moment nur raten, aber ich würde anstatt der vorletzten zeile das hier vorschlagen:

Code: Alles auswählen

mainTab->addTab(scrollArea,tr("Customer")); 
Du bis sooo gut! Funktioniert einwandfrei!

Besten Dank! :)
Antworten