Probleme mit der Ausgabe

Alles rund um die Programmierung mit Qt
Antworten
soulsofpetro
Beiträge: 16
Registriert: 3. Dezember 2006 16:57

Probleme mit der Ausgabe

Beitrag von soulsofpetro »

Hallo Leute,

ich habe folgendes Problem:
Ich will in meinem MainWindow ein QGridLayout indem sich Widgets befinden erstellen.
So sieht das ganze aus:

MainWindow::MainWindow(QWidget *parent)
:QWidget(parent)
{

QGridLayout *gridLayout = new QGridLayout;
for(int i = 0 ; i < 3; ++i)
for(int j = 0 ; j < 3 ; ++j)
{
QColor color(249, 228, 147);
QWidget *widget = new Character(color, "a", false);
gridLayout->addWidget(widget, i, j);
}

setLayout(gridLayout);

}

in der main sieht es dann so aus:

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

MainWindow window;
window.show();

return app.exec();
}

Wenn ich das ganze nun starte, kommen blitzen nacheinander alle Widgets auf (so kommt es mir jedenfalls vor) und verschwinden wieder.
kann mir jemand sagen was ich hier falsch mache?
Danke im Voraus.
soulsofpetro
Beiträge: 16
Registriert: 3. Dezember 2006 16:57

Beitrag von soulsofpetro »

hat denn niemand einen tip?
sollte ich das gridlayout in ein extra widget setzen?
denn eigentlich ist ja mein mainwindow schon ein qwidget.
dontinelli
Beiträge: 146
Registriert: 22. September 2006 20:53

Beitrag von dontinelli »

In der Doku fügensie das QGridLayout in eine GroupBox. Warum solltest du es anders machen???

Code: Alles auswählen

void Dialog::createGridGroupBox()
 {
     gridGroupBox = new QGroupBox(tr("Grid layout"));
     QGridLayout *layout = new QGridLayout;

     for (int i = 0; i < NumGridRows; ++i) {
         labels[i] = new QLabel(tr("Line %1:").arg(i + 1));
         lineEdits[i] = new QLineEdit;
         layout->addWidget(labels[i], i + 1, 0);
         layout->addWidget(lineEdits[i], i + 1, 1);
     }

     smallEditor = new QTextEdit;
     smallEditor->setPlainText(tr("This widget takes up about two thirds of the "
                                  "grid layout."));
     layout->addWidget(smallEditor, 0, 2, 4, 1);

     layout->setColumnStretch(1, 10);
     layout->setColumnStretch(2, 20);
     gridGroupBox->setLayout(layout);
 }
Cheers
Don Tinelli
Antworten