Elemente in einer Schleife auf zwei Spalten in einem GridLayout aufteilen



  • Juten Morgen,

    ich frage mich gerade ob es nicht eine einfachere Methode gibt Elemente in einer Schleife auf zwei Spalten in einem GridLayout aufzuteilen. Was mir gerade eingefallen ist funktioniert zwar, aber hier sind ja genug Profis am Start, die vielleicht eine noch elegantere Lösung in Petto haben.
    Hier mal der relevante Codeschnipsel:

    for (int i = 0; i < mod_rows_n; ++i) {
    	.
    	.
    	.
    
    	int row = i / 2, col = 0;
    	if (i % 2 != 0) {
    		col = 1;
    	}
    	layout_mod_matrix_->addLayout(layout_mod_matrix_row, row, col, Qt::AlignCenter);
    	.
    	.
    	.
    }
    


  • Da i % 2 sowieso nur die Werte 0 und 1 annehmen kann, kannst du diesen Ausdruck auch direkt verwenden (oder aber deinen Code so kürzen: int col = i % 2; - bei der Zeile (row) hast du es ja auch so geschrieben. 😉 ).



  • Super danke, damit sieht das dann jetzt so aus:

    for (int i = 0; i < mod_rows_n; ++i) {
    .
        layout_mod_matrix_->addLayout(layout_mod_matrix_row, i / 2, i % 2, Qt::AlignCenter);
    .
    }
    


  • col = !col

    viel billiger.

    for (int i = 0; i < mod_rows_n / 2; i += 2) {
        layout_mod_matrix_->addLayout(layout_mod_matrix_row, i,     0, Qt::AlignCenter);
        layout_mod_matrix_->addLayout(layout_mod_matrix_row, i + 1, 1, Qt::AlignCenter);
    }       
    


  • Danke für die Alternative. Leider passiert in der Schleife noch viel mehr, es werden alle Widgets erstellt und konfiguriert. Wenn ich die Schleife von der Länge halbiere, muss ich doppelt so viel Code schreiben oder mir was anderes einfallen lassen. Nichts desto trotz auch ein interessanter Vorschlag.



  • Nix Problem, Arkadaş.


Log in to reply