Hallo Liste, ich habe eine Frage bezüglich dem QGridLayout und einem QLineEdit. Folgender Code ist bei mir gegeben: QGridLayout *gridArtikelTop = new QGridLayout; gridArtikelTop->addWidget(nameLabel, 0, 0); gridArtikelTop->addMultiCellWidget(nameEdit, 0, 0, 1, 2); gridArtikelTop->addWidget(kategorieLabel, 0, 3); gridArtikelTop->addMultiCellWidget(kategorie, 0, 0, 4, 6); gridArtikelTop->addWidget(beschreibungLabel, 1, 0); gridArtikelTop->addMultiCellWidget(beschreibungEdit, 1, 1, 1, 6); gridArtikelTop->addWidget(mengeLabel, 2, 0); gridArtikelTop->addWidget(mengeEdit, 2, 1); gridArtikelTop->addWidget(einheitLabel, 3, 0); gridArtikelTop->addWidget(einheitEdit, 3, 1); gridArtikelTop->addWidget(sollWacheLabel, 2, 3); gridArtikelTop->addWidget(sollWache, 2, 4); gridArtikelTop->addWidget(sollRTWLabel, 2, 5); gridArtikelTop->addWidget(sollRTW, 2, 6); gridArtikelTop->addWidget(sollKTWLabel, 3, 5); gridArtikelTop->addWidget(sollKTW, 3, 6); QVBoxLayout *LayoutArtikelMain = new QVBoxLayout(Artikel); LayoutArtikelMain->setMargin(11); LayoutArtikelMain->setSpacing(6); LayoutArtikelMain->addLayout(gridArtikelTop); LayoutArtikelMain->addWidget(artikleUebersicht); Es wird auch alles soweit richtig angezeigt, bis auf mengeEdit und einheitEdit. obwohl beide nur in einer Spalte sind und nameEdit in zwei Spalten erscheinen alle 3 Felder ziemlich gleich lang. Wie kann ich für die zwei erstgenannten Felder die minimale Länge oder eine definierte Länge angeben?? habe in der Doku schon geschaut, werde daraus aber nicht ganz schlau. Gruß aus dem verschneiten Nürnberg Thomas -- Thomas Wedehase Nuernberg, Germany www.thomaswedehase.com PGP-KEY: 0x3337F9AC "The day Microsoft makes something that doesn't suck is probably the day they start making vacuum cleaners." -Ernst Jan Plugge
On Monday 14 February 2005 22:07, Thomas Wedehase wrote:
Es wird auch alles soweit richtig angezeigt, bis auf mengeEdit und einheitEdit. obwohl beide nur in einer Spalte sind und nameEdit in zwei Spalten erscheinen alle 3 Felder ziemlich gleich lang. Wie kann ich für die zwei erstgenannten Felder die minimale Länge oder eine definierte Länge angeben??
Du kannst für jede Spalte und auch für jede Zeile einen "Ausdehnungsfaktor" angeben - QGridLayout::setColStretch(). Spalten/Zeilen, die sich gar nicht ausdehnen sollen, bekommen hier einfach 0, andere einen höheren Wert. Der Wert gibt jeweils das Verhältnis an, wie überschüssiger Platz auf die jeweilige Spalte/Zeile verteilt werden soll. Wenn alle den Wert 1 bekommen, wird dieser Platz gleich verteilt. Die Doku sagt auch ganz klar, daß der Default zwar 0 ist, daß aber in genau diesem Fall (wenn alle den Faktor 0 haben) diese 0 schlicht ignoriert wird, weil ja überschüssiger Platz _irgendwo_ untergebracht werden muß. Eine andere - flexiblere - Möglichkeit ist es, für einzelne Widgets eine SizePolicy zu setzen. Dabei kann man für vertikal und horizontal jeweils angeben, ob sich ein Widget beliebig ausdehnen und/oder verkleinern darf, eine fixe Größe haben soll (die sich dann aus SizeHint() ergibt) oder vorzugsweise den SizeHint() berücksichtigen soll und sich dann ggf. noch ausdehnen darf. Siehe auch QWidget::setSizePolicy().
habe in der Doku schon geschaut, werde daraus aber nicht ganz schlau.
Ja, das haben sie recht gut versteckt, die Trolls. ;-)
Viele Grüße aus der (genauso verschneiten) Nordstadt Nürnbergs
--
Stefan Hundhammer
Am Tuesday 15 February 2005 11:33 schrieb Stefan Hundhammer:
On Monday 14 February 2005 22:07, Thomas Wedehase wrote:
Es wird auch alles soweit richtig angezeigt, bis auf mengeEdit und einheitEdit. obwohl beide nur in einer Spalte sind und nameEdit in zwei Spalten erscheinen alle 3 Felder ziemlich gleich lang. Wie kann ich für die zwei erstgenannten Felder die minimale Länge oder eine definierte Länge angeben??
Du kannst für jede Spalte und auch für jede Zeile einen "Ausdehnungsfaktor" angeben - QGridLayout::setColStretch(). Spalten/Zeilen, die sich gar nicht ausdehnen sollen, bekommen hier einfach 0, andere einen höheren Wert. Der Wert gibt jeweils das Verhältnis an, wie überschüssiger Platz auf die jeweilige Spalte/Zeile verteilt werden soll. Wenn alle den Wert 1 bekommen, wird dieser Platz gleich verteilt.
Die Doku sagt auch ganz klar, daß der Default zwar 0 ist, daß aber in genau diesem Fall (wenn alle den Faktor 0 haben) diese 0 schlicht ignoriert wird, weil ja überschüssiger Platz _irgendwo_ untergebracht werden muß.
Eine andere - flexiblere - Möglichkeit ist es, für einzelne Widgets eine SizePolicy zu setzen. Dabei kann man für vertikal und horizontal jeweils angeben, ob sich ein Widget beliebig ausdehnen und/oder verkleinern darf, eine fixe Größe haben soll (die sich dann aus SizeHint() ergibt) oder vorzugsweise den SizeHint() berücksichtigen soll und sich dann ggf. noch ausdehnen darf. Siehe auch QWidget::setSizePolicy().
habe in der Doku schon geschaut, werde daraus aber nicht ganz schlau.
Ja, das haben sie recht gut versteckt, die Trolls. ;-)
Ist es möglich mir einen kleinen Ausschnitt zukommen zu lassen, wo ich die Anwendung sehen kann. Bin noch relativ neu in qt3 und irgendwie steh ich auf der Leitung.
Viele Grüße aus der (genauso verschneiten) Nordstadt Nürnbergs -- Stefan Hundhammer
Penguin by conviction. YaST2 Development SUSE Linux Products GmbH Nuernberg, Germany
-- Thomas Wedehase Nuernberg, Germany www.thomaswedehase.com PGP-KEY: 0x3337F9AC "The day Microsoft makes something that doesn't suck is probably the day they start making vacuum cleaners." -Ernst Jan Plugge
On Tuesday 15 February 2005 18:16, Thomas Wedehase wrote:
Ist es möglich mir einen kleinen Ausschnitt zukommen zu lassen, wo ich die Anwendung sehen kann. Bin noch relativ neu in qt3 und irgendwie steh ich auf der Leitung.
Einfach in den mitgelieferten Qt-Beispielen (ggf. Paket qt3-examples
nachinstallieren), z.B. in /usr/lib/qt3/doc/examples/widgets/widgets.cpp für
setColStretch() - damit kannst du einfach rumexperimentieren.
Für SizePolicy z.B. /usr/lib/qt3/doc/examples/regexptester/regexptester.cpp.
Und nein, ein _triviales_ selbergestricktes Beispiel habe ich nicht und werde
ich auch nicht extra schreiben - selbst ist der Mann. ;-)
Die Beispiele, die ich so zu bieten hätte, hast Du auch als Sourcen - aber ich
bezweifle, daß Du die YaST2-Qt-UI in voller Schönheit einfach so
nachvollziehen kannst (YQPackageSelector.cc, YQWizard.cc)...
CU
--
Stefan Hundhammer
habe es ja nun doch noch geschafft, werde mir deine Beispiele trotzdem mal anschauen. Danke für die Hilfe! Am Tuesday 15 February 2005 18:36 schrieb Stefan Hundhammer:
On Tuesday 15 February 2005 18:16, Thomas Wedehase wrote:
Ist es möglich mir einen kleinen Ausschnitt zukommen zu lassen, wo ich die Anwendung sehen kann. Bin noch relativ neu in qt3 und irgendwie steh ich auf der Leitung.
Einfach in den mitgelieferten Qt-Beispielen (ggf. Paket qt3-examples nachinstallieren), z.B. in /usr/lib/qt3/doc/examples/widgets/widgets.cpp für setColStretch() - damit kannst du einfach rumexperimentieren.
Für SizePolicy z.B. /usr/lib/qt3/doc/examples/regexptester/regexptester.cpp.
Und nein, ein _triviales_ selbergestricktes Beispiel habe ich nicht und werde ich auch nicht extra schreiben - selbst ist der Mann. ;-)
Die Beispiele, die ich so zu bieten hätte, hast Du auch als Sourcen - aber ich bezweifle, daß Du die YaST2-Qt-UI in voller Schönheit einfach so nachvollziehen kannst (YQPackageSelector.cc, YQWizard.cc)...
CU -- Stefan Hundhammer
Penguin by conviction. YaST2 Development SUSE Linux Products GmbH Nuernberg, Germany
-- Thomas Wedehase Nuernberg, Germany www.thomaswedehase.com PGP-KEY: 0x3337F9AC "The day Microsoft makes something that doesn't suck is probably the day they start making vacuum cleaners." -Ernst Jan Plugge
Am Tuesday 15 February 2005 11:33 schrieb Stefan Hundhammer:
On Monday 14 February 2005 22:07, Thomas Wedehase wrote:
Es wird auch alles soweit richtig angezeigt, bis auf mengeEdit und einheitEdit. obwohl beide nur in einer Spalte sind und nameEdit in zwei Spalten erscheinen alle 3 Felder ziemlich gleich lang. Wie kann ich für die zwei erstgenannten Felder die minimale Länge oder eine definierte Länge angeben??
Du kannst für jede Spalte und auch für jede Zeile einen "Ausdehnungsfaktor" angeben - QGridLayout::setColStretch(). Spalten/Zeilen, die sich gar nicht ausdehnen sollen, bekommen hier einfach 0, andere einen höheren Wert. Der Wert gibt jeweils das Verhältnis an, wie überschüssiger Platz auf die jeweilige Spalte/Zeile verteilt werden soll. Wenn alle den Wert 1 bekommen, wird dieser Platz gleich verteilt.
Die Doku sagt auch ganz klar, daß der Default zwar 0 ist, daß aber in genau diesem Fall (wenn alle den Faktor 0 haben) diese 0 schlicht ignoriert wird, weil ja überschüssiger Platz _irgendwo_ untergebracht werden muß.
Eine andere - flexiblere - Möglichkeit ist es, für einzelne Widgets eine SizePolicy zu setzen. Dabei kann man für vertikal und horizontal jeweils angeben, ob sich ein Widget beliebig ausdehnen und/oder verkleinern darf, eine fixe Größe haben soll (die sich dann aus SizeHint() ergibt) oder vorzugsweise den SizeHint() berücksichtigen soll und sich dann ggf. noch ausdehnen darf. Siehe auch QWidget::setSizePolicy().
habe in der Doku schon geschaut, werde daraus aber nicht ganz schlau.
Ja, das haben sie recht gut versteckt, die Trolls. ;-)
Hab es nach langem testen, doch noc geschafft das gewünschte Ergebnis zu erreichen, jedoch auf einem anderen Weg: gridArtikelTop->addWidget(sollKTW, 3, 6); gridArtikelTop->setColStretch(1, 0); gridArtikelTop->setColStretch(2, 5); Es funktioniert, weiß aber nicht ob es die eleganteste Lösung ist. Gruß, ebenfalls aus der Nordstadt. Thomas
Viele Grüße aus der (genauso verschneiten) Nordstadt Nürnbergs -- Stefan Hundhammer
Penguin by conviction. YaST2 Development SUSE Linux Products GmbH Nuernberg, Germany
-- Thomas Wedehase Nuernberg, Germany www.thomaswedehase.com PGP-KEY: 0x3337F9AC "The day Microsoft makes something that doesn't suck is probably the day they start making vacuum cleaners." -Ernst Jan Plugge
participants (2)
-
Stefan Hundhammer
-
Thomas Wedehase