Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. Italian
  4. Come gestire scelta item proprietà mio plugin in Qt 6.5
Forum Updated to NodeBB v4.3 + New Features

Come gestire scelta item proprietà mio plugin in Qt 6.5

Scheduled Pinned Locked Moved Unsolved Italian
4 Posts 1 Posters 1.2k Views 1 Watching
  • 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.
  • giorgik63G Offline
    giorgik63G Offline
    giorgik63
    wrote on last edited by
    #1

    Sto usando Visual Studio C++ 2022 Community con VS Tools per Qt. Ho creato un plugin di nome Led_0_6_1 basato sul vecchio progetto di P. Sereno. Il plugin funziona, unico problema che presenta quando si vuole cambiare forma al led dal pannello di Qt Designer (vedi immagine allegata). Quando seleziono per esempio Triangle, non cambia forma e rimane sempre Circle. Il problema è dovuto al fatto che ogni variazione fatta sull'editor delle proprietà mie del widget (nel caso specifico shape) non aggiornano il file .ui che quindi continua a farmi vedere il solo presente nel file .ui che è appunto Circle. Come si deve fare affinchè si aggiorni il file .ui dopo aver selezionato Triangle nella proprietà shape ?29_campo_shape_widget_QtDesigner.jpg

    1 Reply Last reply
    0
    • giorgik63G Offline
      giorgik63G Offline
      giorgik63
      wrote on last edited by
      #2

      Di seguito riporto il mio codice.
      Led_0_6_1Plugin.cpp:

      #include "Led_0_6_1.h"
      #include "Led_0_6_1Plugin.h"
      
      #include <QtCore/QtPlugin>
      
      using namespace Qt::StringLiterals;
      
      Led_0_6_1Plugin::Led_0_6_1Plugin(QObject *parent) : QObject(parent)
      {
          initialized = false;
      }
      
      void Led_0_6_1Plugin::initialize(QDesignerFormEditorInterface * /*core*/)
      {
          if (initialized)
              return;
      
          initialized = true;
      }
      
      bool Led_0_6_1Plugin::isInitialized() const
      {
          return initialized;
      }
      
      QWidget *Led_0_6_1Plugin::createWidget(QWidget *parent)
      {
          return new Led_0_6_1(parent);
      }
      
      QString Led_0_6_1Plugin::name() const
      {
          return "Led_0_6_1";
      }
      
      QString Led_0_6_1Plugin::group() const
      {
          return "My Plugins";
      }
      
      QIcon Led_0_6_1Plugin::icon() const
      {
          return QIcon();
      }
      
      QString Led_0_6_1Plugin::toolTip() const
      {
          return QString();
      }
      
      QString Led_0_6_1Plugin::whatsThis() const
      {
          return QString();
      }
      
      bool Led_0_6_1Plugin::isContainer() const
      {
          return false;
      }
      
      QString Led_0_6_1Plugin::domXml() const
      {
              return uR"(
      <ui language="c++">
        <widget class="Led_0_6_1" name="led_0_6_1">
      )"        
      R"(
          <property name="geometry">
            <rect>
              <x>0</x>
              <y>0</y>
              <width>50</width>
              <height>50</height>
            </rect>
          </property>
      ")
      R"(
          <property name="toolTip">
            <string>Binary Led</string>
          </property>
          <property name="value">
            <bool>false</bool>
          </property>
          <property name="whatsThis">
            <string>Led widget</string>
          </property>
          <property name="onColor">
            <enum>Led_0_6_1::Red</enum>
           </property>
          <property name="offColor">
            <enum>Led_0_6_1::Grey</enum>
          </property>
          <property name="shape">
            <enum>Led_0_6_1::Circle</enum>
          </property>
        </widget>
      </ui>
      )"_s;
      }
      
      QString Led_0_6_1Plugin::includeFile() const
      {
          return u"Led_0_6_1.h"_s;
      }
      

      Led_0_6_1Plugin.h:

      #pragma once
      
      #include <QtUiPlugin/QDesignerCustomWidgetInterface>
      
      class Led_0_6_1Plugin : public QObject, public QDesignerCustomWidgetInterface
      {
          Q_OBJECT
          Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QDesignerCustomWidgetInterface" FILE "led_0_6_1plugin.json")
          Q_INTERFACES(QDesignerCustomWidgetInterface)
      
      public:
          Led_0_6_1Plugin(QObject *parent = nullptr);
      
          bool isContainer() const override;
          bool isInitialized() const override;
          QIcon icon() const override;
          QString domXml() const override;
          QString group() const override;
          QString includeFile() const override;
          QString name() const override;
          QString toolTip() const override;
          QString whatsThis() const override;
          QWidget *createWidget(QWidget *parent);
          void initialize(QDesignerFormEditorInterface *core);
      
      private:
          bool initialized;
      };
      
      1 Reply Last reply
      0
      • giorgik63G Offline
        giorgik63G Offline
        giorgik63
        wrote on last edited by
        #3

        Il problema apparentemente non sembra essere il codice ma l'ambiente di sviluppo che utilizzo: 6.5.0_msvc2019_64, Qt Creator basato su Visual Studio C++ 2019 (la versione che ho di Visual Studio C++ è la Community 2022) con estensioni | Qt VS Tools. Questo era un vecchio problema di Qt già risalente alla 4.7.x con lo stesso plugin che ho presentato nel post. Allora ero riuscito a farlo funzionare correttamente in Qt Designer basato su MinGW 4.8. Altri avevano provato ad usarlo in Visual Studio C++ ma non riuscivano a impostare la forma del led dalle proprietà di Qt Designer, proprio come succede a me. Per caso qualcuno è riuscito a farlo funzionare in Qt Designer (il cambio di form corrisponde ad una diversa visualizzazione del led sulla form che si sta disegnando in Qt Designer) ? Se sì, potete dirmi quale versione di Qt Creator, Qt Designer usate e con quale ambiente di compilazione (MinGw quale versione, Visual Studio C++ quale versione) ?

        giorgik63G 1 Reply Last reply
        0
        • giorgik63G giorgik63

          Il problema apparentemente non sembra essere il codice ma l'ambiente di sviluppo che utilizzo: 6.5.0_msvc2019_64, Qt Creator basato su Visual Studio C++ 2019 (la versione che ho di Visual Studio C++ è la Community 2022) con estensioni | Qt VS Tools. Questo era un vecchio problema di Qt già risalente alla 4.7.x con lo stesso plugin che ho presentato nel post. Allora ero riuscito a farlo funzionare correttamente in Qt Designer basato su MinGW 4.8. Altri avevano provato ad usarlo in Visual Studio C++ ma non riuscivano a impostare la forma del led dalle proprietà di Qt Designer, proprio come succede a me. Per caso qualcuno è riuscito a farlo funzionare in Qt Designer (il cambio di form corrisponde ad una diversa visualizzazione del led sulla form che si sta disegnando in Qt Designer) ? Se sì, potete dirmi quale versione di Qt Creator, Qt Designer usate e con quale ambiente di compilazione (MinGw quale versione, Visual Studio C++ quale versione) ?

          giorgik63G Offline
          giorgik63G Offline
          giorgik63
          wrote on last edited by
          #4

          @giorgik63 Facendo un paio di controlli, mi sono accorto che Qt Designer (dell'installazione online di Qt 6.5) è stato compilato facendo uso di una versione delle librerie diversa dalle 6.5. Quindi tutto ciò che si fa con essa non può "vedere" i plugin creati con Qt Creator basato sulle 6.5. Quindi sono passato ad un'installazione dell'ambiente Qt (Qt Creator e Qt Designer) basata sulla stessa versione: 6.4.3. Per sicurezza ho poi seguito un tutorial che mi spiega passo passo la creazione di un semplice plugin. Ed ora sembra funzionare, vedo il plugin in Qt Designer. C'è solo un problema, se creo un progetto per testare il plugin nuovo, non riesco a compilarlo perchè mi da un errore di questo tipo:
          errore_compilazione_app.jpg
          Sembra che manchi qualche riferimento al plugin, ma nel mio .pro dell'applicazione, viene riportato tutto (.lib, .h)
          errore_compilazione_app_2.jpg
          a questo punto non so più cosa fare veramente. Aiutatemi.

          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