Seite 1 von 1

Designer benutzen oder nicht benutzen,das ist hier die Frage

Verfasst: 4. Juni 2006 15:56
von grosem
Hi,
ich fange gerade mit QT an und wollte mich an die Tutorien der Dokumentation halten. Inzwischen habe ich auch den Designer entdeckt und wollte einfach mal nachfragen: Lohnt es sich, sich weiter damit zu beschäftigen? Was hat er für Grenzen, was für Nachteile? Oder sollte man doch lieber alles per Hand machen?

Danke für die Antworten (wenn's hier schon irgendwo einen Thread darüber gibt, habe ich ihn wohl übersehen :? )

Verfasst: 4. Juni 2006 18:38
von the_immortal
Da ich vor paar wenigen Tagen mit Qt begonnen habe, kann ich dir kurz aus meiner Sicht berichten.

Ich habe ein bisschen mit dem Designer rumgespielt und dann ein kleiner Teil des GUI's den ich für das Projekt benötige im Designer gezeichnet; ein Paar QSplitter, QFrame etc. Dannach hab ich mir den Code angeschaut und meinen weiteren Bedürfnissen angepasst. Nun verwende ich einfach die Docu von Qt und mache alles im Code. Wenn man die Grundlagen ein bisschen intus hat denke ich ist man von Hand schneller.


Viel Spass!

Verfasst: 4. Juni 2006 19:13
von BartSimpson
Ich benutze fast überall den Designer. Da mal teilweise viel Zeit sparrt gerade bei umfangreiceren Dialogen. Und kann man sich das ergebnis sofort anschauen. Ohne den Compiler anwerfen zu müssen.

Verfasst: 4. Juni 2006 20:01
von upsala
Also ich finde den Designer schon sehr nützlich, vor allem bei umfangreichen Dialogen/Widgets. Das einzige was ich vermisse, ist es daß man aus .ui-Files fertige Klassen machen kann (seit QT4)...

Verfasst: 4. Juni 2006 20:12
von Sym
Ich nutze solchen Designer eigentlich ungerne. Ich habe da mit Dreamweaver schon oft komischen Code bekommen. Irgendwie hat sich das auf den Rest bei mir ausgewirkt. ;)

Verfasst: 4. Juni 2006 20:12
von BartSimpson
kann man doch. Einfach ableiten:)
Die die Qt3 variante war eh eine Katastophe

Verfasst: 5. Juni 2006 10:03
von patrik08
Der designer qt4 richtig eingesetzt .... kann wahre wunder vollbringen ....
ich habe gesehen dass viele leuten die sql formulare vermissen mit dem qt3...

Im qt4 && designer habe ich es fertig bekommen automatische sql-insert update und automatische aufuellen von QLineEdit oder QComboBox zu machen..

Ohne nur einen feldnamen von hand zu schreiben im code.... (sondern nur im designer...)

Ich benenne einfach die QLineEdit & QComboBox objektnamen mit den feldnamen von der sql tabelle... mit einem DB_ vorann "DB_FELDNAME"....

Einfach in der classe die objekte abspeichern....
setupUi( this );
textList= this->findChildren<QLineEdit *>();
boxList= this->findChildren<QComboBox *>();

Dann kann man die perfekte insert/update vollbringen...
und die editierbare QComboBox haben eintragen von andere zeilen .. damit der user sie nicht neu schreiben muss...

aufuellen so....

Code: Alles auswählen

   
         /* QLineEdit editable true */
        for (int i=0;i<textList.size();i++){
            obname =QString(textList[i]->objectName());
            if (obname.startsWith("DB_")) {
               dbfieldname = obname.right(obname.size() - 3);
               textList[i]->setText(ItemAddo(dbfieldname,dbid));
               qlinedb.append(dbfieldname);                
            }                
         } 
         /* QComboBox editable true */
         int activateatebd = 0;
         for (int i=0;i<boxList.size();i++){
            obname =QString(boxList[i]->objectName());
            if (obname.startsWith("DB_")) {  /* exeption here */
               dbfieldname = obname.right(obname.size() - 3);
               /*qDebug() << "### dbfieldname "  << dbfieldname; */
                boxList[i]->clear();
                QString running = ItemAddo(dbfieldname,dbid);  /* grab current value */
                boxList[i]->addItem(running);
                                QStringList actual = Query_List_Unique(QString( "SELECT DISTINCT %1 FROM CLIENTE order by %1" ).arg( dbfieldname ));
                                QStringListIterator o(actual);
                                while (o.hasNext()) {
                                    QString nowset = QString(o.next());
                                    boxList[i]->addItem(nowset);
                                }
                boxList[i]->setEditable(true);
               qboxCdb.append(dbfieldname);                
            }                
         } 
         
         
QString Tab_Addo::ItemAddo(QString feldname , int id )
{
  QString resu ="";
  QString sqlop =QString("SELECT %1 FROM CLIENTE  WHERE ID=%2 LIMIT 1").arg( feldname , QString::number(id));
  QStringList oneitem = Query_List_Unique(sqlop);
  if (oneitem.count() == 1) {
  resu=oneitem.at(0);  
  }
  return resu;
}


