2010-07-15 5 views
5

Ich mache Änderungen an einem Formular in Creator, aber wenn ich die Änderungen erstelle, werden sie nicht "aktualisiert". Ich bin so weit gegangen, jedes Element aus dem Formular zu entfernen und jedes Stylesheet loszuwerden, aber wenn ich das Projekt erstelle, bekomme ich das gleiche Ergebnis; als hätte ich nie eine Veränderung vorgenommen. Was gibt? Fehle ich etwas Offensichtliches? (offensichtlich für alle, aber ich .. offensichtlich)Qt Creator Problem. UI-Änderungen werden nicht angezeigt, wenn das Projekt erstellt wird

+0

Ich habe es versäumt zu erwähnen, dass dieses Projekt in einer früheren Version von Qt Creator erstellt wurde und ich v2.0 verwende ... – Jacob

Antwort

9

Ich nehme an, Sie verwenden QtCreator 2.0? Ich habe das selbe seltsame Problem gefunden. Sie haben zwei Optionen:

  • Entfernen Sie die ui_{the_name_of_design}.h aus dem Build-Verzeichnis des Projekts. Führen Sie dann erneut qmake aus.
  • make clean oder beim Aufbau → Rebuild All

Aber die zweite Option auch bei mir nicht helfen. Übrigens ist es gut, ein anderes Build-Verzeichnis zu verwenden als das, wo die Quellen sind. Wenn einige Änderungen scheinbar nicht angewendet werden, löschen Sie einfach den Inhalt von build dir, und alles geht auch gut.

Prost

+1

Wenn du 'ui_mainwindow' in deinem Projektordner hast, entferne das und starte 'qmake' wieder für das Erstellen dieser Datei :) –

+0

Gleiches gilt auch für spätere Versionen von Qt (Ersteller), hatte das gleiche Problem mit der Version 3.5.0. – user1931751

1

Wahrscheinlich Ursache, wenn das Ihre make-Prozedur die Änderungen in der .ui-Datei nicht bemerkt, und so ruft es nicht das uic-Tool. Versuchen Sie, eine make clean zu tun, um zu sehen, ob es hilft, und überprüfen Sie Ihr Build-Protokoll, um zu sehen, ob uic aufgerufen wird.

0

Einige Vorschläge:

  • eine make distclean Perform.
  • Verwenden Sie ein Shadow-Build-Verzeichnis. Es wird davon abgeraten, "innerhalb" des Quellcodes zu bauen.
  • Überprüfen Sie die Uhr Ihres Computers und das Datum und die Uhrzeit Ihrer Dateien.
1

Für mich war die Lösung die BuildDirectory in das gleiche Verzeichnis zu ändern, in dem der Code anstelle des ** - build-Desktop-Verzeichnis.

0

Dieser Thread ist ein wenig altmodisch, aber da ich in dem gleichen Problem gefangen war dachte ich, ich würde teilen, wie ich das gelöst habe. Ich habe inkrementell ein UI mit Designer unter QtCreator 2.4.1/Qt 4.8.1 aufgebaut, indem ich den Source-Control-Ansatz eines armen Mannes benutze: Snapshots. Irgendwann habe ich versehentlich ein Projekt ohne Schatten erstellt. In einem nachfolgenden Snapshot habe ich das Projekt zurück in den Shadow-Build umgewandelt und zu diesem Zeitpunkt wurden neue Widgets, die im ui-Formular hinzugefügt wurden, nicht mehr im Build erkannt. Lösung: Löschen Sie veraltete ui_ .h-Dateien aus dem Quellverzeichnis. Löschen Sie make und ui_ .h Dateien von Ihrem Shadaow Build-Verzeichnis. Rebuild Neueste generierte ui_ .h-Dateien werden wieder im Shadow-Build-Verzeichnis angezeigt. Keine Kopien von ui_ .h-Dateien werden im Quellverzeichnis angezeigt, um anzuzeigen, dass die veralteten Dateien in der Erstellungsreihenfolge Vorrang hatten. Nicht offensichtlich.

+0

Ist das nicht das gleiche wie die angenommene Antwort? – Leeor

0

Ich habe dieses Problem und ich löse es, indem ich den Projektpfad ändere. Ich hatte das Projekt in meinem Flash-Speicher gespeichert, als ich dieses Problem hatte, dann kopiere ich den Projektordner und seinen Build-Ordner auch auf dem Desktop und öffne es mit QtCreator und das Problem wurde gelöst.

0

Problem ist in der Tat abgestanden generierte Dateien im Projektquellverzeichnis. Dies kann sowohl bei genierten ui_*.h Dateien, als auch bei moc_*.* Dateien vorkommen. Die folgenden Antworten werden nicht behandelt:

Um generierte Dateien aus dem Projektquellverzeichnis zu entfernen, ohne Qt Creator-Einstellungen oder aktuelle Shadowbuild-Verzeichnisse zu beeinflussen, gibt es zwei prinzipielle Möglichkeiten, die auch kombiniert werden können zusätzliche Abdeckung.

  1. Zum Qt-Eingabeaufforderung, gehen Quellverzeichnis zu projizieren und diese Befehle ausführen:

    qmake -r 
    make clean 
    make distclean 
    

    1. ein rekursiv Makefiles erstellen. 2. wird alle Dateien entfernen, die durch das Erstellen des Projekts erstellt wurden. Der dritte wird die Makefiles wieder entfernen. Verwenden Sie dann weiterhin den Schattenaufbau von Qt Creator wie zuvor.

    Das Problem dabei ist, es wird Dateien verlassen, die nicht Teil des Projekts sind. Wenn also einige Dateien aus dem Projekt entfernt wurden, bleiben verwandte generierte Dateien möglicherweise erhalten und verursachen Probleme, wenn Dateien mit demselben Namen wieder hinzugefügt werden. Also auch danach ist es eine gute Idee zu überprüfen, dass keine ui_* oder moc_* Dateien bleiben, wenn Sie wissen, dass Sie Dateien aus dem Projekt entfernt haben.

  2. Verwenden Sie Ihre Versionsverwaltungssoftware, um zuerst alle nicht festgeschriebenen Änderungen zu bestätigen oder zu speichern/zu verwerfen, und entfernen Sie dann alle nicht versionierten (auch ansonsten ignorierten) Dateien. Für einige Versionskontrollsoftware ist dies möglicherweise nicht einfach, wie git clean -dxf (Achtung, das wird auch nicht gemachte Änderungen und die benutzerdefinierten Projekteinstellungen von Qt Creator verlieren), und in diesem Fall kann es einfacher sein, das Quellverzeichnis des Projekts zu entfernen und einen sauberen Checkout zu erhalten.

    Das Problem damit ist, wenn einige generierte Dateien versehentlich zum Projekt hinzugefügt wurden, werden sie damit nicht bereinigt. Es ist also immer noch eine gute Idee, den obigen Schritt 1 zu machen.

oben genannten Schritte sollten synchron sein, so dass nach dem Schritt 1, werden alle Dateien in Quellverzeichnis (außer Qt Creators des projectname.pro.user und mögliche *~ Backup-Dateien) unter in der Versionskontrolle sein sollte.

1

Ich stolperte auch über dieses Problem und eine Sache, die ich bemerkte, war, dass mein Programm immer noch im Hintergrund lief, ohne dass ich es wusste. Wenn Sie die Task über den Task-Manager beenden, wird sie repariert und Sie können die Änderungen erneut vornehmen.

Verwandte Themen