Designercode Qt 4.4 / 4.3.4

Alles rund um die Programmierung mit Qt
Antworten
pfid
Beiträge: 535
Registriert: 22. Februar 2008 16:59

Designercode Qt 4.4 / 4.3.4

Beitrag von pfid »

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:

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); 
Qt 4.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 *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);
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.
Zuletzt geändert von pfid am 15. Juli 2008 09:00, insgesamt 1-mal geändert.
Thorsten
Beiträge: 55
Registriert: 29. Dezember 2004 22:47
Wohnort: Aachen

Beitrag von Thorsten »

Gib dem Layout einfach einen aussagekräftigen!!! Namen im designer. Wenn du das Objekt im designer löscht, geht natürlich auch der Name verlohren. Das ist aber sicher besser, als sich auf irgendwelche automatisch erzeugten Namen zu verlassen.
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag von macman »

Thorsten hat geschrieben:Gib dem Layout einfach einen aussagekräftigen!!! Namen im designer.
Oh, das geht wieder? Tatsächlich, aber nur bei Qt4.4, bei Qt4.3 geht das nicht. Wurde auf jeden Fall langsam Zeit.
Die deutsche Schriftsprache ist case-sensitive. Außerdem gibt es eine Interpunktionsnorm. Wenn manch einer seine Programme genauso schlampig schreibt, wie sein Posting hier, dann sollte er es lieber bleiben lassen.
pfid
Beiträge: 535
Registriert: 22. Februar 2008 16:59

Beitrag von pfid »

Hm, also die Option gibts bei mir nicht. Wenn ich im Designer eine neue Dialog-Vorlage erstelle, ein Layout zuweise, und in die leere Fläche klicke, habe ich im Eigenschafts-Fenster unten (in rot) das Layout stehn.

In meinem Programm (bzw. dem entsprechenden .ui File) kann ich aber klicken wo ich will, nirdens bekomm ich ein Layout zum umbenennen.

Naja, jetzt weiß ich jedenfalls mal, dass es geht. Ich werd noch ein bisschen rumklicken, vielleicht treff ich die Stelle irgendwann.
Bin übrigens immer noch der Meinung, dass der Designer ein ziemlicher Schmerz ist. Da bau ich das Layout lieber von Hand... :?
Antworten