und update so...

Code: Alles auswählen

         /* QLineEdit grab text */
        for (int i=0;i<textList.size();i++){
            obname =QString(textList[i]->objectName());
            if (obname.startsWith("DB_")) {
               dbfieldname = obname.right(obname.size() - 3);
               Text_att.insert(i,QStringList() << dbfieldname << textList[i]->text());  
               CopyToNew.insert(copyN++,QStringList() << dbfieldname << textList[i]->text());                
            }                
         }
         /* QComboBox grab text */
        for (int i=0;i<boxList.size();i++){
            obname =QString(boxList[i]->objectName());
               if (obname.startsWith("DB_")) {  /* exeption */
                   dbfieldname = obname.right(obname.size() - 3);
                   Box_att.insert(i+3,QStringList() << dbfieldname << boxList[i]->currentText());  /* 3 ++ moore at special policy*/
                   CopyToNew.insert(copyN++,QStringList() << dbfieldname << boxList[i]->currentText());                      
                                      
                }                
            } 
            
         /* build insert query qlineedit */
        QStringList setupqlines;
        UpdateQuery::Iterator it;
          for ( it = Text_att.begin(); it != Text_att.end(); ++it ) { 
            QStringList itemsetter = it.value(); 
            QString sx = QString(itemsetter.at(0))+"='"+QString(itemsetter.at(1))+"'";
            setupqlines.append(sx);
           }
        QString update_1 = setupqlines.join(", ");
        Text_att.clear(); /* tank and by */
        setupqlines.clear(); /* tank from qlinedit see you on combobox */
        QString queryUpdate = QString( "UPDATE CLIENTE SET %1 WHERE ID=%2" ).arg( update_1 , QString::number(dbid) );
        /*qDebug() << "### queryUpdate"  << queryUpdate; */
           ok1 = executeSQL(queryUpdate);
         /* build insert query combobox */
        UpdateQuery::Iterator de;
          for ( de = Box_att.begin(); de != Box_att.end(); ++de ) { 
            QStringList itembox = de.value(); 
            QString sxbox = QString(itembox.at(0))+"='"+QString(itembox.at(1))+"'";
            setupqlines.append(sxbox);
           }
        QString update_2 = setupqlines.join(", ");
        Box_att.clear(); /* tank and by */
        setupqlines.clear(); /* tank from combobox */
        QString queryUpdate1 = QString( "UPDATE CLIENTE SET %1 WHERE ID=%2" ).arg( update_2 , QString::number(dbid) );
        /*qDebug() << "### queryUpdate1"  << queryUpdate1; */
           ok2 = executeSQL(queryUpdate1);


Verfasst: 5. Juni 2006 11:27
von grosem
Ahja, vielen Dank. Dann werde ich ihm wohl auch eine Chance geben. Ist ja ungewöhnlich, bei den meisten Programmiersprachen schwören ja die meisten auf das "Selbermachen"...

Verfasst: 5. Juni 2006 11:44
von patrik08
Lese auch ..........

http://www.qtforum.de/forum/viewtopic.php?t=2192 in Snippets, Tipps & Tricks
http://www.qtforum.de/forum/viewforum.php?f=7

UI file ist dass xml resultat vom qt4 designer....

Verfasst: 5. Juni 2006 17:36
von grosem
Der Designer gefällt mir :D
Wie gesagt fange ich gerade an und habe die unteren Grundlagen bereits gemacht (zum Beispiel große Teile der Tutorien von der Dokumentation).

Aber irgendwie will das Einbinden der .ui Datei nicht klappen, ich habs mit dem "The Single Inheritance Approach" von der Qt Designer Manuel probiert und auch andere Anleitungen aus dem Forum benutzt mit jeweils verschiedenen Fehlern. Da das ganze ja relativ simpel aussieht und ich wohl irgendeinen Denkfehler habe, kann hier jemand ein ganz simples Beispiel posten (Button ändert Labeltext oder so was, kein Dialog, sondern ein Hauptfenster) mit allen Dateien im Anhang?

Vielen Dank :D

Verfasst: 5. Juni 2006 18:19
von WeeZer
Hab dir schnell mal was zusammen gebaut:

The Single Inheritance Approach
http://root.fragarea.org/temp/sample_SIA.zip

The Multiple Inheritance Approach
http://root.fragarea.org/temp/sample_MIA.zip

Verfasst: 5. Juni 2006 19:30
von grosem
WeeZer hat geschrieben:Hab dir schnell mal was zusammen gebaut:

The Single Inheritance Approach
http://root.fragarea.org/temp/sample_SIA.zip

The Multiple Inheritance Approach
http://root.fragarea.org/temp/sample_MIA.zip

Ein zieeeemlich dummer Denkfehler von mir, will ich gar nicht erzählen...
aber jetzt hab ich's. Dankeschön