QWidget verändern/aktualisieren
Verfasst: 10. Juli 2008 12:46
Hallo ich habe in einer Ui ein Widget folgendermaßen erzeugt (Auszug):
Dies geschieht bei der Initialisierung. Er lädt auch die Klasse Liste. Allerdings will ich nun in diese Klasse Liste (ist ein QWidget) weitere HBoxen einfügen. Habe dies folgendermaßen versucht:
Das Widget Einheit soll bei klicken eines Buttons eingefügt werden. Durch Konsolenausgaben weiß ich auch, dass das Programm die Hinzufügefunktion bei klicken besucht, sollte also funktionieren.
In der Klasse in welcher der erste Codeteil steht, habe ich versuchsweise nun noch:
eingefügt, doch er gibt mir nur das "TEST" aus. Wie kann ich nachträglich ein QWidget verändern, bzw. Elemente hinzufügen?
Habs mit dem Designer versucht, doch dieser spuckt mir ähnlichen Code aus, nur dass er diesen ja beim starten des Programms ausführt, und das Design nachträglich nicht mehr verändert werden kann.
Code: Alles auswählen
verticalLayout = new QWidget(centralwidget);
verticalLayout->setObjectName(QString::fromUtf8("verticalLayout"));
verticalLayout->setGeometry(QRect(100, 0, 491, 651));
vboxLayout = new QVBoxLayout(verticalLayout);
vboxLayout->setObjectName(QString::fromUtf8("vboxLayout"));
vboxLayout->setContentsMargins(0, 0, 0, 0);
liste = new Liste(verticalLayout);
liste->setObjectName(QString::fromUtf8("liste"));
vboxLayout->addWidget(liste);Code: Alles auswählen
horizontalLayout = new QWidget(this);
horizontalLayout->setObjectName(QString::fromUtf8("horizontalLayout"));
horizontalLayout->setGeometry(QRect(30, 20, 371, 111));
hboxLayout = new QHBoxLayout(horizontalLayout);
hboxLayout->setObjectName(QString::fromUtf8("hboxLayout"));
hboxLayout->setContentsMargins(0, 0, 0, 0);
QSizePolicy::Expanding, QSizePolicy::Minimum);
einheit = new Einheit(horizontalLayout);
einheit->setObjectName(QString::fromUtf8("einheit"));
hboxLayout->setSpacing(1);
hboxLayout->addWidget(recheneinheit);
//this->update();
emit rechneradded();In der Klasse in welcher der erste Codeteil steht, habe ich versuchsweise nun noch:
Code: Alles auswählen
void mainapp::test(){
std::cout<<"TEST";
//liste->repaint();
vboxLayout->update();
}Habs mit dem Designer versucht, doch dieser spuckt mir ähnlichen Code aus, nur dass er diesen ja beim starten des Programms ausführt, und das Design nachträglich nicht mehr verändert werden kann.