Seite 1 von 1

QGridLayout (QT4.2)

Verfasst: 28. Juli 2006 14:23
von killerjoe
Hallo,

ich habe mir ein von QMainWindow abgeleitetes Widget erstellt und da verschiedene Dinge mit hilfe eines QGridLayouts positioniert. Nur sind bei mir alle Elemnte oben links in der ecke, ganz egal wie ich den Code unten änder. Ist da ein ganz grober Fehler drin? Finden da einfach keine logik wieso das falsch ist.

Code: Alles auswählen

MeinMainWidget::MeinMainWidget(QWidget *parent, Qt::WindowFlags flags)
    : QMainWindow(parent, flags)
{
    this->resize(QSize(676, 466).expandedTo(this->minimumSizeHint()));

    gridLayout = new QGridLayout(this);
    gridLayout->setSpacing(6);
    gridLayout->setMargin(11);
    gridLayout->setObjectName(QString::fromUtf8("gridLayout"));

    textBrowser = new QTextBrowser(this);
    textBrowser->setObjectName(QString::fromUtf8("textBrowser"));
    gridLayout->addWidget(textBrowser, 2, 0, 1, 4);

    lineEdit1 = new QLineEdit(this);
    lineEdit1->setObjectName(QString::fromUtf8("lineEdit1"));
    gridLayout->addWidget(lineEdit1, 1, 0, 1, 3);

    btn_x = new QPushButton(this);
    btn_x->setObjectName(QString::fromUtf8("btn_x"));
    btn_x->setMinimumSize(QSize(0, 27));
    gridLayout->addWidget(btn_x, 1, 3, 1, 1);

    btn_uber = new QPushButton(this);
    btn_uber->setObjectName(QString::fromUtf8("btn_uber"));
    QSizePolicy sizePolicy(static_cast<QSizePolicy::Policy>(0), static_cast<QSizePolicy::Policy>(0));
    sizePolicy.setHorizontalStretch(0);
    sizePolicy.setVerticalStretch(0);
    sizePolicy.setHeightForWidth(btn_uber->sizePolicy().hasHeightForWidth());
    btn_uber->setSizePolicy(sizePolicy);
    gridLayout->addWidget(btn_uber, 0, 3, 1, 1);
    setLayout(gridLayout);
}

vielleicht kann mir ja hier jemand einen Tip geben!

Thx!
Markus

Verfasst: 7. August 2006 13:38
von killerjoe
Nur um das ganze mal eben aufzulösen:

Ein QMainWindow kann kein Layout bekommen. Man kann es aber mit:

Code: Alles auswählen

    QWidget *center;
    center = new QWidget(this);
    setCentralWidget(center);
trotzdem so hinbekommen wie man will, man gibt dann einfach center das Layout!

Markus