Auf QWidget in GridBox zugreifen

Alles rund um die Programmierung mit Qt
Antworten
Okeanos
Beiträge: 14
Registriert: 16. Juli 2009 20:19

Auf QWidget in GridBox zugreifen

Beitrag von Okeanos »

Hallo,

ich habe zahlreiche comboBoxes in einem GridLayout angeordnet und versuche jetzt auf einzelne Elemente abhängig von Spalte und Zeile zuzugreifen. Allerdings stoße ich dabei auf Probleme.

Folgendes Beispiel soll mein Problem verdeutlichen:

Code: Alles auswählen

#include <QApplication>
#include <QGridLayout>
#include <QComboBox>

int main(int argc, char** argv){
	QApplication app(argc, argv);
	QWidget *win = new QWidget;
	QGridLayout *layout = new QGridLayout(win);

	for (int i = 0; i < 10; i++){
		QComboBox *mybox = new QComboBox;
		mybox->addItem("Test");
		mybox->addItem("Test2");

		layout->addWidget(mybox, i / 2, i % 2);
	}

	layout->itemAtPosition( 0, 0 )->widget()->findChild<QComboBox *>()->setCurrentIndex(1);

	win->show();
	return app.exec();
}
Es will mir einfach nicht gelingen, den INdex einer comboBox in zu verändern, wenn ich Spalte und Zeile direkt angebe. Offensichtlich wird ein Null-Pointer zurückgegeben, aber ich weiß einfach nicht, was ich falsch mache. Kann mir jemand helfen?
Xairo
Beiträge: 9
Registriert: 30. März 2009 19:10

Beitrag von Xairo »

Code: Alles auswählen

    QComboBox* c = qobject_cast<QComboBox*>(layout->itemAtPosition(0, 0)->widget());
    c->setCurrentIndex(1);
statt

Code: Alles auswählen

layout->itemAtPosition(0, 0)->widget()->findChild<QComboBox *>()->setCurrentIndex(1); 
Hier wird im QComboBox nach weiteren Kindern gesucht. Was wohl nicht gewünscht ist.

Dann klappt es bei mir.
Okeanos
Beiträge: 14
Registriert: 16. Juli 2009 20:19

Beitrag von Okeanos »

Vielen Dank für die Hilfe, das war genau, was ich gesucht habe.
Antworten