PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : QButtonGroup (Layout)-Problem



Ginsengelf
10-03-2004, 12:55
Moin, leider ich schon wieder :(

Ich möchte einen kleinen Dialog basteln, scheitere jedoch schon an dessen Layout:


class Popup : public QWidget
{
public:
Popup(QWidget *parent=0, const char *name=0);
~Popup();
private:
QVButtonGroup *vbgroup;
QRadioButton *radio1;
QRadioButton *radio2;
};


Popup::Popup(QWidget *parent, const char *name) : QWidget( parent, name )
{
vbgroup = new QVButtonGroup("Funktion", this);

radio1 = new QRadioButton(vbgroup);
radio1->setText("c = c²+k");

radio2 = new QRadioButton(vbgroup);
radio2->setText("c = c³+k");
}


soll einfach eine ButtonGroup mit zwei Radiobuttons erzeugen.
Das ganze wird im Hauptprogramm so aufgerufen:


QDialog *dialog = new QDialog(&vbox);
Popup *popup = new Popup(dialog);


Es popt jetzt auch ein Fenster auf, nur sieht es aus wie im Anhang zu sehen, es wird nur ein Button angezeigt, und der sitzt auch noch auf der unteren Begrenzungslinie der ButtonGroup.

wie bringe ich das Ding jetzt dazu, beide Buttons richtig anzuzeigen, so dass es aussieht, wie hier (http://doc.trolltech.com/3.2/qvbuttongroup.html) ?
Es scheinen beide Buttons angelegt zu werden, zumindest gibt count() eine "2" aus.

Danke, Ginsengelf

anda_skoa
10-03-2004, 21:38
Das schaut ein bischen komisch aus, vorallem der vbox Parent für den Dialog.

Im Designer ginge es am einfachsten, wenn du aus irgendeinem Grund keinen Designer benutzen darfst, kannst du zB ausgehend vom Dialog template einen entsprechen gelayouteten Dialog erzeugen, dann mit uic Header und Source erzeugen und nachsehen, wie es gemacht wird.

Ich schätze so in etwa



MyDialog::MyDialog(QWidget* parent, const char* name) : QDialog(parent, name)
{
QLayout* layout = new QVBoxLayout(this);
buttongroup = new QButtonGroup(this);
layout->addWidget(group);

layout = new QVBoxLayout(group);
button1 = new QRadioButton(group);
layout->addWidget(button1);
button2 = new QRadioButton(group);
layout->addWidget(button2);
}


Ciao,
_

Ginsengelf
11-03-2004, 11:19
Moin, danke für den Tip(p) mit uic, das hat wirklich geholfen.
Dass ich die Klasse von QDialog ableiten sollte, ist mir später auch aufgegangen, und anscheinend war es nur ein Problem der Positionierung.
uic hat im Prinzip dasselbe vorgeschlagen, wie ich anfangs auch, nur mit einem setGeometry() Aufruf für die Buttons und die Buttongroup. Und jetzt sitzen sie schön brav untereinander.

Ginsengelf

Namron
02-07-2004, 12:15
Hallo^^

Habe auch ein Layout Problem mit meiner ButtonGroup.
Ich habe mir meine ButtonGroup mit einigen Checkboxen also erstellt.
Kann zwar die Position der ButtonGroup bestimmen möchte ich aber auch die Position der Checkboxen bestimmen....habe aber keine ahnung wie :confused:

Habe nicht viel ahnung von QT :/

Schonmal vielen dank für eure Hilfe! :)

Mfg Namron

anda_skoa
02-07-2004, 13:12
Stell mal das Widget im Designer so zusammen, wie du es aussehen lassen willst.

Dann hängst du das .ui File davon an und einer von uns layoutet es für dich.

Ciao,
_

Namron
02-07-2004, 13:17
Mit dem QDesigner arbeite ich nicht.
Ich schreibe den Quelltext im Editor (Kate) und kompiliere das dann mit der Konsole :/

Ich will eben nur die Positionen der Checkboxen einzeln verschieben können!

Ich dachte das es vllt mit "setGeometry" geht, klappt aber auch nicht.

Mfg Namron

anda_skoa
02-07-2004, 14:14
Du brauchst ja im Endprodukt nicht mit dem Designer zu arbeiten, auch wenn mir nicht ganz klar ist, welchen Gründe man außer Masochismus dafür haben könnte.

Mach erstmal das Layouting in Designer und sieh dir den generierten Code an.
Dann machst du einfach das selbe nochmal händisch.

Ciao,
_

Namron
02-07-2004, 14:33
Also...ich hab jetzt mal ein paar checkboxen im QDesigner angelegt...gespeichert....und mir mal den Quelltext angeguckt....naja, war irgendwie nur wirrwarr :eek:

Kann auch sein das ich was falsch gemacht hab.....wie muss ich es denn machen, benutze ja den Designer zum ersten mal.

Weißt du denn nicht wie man das auch ohne den Designer macht kann? :/ @anda

Mfg Namron

Boron
02-07-2004, 16:35
Einfache Layouts wie in einer QButtonGroup sind doch kein Problem (@anda_skoa : selbst ohne Designer ;)).

- QButtonGroup erstellen
- Gewünschtes Layoutobjekt hinzufügen (meist QVBox; oder QHBox oder ganz was anderes)
- Buttons (Radio oder Check) in das zuvor erstellte Layout einfügen.

Et voilá!

anda_skoa
03-07-2004, 03:49
Ist schon klar, dass es auch ohne Designer geht, aber speziell wenn man noch nicht viel mit Layouts gearbeitet hat, ist das direkte visuelle Feedback einfach wichtig.

Vorallem für das Beobachten der Auswirkungen von verschiedenen SizePolicies, etc.

Ciao,
_