Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. German
  4. Aktualisierte Objekt Namen werden nicht in der IDE erkannt

Aktualisierte Objekt Namen werden nicht in der IDE erkannt

Scheduled Pinned Locked Moved Solved German
7 Posts 4 Posters 782 Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • M Offline
    M Offline
    makopo
    wrote on last edited by makopo
    #1

    Hallo,

    ich arbeite mich gerade in Qt ein und habe eine Frage zu einer Fehlermeldung (no member names ... in Ui:Widget).

    Ich habe in meinem QWidget über die grafische Oberfläche zwei Button angelegt und im nachhinein die object names vergeben. In der Qt IDE werden die neuen objects names aber gar nicht angezeigt. Stattdessen werden noch die initialen Namen angezeigt. Testweise habe ich einen dritten Button erstellt. Dieser wird von der IDE gar nicht erkannt. So habe ich das umgsetzt:

    QT_BEGIN_NAMESPACE
    namespace Ui { class Widget; }
    QT_END_NAMESPACE
    
    class Widget : public QWidget
    {
        Q_OBJECT
    
    public:
        Widget(QWidget *parent = nullptr);
        ~Widget();
    
    private:
        Ui::Widget *ui;
    
        QPushButton* m_startButton;
        QPushButton* m_stopButton;
        QPushButton* m_test;
    
    };
    
    
    #include "widget.h"
    #include "ui_widget.h"
    
    Widget::Widget(QWidget *parent)
        : QWidget(parent)
        , ui(new Ui::Widget)
    {
        ui->setupUi(this);
        m_startButton = ui->startButton; // benannter Button, IDE findet nur den initialen Namen pushButton
        m_stopButton = ui->stopButton; // benannter Button, IDE findet nur den initialen Namen pushButton2
        m_test = ui->test;
    
        connect(m_startButton, SIGNAL(released()), this, SLOT(startVideo()));
    }
    
    Widget::~Widget()
    {
        delete ui;
    }
    

    Kann mir jemand helfen?

    Grüße

    J.HilkJ Pl45m4P 2 Replies Last reply
    0
    • M makopo

      Hallo,

      ich arbeite mich gerade in Qt ein und habe eine Frage zu einer Fehlermeldung (no member names ... in Ui:Widget).

      Ich habe in meinem QWidget über die grafische Oberfläche zwei Button angelegt und im nachhinein die object names vergeben. In der Qt IDE werden die neuen objects names aber gar nicht angezeigt. Stattdessen werden noch die initialen Namen angezeigt. Testweise habe ich einen dritten Button erstellt. Dieser wird von der IDE gar nicht erkannt. So habe ich das umgsetzt:

      QT_BEGIN_NAMESPACE
      namespace Ui { class Widget; }
      QT_END_NAMESPACE
      
      class Widget : public QWidget
      {
          Q_OBJECT
      
      public:
          Widget(QWidget *parent = nullptr);
          ~Widget();
      
      private:
          Ui::Widget *ui;
      
          QPushButton* m_startButton;
          QPushButton* m_stopButton;
          QPushButton* m_test;
      
      };
      
      
      #include "widget.h"
      #include "ui_widget.h"
      
      Widget::Widget(QWidget *parent)
          : QWidget(parent)
          , ui(new Ui::Widget)
      {
          ui->setupUi(this);
          m_startButton = ui->startButton; // benannter Button, IDE findet nur den initialen Namen pushButton
          m_stopButton = ui->stopButton; // benannter Button, IDE findet nur den initialen Namen pushButton2
          m_test = ui->test;
      
          connect(m_startButton, SIGNAL(released()), this, SLOT(startVideo()));
      }
      
      Widget::~Widget()
      {
          delete ui;
      }
      

      Kann mir jemand helfen?

      Grüße

      J.HilkJ Offline
      J.HilkJ Offline
      J.Hilk
      Moderators
      wrote on last edited by
      #2

      Hi @makopo und willkommen

      Leider ist deine Situation nicht so ungewöhnlich wie man denken sollte.

      Es ist so, Qt/QtCreator hat den sogenannten UiC der macht aus deiner Designer Vorlage kompatiblen C++ code. (Das ist eine Einbahnstraße und funktioniert nicht anders herum, nur so als Anmerkung)
      Wenn du etwas in deiner UI-Datei änderst, und speicherst das ab, wird der uic in der Regel ausgeführt.

      Leider klappt das nicht immer.
      In diesem Fall empfehle ich die manuelle Ausführung von qmake.
      Build-> Run qmake
      Erstellen -> qmake ausführen

      Die Ausführung von qmake erzwingt eine Ausführung der uic

      Mehr Informationen:
      https://doc.qt.io/qt-5/uic.html


      Be aware of the Qt Code of Conduct, when posting : https://forum.qt.io/topic/113070/qt-code-of-conduct


      Q: What's that?
      A: It's blue light.
      Q: What does it do?
      A: It turns blue.

      M Pl45m4P S 3 Replies Last reply
      1
      • J.HilkJ J.Hilk

        Hi @makopo und willkommen

        Leider ist deine Situation nicht so ungewöhnlich wie man denken sollte.

        Es ist so, Qt/QtCreator hat den sogenannten UiC der macht aus deiner Designer Vorlage kompatiblen C++ code. (Das ist eine Einbahnstraße und funktioniert nicht anders herum, nur so als Anmerkung)
        Wenn du etwas in deiner UI-Datei änderst, und speicherst das ab, wird der uic in der Regel ausgeführt.

        Leider klappt das nicht immer.
        In diesem Fall empfehle ich die manuelle Ausführung von qmake.
        Build-> Run qmake
        Erstellen -> qmake ausführen

        Die Ausführung von qmake erzwingt eine Ausführung der uic

        Mehr Informationen:
        https://doc.qt.io/qt-5/uic.html

        M Offline
        M Offline
        makopo
        wrote on last edited by
        #3

        @J-Hilk

        Hallo und vielen Dank für die hilfreiche Erklärung! :)

        Informationen dieser Art (also das es den UiC überhaupt gibt z.B.), hatte ich so nicht gefunden.

        Das Problem hat sich mittlerweile aber von selbst gelöst. Ich hatte den QtCreator mehrmals neu gestartet und irgendwann wurde die Button erkannt.

        Grüße

        1 Reply Last reply
        0
        • J.HilkJ J.Hilk

          Hi @makopo und willkommen

          Leider ist deine Situation nicht so ungewöhnlich wie man denken sollte.

          Es ist so, Qt/QtCreator hat den sogenannten UiC der macht aus deiner Designer Vorlage kompatiblen C++ code. (Das ist eine Einbahnstraße und funktioniert nicht anders herum, nur so als Anmerkung)
          Wenn du etwas in deiner UI-Datei änderst, und speicherst das ab, wird der uic in der Regel ausgeführt.

          Leider klappt das nicht immer.
          In diesem Fall empfehle ich die manuelle Ausführung von qmake.
          Build-> Run qmake
          Erstellen -> qmake ausführen

          Die Ausführung von qmake erzwingt eine Ausführung der uic

          Mehr Informationen:
          https://doc.qt.io/qt-5/uic.html

          Pl45m4P Offline
          Pl45m4P Offline
          Pl45m4
          wrote on last edited by Pl45m4
          #4

          @J-Hilk said in Aktualisierte Objekt Namen werden nicht in der IDE erkannt:

          Wenn du etwas in deiner UI-Datei änderst, und speicherst das ab, wird der uic in der Regel ausgeführt.

          Meiner Erfahrung nach eher nicht :)
          Wenn man nur die ui-Datei speichert, ohne zu builden oder gar das Programm auszuführen (was ja dann eh vorher builded) werden Änderungen am Interface oft nicht erkannt.

          Weiß nicht genau woran QtCreator/Designer das ausmacht, wann er automatisch builden sollte und wann nicht, aber oft wenn man 1-2 Widgets wie Buttons hinzufügt, muss man manuell builden, damit die im Code über ui->xxxx zu erreichen sind.

          Ich persönlich, wenn ich mit QtCreator arbeite, builde immer neu, wenn ich was an der ui geändert habe... Da spart man sich einiges an Fehlersuche, wenn Einstellungen an Widgets nicht übernommen worden. Wenn ein neues Widget ganz fehlt, fällt das ja schneller auf :)


          If debugging is the process of removing software bugs, then programming must be the process of putting them in.

          ~E. W. Dijkstra

          J.HilkJ 1 Reply Last reply
          0
          • M makopo

            Hallo,

            ich arbeite mich gerade in Qt ein und habe eine Frage zu einer Fehlermeldung (no member names ... in Ui:Widget).

            Ich habe in meinem QWidget über die grafische Oberfläche zwei Button angelegt und im nachhinein die object names vergeben. In der Qt IDE werden die neuen objects names aber gar nicht angezeigt. Stattdessen werden noch die initialen Namen angezeigt. Testweise habe ich einen dritten Button erstellt. Dieser wird von der IDE gar nicht erkannt. So habe ich das umgsetzt:

            QT_BEGIN_NAMESPACE
            namespace Ui { class Widget; }
            QT_END_NAMESPACE
            
            class Widget : public QWidget
            {
                Q_OBJECT
            
            public:
                Widget(QWidget *parent = nullptr);
                ~Widget();
            
            private:
                Ui::Widget *ui;
            
                QPushButton* m_startButton;
                QPushButton* m_stopButton;
                QPushButton* m_test;
            
            };
            
            
            #include "widget.h"
            #include "ui_widget.h"
            
            Widget::Widget(QWidget *parent)
                : QWidget(parent)
                , ui(new Ui::Widget)
            {
                ui->setupUi(this);
                m_startButton = ui->startButton; // benannter Button, IDE findet nur den initialen Namen pushButton
                m_stopButton = ui->stopButton; // benannter Button, IDE findet nur den initialen Namen pushButton2
                m_test = ui->test;
            
                connect(m_startButton, SIGNAL(released()), this, SLOT(startVideo()));
            }
            
            Widget::~Widget()
            {
                delete ui;
            }
            

            Kann mir jemand helfen?

            Grüße

            Pl45m4P Offline
            Pl45m4P Offline
            Pl45m4
            wrote on last edited by Pl45m4
            #5

            Gut dass es jetzt funktioniert :)

            @makopo said in Aktualisierte Objekt Namen werden nicht in der IDE erkannt:

            m_startButton = ui->startButton; // benannter Button, IDE findet nur den initialen Namen pushButton
            m_stopButton = ui->stopButton; // benannter Button, IDE findet nur den initialen Namen pushButton2
            m_test = ui->test;

            Will jetzt nicht dein Design in Frage stellen und weiß ja auch nicht was du genau vor hast, aber normalerweise ist das nicht notwendig.
            Wenn du die Buttons in der Klasse Widget nutzen willst, brauchst du keine zusätzlichen privaten Member der Buttons, da sie ja eh von überall, innerhalb der Klasse über ui->buttonName erreichbar sind :)


            If debugging is the process of removing software bugs, then programming must be the process of putting them in.

            ~E. W. Dijkstra

            1 Reply Last reply
            0
            • Pl45m4P Pl45m4

              @J-Hilk said in Aktualisierte Objekt Namen werden nicht in der IDE erkannt:

              Wenn du etwas in deiner UI-Datei änderst, und speicherst das ab, wird der uic in der Regel ausgeführt.

              Meiner Erfahrung nach eher nicht :)
              Wenn man nur die ui-Datei speichert, ohne zu builden oder gar das Programm auszuführen (was ja dann eh vorher builded) werden Änderungen am Interface oft nicht erkannt.

              Weiß nicht genau woran QtCreator/Designer das ausmacht, wann er automatisch builden sollte und wann nicht, aber oft wenn man 1-2 Widgets wie Buttons hinzufügt, muss man manuell builden, damit die im Code über ui->xxxx zu erreichen sind.

              Ich persönlich, wenn ich mit QtCreator arbeite, builde immer neu, wenn ich was an der ui geändert habe... Da spart man sich einiges an Fehlersuche, wenn Einstellungen an Widgets nicht übernommen worden. Wenn ein neues Widget ganz fehlt, fällt das ja schneller auf :)

              J.HilkJ Offline
              J.HilkJ Offline
              J.Hilk
              Moderators
              wrote on last edited by
              #6

              @Pl45m4 Zugegeben ist es einige Jahre her, dass ich den Designer genutzt habe außerhalb von einem schnellen Prototypen :D


              Be aware of the Qt Code of Conduct, when posting : https://forum.qt.io/topic/113070/qt-code-of-conduct


              Q: What's that?
              A: It's blue light.
              Q: What does it do?
              A: It turns blue.

              1 Reply Last reply
              0
              • J.HilkJ J.Hilk

                Hi @makopo und willkommen

                Leider ist deine Situation nicht so ungewöhnlich wie man denken sollte.

                Es ist so, Qt/QtCreator hat den sogenannten UiC der macht aus deiner Designer Vorlage kompatiblen C++ code. (Das ist eine Einbahnstraße und funktioniert nicht anders herum, nur so als Anmerkung)
                Wenn du etwas in deiner UI-Datei änderst, und speicherst das ab, wird der uic in der Regel ausgeführt.

                Leider klappt das nicht immer.
                In diesem Fall empfehle ich die manuelle Ausführung von qmake.
                Build-> Run qmake
                Erstellen -> qmake ausführen

                Die Ausführung von qmake erzwingt eine Ausführung der uic

                Mehr Informationen:
                https://doc.qt.io/qt-5/uic.html

                S Offline
                S Offline
                SimonSchroeder
                wrote on last edited by
                #7

                @J-Hilk said in Aktualisierte Objekt Namen werden nicht in der IDE erkannt:

                Wenn du etwas in deiner UI-Datei änderst, und speicherst das ab, wird der uic in der Regel ausgeführt.

                Das habe ich noch nie beobachten können. Für gewöhnlich ignoriere ich entweder die Fehlermeldungen im QtCreator während dem Editieren und verzichte auf Autoverfollständigung oder ich führe einen Build durch. Bei einer vernünftigen Projektstruktur (Includes, usw.) ist ein erneuter Build nach außschließlichen Änderungen in der Ui-Datei schnell erledigt.

                1 Reply Last reply
                0

                • Login

                • Login or register to search.
                • First post
                  Last post
                0
                • Categories
                • Recent
                • Tags
                • Popular
                • Users
                • Groups
                • Search
                • Get Qt Extensions
                • Unsolved