Layout

Alles rund um die Programmierung mit Qt
Antworten
Nvidia
Beiträge: 238
Registriert: 22. Februar 2010 21:23

Layout

Beitrag von Nvidia »

Hallo,
wie sag ich dem Widget in einem Layout, das es sich so viel Platz nehmen soll, wie es Platz hat?
Mit showMaximed(); funktioniert das aber in der Doku steht das funktioniert nur unter Windows.
Außerdem streickt die Funktion bei einem leeren QLabel, welches gefärbt ist, irgentwie auch.
gruß nvidia
padreigh
Beiträge: 340
Registriert: 13. Mai 2010 10:06

Beitrag von padreigh »

gabs da nicht sowas wie:

Code: Alles auswählen

setSizePolicy ( QSizePolicy::Policy horizontal, QSizePolicy::Policy vertical )
Patrick (QtCreator 1.3.1, Qt 4.6.3)
---
template = subdirs
Nvidia
Beiträge: 238
Registriert: 22. Februar 2010 21:23

Beitrag von Nvidia »

das funktioniert bei mir nicht so ganz:
ich hab das hier

Code: Alles auswählen

    QSizePolicy q(QSizePolicy::Ignored,
QSizePolicy::Ignored,QSizePolicy::Label);
    show->setSizePolicy(q);
nach der Doku:
The sizeHint() is ignored. The widget will get as much space as possible.

funktioniert aber irgentiwe nicht wirklich, es bleibt immer noch klein
padreigh
Beiträge: 340
Registriert: 13. Mai 2010 10:06

Beitrag von padreigh »

Code: Alles auswählen

QWidget * wid = new QWidget;
wid->setSizePolicy(QSizePolicy::MinimumExpanding,QSizePolicy::MinimumExpanding);
Das sorgt dafür das das Widget expandiert bis es seine maximumSize() erreicht hat (bzw. falls nicht gesetzt bis kein platz mehr da). Wenn du Meherere Widgets in einem Layout hast musst du den anderen logischerweise zB QSizePolicy::Minimum (o.ä.) zuweisen, sonst geiern die auch nach mehr Platz. Wenn du möchtest das ein Widget immer doppelt soviel Platz kriegt wie das andere (bei gleicher SizePolicy) sind die SizeStretch von SizePolicy dein Freund ...

QLabel:
Warum schauste nicht in die QLabel was es da für Methoden so gibt?

Code: Alles auswählen

int main( int argc, char** argv ) 
{
    QApplication app(argc, argv);

    QPicture picture;
    QPainter painter;
    painter.begin(&picture);           // paint in picture
    painter.drawEllipse(10,20, 80,70); // draw an ellipse
    painter.end();                     // painting done

    QWidget w;
    QVBoxLayout lay;
    QLabel l1("label");
    QLabel l2;
    l2.setScaledContents(true); // wie wärs hiermit ....
    l2.setPicture(picture);
    lay.addWidget(&l1);
    lay.addWidget(&l2);
    w.setLayout(&lay);
    w.show();
    return app.exec();
}
Patrick (QtCreator 1.3.1, Qt 4.6.3)
---
template = subdirs
Antworten