Designercode Qt 4.4 / 4.3.4
Verfasst: 7. Juli 2008 08:54
Hallo,
ich habe in meinem Programm u. A. auch ein Fenster das mit dem QtDesigner erzeugt wurde. Im Designer wurden auch 2 Layouts gesetzt. Zusätzlich greife ich im Programm noch an anderen Stellen auf das Layout zu, da ich u. A. nachträglich Widgets hinzufügen möchte.
Nun habe ich das Problem, dass der Qt-Designer bzw. make bei Qt 4.4 und 4.3.4 unterschiedlichen Code ausspuckt, was die Bezeichnung des Layouts angeht.
Qt 4.3.4:
Qt 4.4:
Es versteht sich von selbst, dass ich nun im Code kein einfaches
verticalLayout_2->addWidget()
mehr machen kann.
Gibt es einen bestimmten Grund, wieso der Designer das auf einmal anders benennt? Oder einen Workaround? Würde es genügen wenn ich das Layout im .ui File umbenenne? Wäre dann halt umsonst wenn ich das nächste mal im Designer das Layout anpasse.
ich habe in meinem Programm u. A. auch ein Fenster das mit dem QtDesigner erzeugt wurde. Im Designer wurden auch 2 Layouts gesetzt. Zusätzlich greife ich im Programm noch an anderen Stellen auf das Layout zu, da ich u. A. nachträglich Widgets hinzufügen möchte.
Nun habe ich das Problem, dass der Qt-Designer bzw. make bei Qt 4.4 und 4.3.4 unterschiedlichen Code ausspuckt, was die Bezeichnung des Layouts angeht.
Qt 4.3.4:
Code: Alles auswählen
~/] grep -i layout myclass.ui
<layout class="QGridLayout" >
<layout class="QVBoxLayout" name="verticalLayout" >
</layout>
<layout class="QVBoxLayout" name="verticalLayout_2" >
</layout>
</layout>
~/] qmake-qt4
~/] make
~/] grep -i layout ui_myclass.h
#include <QtGui/QGridLayout>
#include <QtGui/QVBoxLayout>
QGridLayout *gridLayout;
QVBoxLayout *vboxLayout;
QVBoxLayout *vboxLayout1;
gridLayout = new QGridLayout(centralwidget);
gridLayout->setSpacing(6);
gridLayout->setMargin(9);
gridLayout->setObjectName(QString::fromUtf8("gridLayout"));
vboxLayout = new QVBoxLayout(tabTasks);
vboxLayout->setObjectName(QString::fromUtf8("vboxLayout"));
vboxLayout->addWidget(splitter_2);
vboxLayout1 = new QVBoxLayout(tabBugs);
vboxLayout1->setObjectName(QString::fromUtf8("vboxLayout1"));
vboxLayout1->addWidget(frameBugsOptions);
gridLayout->addWidget(tabWidget, 0, 0, 1, 1);
Code: Alles auswählen
~/] grep -i layout myclass.ui
<layout class="QGridLayout" >
<layout class="QVBoxLayout" name="verticalLayout" >
</layout>
<layout class="QVBoxLayout" name="verticalLayout_2" >
</layout>
</layout>
~/] qmake-qt4
~/] make
~/] grep -i layout ui_myclass.h
#include <QtGui/QGridLayout>
#include <QtGui/QVBoxLayout>
QGridLayout *gridLayout;
QVBoxLayout *verticalLayout;
QVBoxLayout *verticalLayout_2;
gridLayout = new QGridLayout(centralwidget);
gridLayout->setSpacing(6);
gridLayout->setMargin(9);
gridLayout->setObjectName(QString::fromUtf8("gridLayout"));
verticalLayout = new QVBoxLayout(tabTasks);
verticalLayout->setObjectName(QString::fromUtf8("verticalLayout"));
verticalLayout->addWidget(splitter_2);
verticalLayout_2 = new QVBoxLayout(tabBugs);
verticalLayout_2->setObjectName(QString::fromUtf8("verticalLayout_2"));
verticalLayout_2->addWidget(frameBugsOptions);
gridLayout->addWidget(tabWidget, 0, 0, 1, 1);
verticalLayout_2->addWidget()
mehr machen kann.
Gibt es einen bestimmten Grund, wieso der Designer das auf einmal anders benennt? Oder einen Workaround? Würde es genügen wenn ich das Layout im .ui File umbenenne? Wäre dann halt umsonst wenn ich das nächste mal im Designer das Layout anpasse.