Seite 1 von 1

QGridLayout

Verfasst: 3. August 2005 16:44
von c++coder
hi, leute
ich hab ein kleines problem mit QGridLayout,
ich will der combobox und der lineEdit mehr abstand und beide sollen gleich gross sein, den Button will ich auch kleiner machen!
leider bekomm ich das mit setGeometry nicht hin;-(
aktueller screen liegt mit bei...

Code: Alles auswählen

  
QLineEdit *lineEdit = new QLineEdit("1111111");
QTextEdit *textEdit = new QTextEdit;
QLabel *Label = new QLabel("GSM Netz");
QLabel *Label2 = new QLabel("Handynummer");
QLabel *Label3 = new QLabel("Ihre Nachricht");
QComboBox *Combo = new QComboBox;
QPushButton *Button = new QPushButton("SMS Senden");
    
Combo->addItem("T-Mobile (676)");
Combo->addItem("A1 (664)");
Combo->addItem("One (699)");
Combo->addItem("Telering (650)");
Combo->addItem("Drei (660)");
Combo->addItem("Tele2 (668)");

QGridLayout *layout = new QGridLayout;
layout->addWidget(Label, 0, 0);
layout->addWidget(Label2, 0, 1);
layout->addWidget(Combo, 1, 0);
layout->addWidget(lineEdit, 1, 1);
layout->setRowMinimumHeight(2, 10); 
layout->addWidget(Label3, 3, 0);
layout->addWidget(textEdit, 4, 0, 3, 2);
layout->addWidget(Button, 7, 1);

setLayout(layout);  

setWindowTitle(tr("SMS-Sender"));
resize(300, 240);
bye

Re: QGridLayout

Verfasst: 4. August 2005 07:22
von macman
c++coder hat geschrieben:leider bekomm ich das mit setGeometry nicht hin;-(
Guck Dir mal die Doku zu QGridLayout an, vor allem setColumnStretch, setRowStretch und setMargin. Wenn Dir setMargin nicht zusagt, weil es die Abstände rundrum definiert, dann muß eben ein Spacer dazwischen.

hm

Verfasst: 7. August 2005 15:55
von c++coder
hab mit QSpacerItem probiert...aber das schaut schrecklich aus....alles kreuz und quer..;-(

cu

Verfasst: 7. August 2005 23:36
von FlorianBecker
Nimm ein QWidget mit fester breite.

hm

Verfasst: 8. August 2005 21:23
von c++coder
hm...zeig mal wie du das meinst...
ich will jetzt nur mal ne combobox und eine lineedit die gleich gross ist machen....und dazwischen einen abstand....
mir kommt vor ich hab das falsche layout...das sind sehr eigenartig aus..;-(
cu

Verfasst: 8. August 2005 21:31
von FlorianBecker
| COMBO | <-- WIDGET (Feste Breite) --> | LINEEDIT |

??? Das ist ein KDE Hack für z.B. Abstände mit ToolBars usw.

Re: QGridLayout

Verfasst: 10. August 2005 11:20
von siik
c++coder hat geschrieben: ich will der combobox und der lineEdit mehr abstand
Sag mal ... du hast doch hier schonmal genau das selbe gefragt, nur dass du diesmal keinen horizontalen sondern einen vertikalen Abstand haben möchtest. Da hab ich dich auf QGridLayout::setRowMinimumHeight( int row, int minSize ) hingewiesen, und wie ich sehe, hast du das in deinem Code auch verwendet. Wenn du jetzt einfach mal einen Blick in die Doku wirfst, wirst du sehen, dass es sowas auch für Spalten gibt.
und beide sollen gleich gross sein, den Button will ich auch kleiner machen!
leider bekomm ich das mit setGeometry nicht hin;-(
Nimm doch einfach setSize( int, int ), oder, falls die Größe fest bleiben soll, setFixedSize( int, int ).

Button etwas grösser machen

Verfasst: 14. August 2005 16:31
von c++coder
hi,
ich habs nun geschafft, bis auf die button grösse schauts schon mal gut aus...
mit das layout hat aber leider kein setSize !?
und so klappts auch nicht: Button->resize(100, 100);
lg g+thx

Code: Alles auswählen

    QLineEdit *lineEdit = new QLineEdit("1111111");
    QTextEdit *textEdit = new QTextEdit;
    QLabel *Label = new QLabel("GSM Netz");
    QLabel *Label2 = new QLabel("Handynummer");
    QLabel *Label3 = new QLabel("Ihre Nachricht");
    QComboBox *Combo = new QComboBox;
    Combo->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Fixed); 
    QPushButton *Button = new QPushButton("SMS Senden");
    QVBoxLayout *layout = new QVBoxLayout;
    QGridLayout *layout1 = new QGridLayout;
    QHBoxLayout *layout2 = new QHBoxLayout;
    QSpacerItem *spacer1 = new QSpacerItem(23, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);
    QSpacerItem *spacer2 = new QSpacerItem(23, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);
    QSpacerItem *spacer3 = new QSpacerItem(23, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);
    
    Combo->addItem("T-Mobile (676)");
    Combo->addItem("A1 (664)");
    Combo->addItem("One (699)");
    Combo->addItem("Telering (650)");
    Combo->addItem("Drei (660)");
    Combo->addItem("Tele2 (668)");

    layout1->addWidget(Label, 0, 0);
    layout1->addItem(spacer1, 0, 1);
    layout1->addWidget(Label2, 0, 2);
    layout1->addWidget(Combo, 1, 0);
    layout1->addItem(spacer2, 1, 1);
    layout1->addWidget(lineEdit, 1, 2);
    
    layout2->addItem(spacer3);
    layout2->addWidget(Button);
    
    layout->addLayout(layout1);
    layout->addWidget(textEdit);
    layout->addLayout(layout2);
    
    setLayout(layout);

Re: Button etwas grösser machen

Verfasst: 16. August 2005 12:03
von siik
c++coder hat geschrieben:hi,
ich habs nun geschafft, bis auf die button grösse schauts schon mal gut aus...
mit das layout hat aber leider kein setSize !?
Hä? Du willst doch das Line Edit und die Combo Box gleich groß machen, was hat das mit dem Layout zu tun? Natürlich kannst du einem Layout keine Größe geben.

button

Verfasst: 19. August 2005 22:40
von c++coder
hm will nur button etwas grösser machen! cu

Verfasst: 20. August 2005 17:47
von siik
Ok, setSize( int, int ) gibts tatsächlich nicht, aber es gibt genügend Slots um die Größe festzulegen: http://doc.trolltech.com/4.0/qpushbutton-members.html