[gelöst]QGridLayout mit QDockWidget in QMainWindow ????

Alles rund um die Programmierung mit Qt
Antworten
Bang-Johansen
Beiträge: 43
Registriert: 11. Juli 2011 22:51

[gelöst]QGridLayout mit QDockWidget in QMainWindow ????

Beitrag von Bang-Johansen »

Hallo mal wieder,

ich (immer noch blutiger Anfänger) versuche, im QMainWindow (mit Menüs,Statusleiste) diverse
QPushbuttons,7-Segment Anzeigen, Qtextedit und ähnliches unterzubringen.
Ich habe jetzt mit QDockWindows experimentiert, aber es wird nur ein leeres Fenster angezeigt.

Beispiel:

Code: Alles auswählen

void MainWindow::CreateControls (void)
	{
	if (DebugLevel == 3) qDebug () << "Jetzt sollte die Kontrollelemente kommen kommen";
	ControlWidget = new QDockWidget(tr("Steuerung"), this);
	ControlWidget->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
	ControlWidget->setFeatures (QDockWidget::NoDockWidgetFeatures);
	Layout = new QGridLayout ();
	ButtonSteuerung01 = new QPushButton("Steuerung 0/1");
  	ButtonSteuerung01->setGeometry(200, 40, 90, 30); 
	ButtonReferenzFahrt = new QPushButton("Referenzfahrt");
  	ButtonReferenzFahrt->setGeometry(200, 40, 90, 30); 
	Layout->addWidget(ButtonSteuerung01,0,0);
	Layout->addWidget(ButtonReferenzFahrt,1,0);
	ControlWidget->setLayout(Layout);
	addDockWidget(Qt::RightDockWidgetArea, ControlWidget);
}

Irgendwas mache ich falsch.
Würde mir bitte jemand mal einen Tipp geben ?

Außerdem ist QDockWidget eigentlich nicht das, was ich brauche.
Ich würde gerne im gesamten QMainWindget irgendwelche Fester mit diversen Größe an
diversen Stellen versehen, in denen ich Steuerelemente plazieren kann.
Diese Fenster sollten weder Fensterknöpfe und Fensterleisten besitzen.
Diese sollten weder verschoben noch geschlossen werden können.
Ich möchte nur, das diese nach Bedarf ein und ausgeblendet werden.

Welche Möglichkeiten von QT kann ich dafür nutzen ?
Nur sollte dies im Moment nicht zu kompliziert sein, da ich noch Anfänger bin.

Danke Euch allen

Bang Johansen
Zuletzt geändert von Bang-Johansen am 30. Juni 2012 22:23, insgesamt 1-mal geändert.
archer
Beiträge: 306
Registriert: 2. Februar 2006 09:56

Re: QGridLayout mit QDockWidget in QMainWindow ????

Beitrag von archer »

Du beschreibst doch schon fast alles.
Deine Fenster sind QWidgets. Die kommen in ein oder mehrere Layouts, je nach Wunsch.
Auf die QWidget kannst du dann ein hide() oder ein show() machen je nach wunsch.
Bang-Johansen
Beiträge: 43
Registriert: 11. Juli 2011 22:51

Re: QGridLayout mit QDockWidget in QMainWindow ????

Beitrag von Bang-Johansen »

Hallo,

das sollte also mit normalen QWidgets gehen.
Nehmen wir mal an, es sollen insgesamt 4 einzelne QWidget auf der gesamten Fläche von QMainWindows kachelartig
verteilt werden.
Ich erstelle die 4 QWidgets, soweit kein Problem.
Nur wie docke ich diese QWidget in das QMainWindow fest ein ???
Ich kann zwar mit setGeometry Größe und Position festlegen, aber geht das auch anders ?

An diesem problem hapert es jetzt.
Hat jemand mal bitte ein wenig Beispielcode ?

danke
Bang-Johansen
archer
Beiträge: 306
Registriert: 2. Februar 2006 09:56

Re: QGridLayout mit QDockWidget in QMainWindow ????

Beitrag von archer »

Dazu gibt es Layouts.
Nimm ein QGridLayout mit zwei Reihen und zwei Spalten.
Das kommen dann die vier QWidgets hinein.
Dann kommt das Gridlayout ins Mainwindow.
Schau dir die Beispiele in der Dokumentation zu Layouts an.
Bang-Johansen
Beiträge: 43
Registriert: 11. Juli 2011 22:51

Re: QGridLayout mit QDockWidget in QMainWindow ????

Beitrag von Bang-Johansen »

Hallo an alle, :D

habe das Problem gelöst.

Ich hatte von einem Beispiel aus einem QT Buch eine Art Grundgerüst übernommen und damit
mein MainWindow mit Menus u.s.w. erstellt.
Dann habe ich halt angefangen, das Programm Stück für Stück zu erweitern.
Das Hauptproblem war, das die Klasse mainwindow eine Ableitung von QMainWindow war, so daß ich
anscheinend das Layout in MainWindow nicht mehr ändern konnte.
Habe jetzt die Ableitung auf QDialog (wie im Beispiel bei QT) abgeändert, teilweise die Methoden von MainWindow umgeschrieben
und jetzt geht erst mal alles so, wie es sollte.

Nochmal herzlichen Dank an alle

Bang Johansen
Antworten