Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. Error compilation in migration from 5.15 to 6.7

Error compilation in migration from 5.15 to 6.7

Scheduled Pinned Locked Moved Unsolved General and Desktop
2 Posts 2 Posters 194 Views 2 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.
  • BozzoB Offline
    BozzoB Offline
    Bozzo
    wrote on last edited by
    #1

    I have the following class

    .h file

    #ifndef MULTIMEDIACONTROLLER_H
    #define MULTIMEDIACONTROLLER_H
    
    #include "MultimediaManager.h"
    
    #include <QtCore/QObject>
    
    class QQuickItem;
    class MediaListModel;
    
    class MultimediaController : public QObject
    {
      Q_OBJECT
    
      Q_PROPERTY(QQuickItem *videoOutput READ videoOutput WRITE setVideoOutput NOTIFY videoOutputChanged)
      Q_PROPERTY(MultimediaState multimediaState READ multimediaState NOTIFY multimediaStateChanged)
      Q_PROPERTY(PlayerState playerState READ playerState NOTIFY playerStateChanged)
      Q_PROPERTY(QString bluetoothSinkAddress READ bluetoothSinkAddress WRITE setBluetoothSinkAddress)
      Q_PROPERTY(QString mediaName READ mediaName NOTIFY mediaNameChanged)
      Q_PROPERTY(QString backgroundImage READ backgroundImage NOTIFY backgroundImageChanged)
      Q_PROPERTY(QString webUrl READ webUrl NOTIFY webUrlChanged)
      Q_PROPERTY(QString uri READ uri NOTIFY URIChanged)
      Q_PROPERTY(double rate READ rate WRITE setRate NOTIFY rateChanged)
      Q_PROPERTY(bool isDVBRadio READ isDVBRadio NOTIFY dvbRadioChanged)
      Q_PROPERTY(MediaListModel *webRadioChannelList READ webRadioChannelList NOTIFY webRadioChannelListChanged)
      Q_PROPERTY(MediaListModel *webLinkList READ webLinkList NOTIFY webLinkListChanged)
    
    
    public:
      ~MultimediaController();
      MultimediaController(QObject *parent = nullptr);
      Q_INVOKABLE double getVolume() const;
    
      enum MultimediaState {
        NoMediaLoaded = NO_MEDIA_LOADED,
        StartupVideo = STARTUP_VIDEO,
        WorkoutCooldown = WORKOUT_COOLDOWN,
        YourViewBackgroundImage = YOURVIEW_BACKGROUND_IMAGE,
        YourViewBackgroundVideo = YOURVIEW_BACKGROUND_VIDEO,
        DigitalTV = DIGITAL_TV,
        DigitalTvRadio = DIGITAL_TV_RADIO,
        WebRadio = WEB_RADIO,
        YouTube = YOUTUBE,
        WebBrowser = WEB_BROWSER,
        LocalFileAudio = LOCAL_FILE_AUDIO,
        LocalFileVideo = LOCAL_FILE_VIDEO
      };
      Q_ENUM(MultimediaState)
    
      enum PlayerState {
        Unknown = UNKNOWN_PLAYER_STATE,
        Stopped = PLAYER_STOPPED,
        Loading = PLAYER_LOADING,
        Playing = PLAYER_PLAYING
      };
      Q_ENUM(PlayerState)
    
      QQuickItem *videoOutput() const;
      MultimediaState multimediaState() const;
      PlayerState playerState() const;
      QString bluetoothSinkAddress() const;
      QString backgroundImage() const;
      QString mediaName() const;
      QString webUrl() const;
      QString uri() const;
      double rate() const;
      bool isDVBRadio() const;
      MediaListModel *webRadioChannelList();
      MediaListModel *webLinkList();
    
      void setVideoOutput(QQuickItem *item);
      void setBluetoothSinkAddress(QString &address);
    
      Q_INVOKABLE void stop();
      Q_INVOKABLE void setYourViewPicture(const QString &picturePath);
      Q_INVOKABLE void setYourViewVideo(const QString &videoPath);
      Q_INVOKABLE void tuneToTVChannel(const QString &channelName, const QString &channelUrl, const bool isRadio);
      Q_INVOKABLE void tuneToWebRadioChannel(const QString &channelName, const QString &channelUrl);
      Q_INVOKABLE void browseWebPage(const QString &webUrl, const QString &pageName);
      Q_INVOKABLE void playYouTubeVideo(const QString &videoUrl, const QString &audioUrl);
      Q_INVOKABLE void playLocalMedia(const QString &mediaName, const QString &mediaUrl, const QString &fileType);
      Q_INVOKABLE void playStatupVideo();
      Q_INVOKABLE void goCooldown();
      Q_INVOKABLE void setVolume(double volume);
      Q_INVOKABLE void setRate(double rate);
      Q_INVOKABLE void reset();
      Q_INVOKABLE void reloadWebLists();
    
    signals:
      void mediaNameChanged();
      void webUrlChanged();
      void rateChanged();
      void videoOutputChanged();
      void multimediaStateChanged();
      void playerStateChanged();
      void statupVideoFinished();
      void backgroundImageChanged();
      void error();
      void playbackFinished();
      void dvbRadioChanged();
      void webRadioChannelListChanged();
      void webLinkListChanged();
      void URIChanged();
    
    private:
      double _volume;
    
    };
    
    #endif
    
    

    .cpp file

    #include <QDebug>
    #include <QtMath>
    #include <QProcess>
    #include "MultimediaController.h"
    
    #include "MediaListModel.h"
    
    extern bool apolloIsRunning;
    
    MultimediaController::MultimediaController(QObject *parent)
      : QObject(parent)
    {
      qRegisterMetaType<MediaListModel *>();
      MultimediaManager *mm = MultimediaManager::instance();
      connect(mm, &MultimediaManager::videoOutputChanged, this, &MultimediaController::videoOutputChanged);
      connect(mm, &MultimediaManager::mediaNameChanged, this, &MultimediaController::mediaNameChanged);
      connect(mm, &MultimediaManager::webUrlChanged, this, &MultimediaController::webUrlChanged);
      connect(mm, &MultimediaManager::rateChanged, this, &MultimediaController::rateChanged);
      connect(mm, &MultimediaManager::multimediaStateChanged, this, &MultimediaController::multimediaStateChanged);
      connect(mm, &MultimediaManager::playerStateChanged, this, &MultimediaController::playerStateChanged);
      connect(mm, &MultimediaManager::statupVideoFinished, this, &MultimediaController::statupVideoFinished);
      connect(mm, &MultimediaManager::backgroundImageChanged, this, &MultimediaController::backgroundImageChanged);
      connect(mm, &MultimediaManager::dvbRadioChanged, this, &MultimediaController::dvbRadioChanged);
      connect(mm, &MultimediaManager::error, this, &MultimediaController::error);
      connect(mm, &MultimediaManager::playbackFinished, this, &MultimediaController::playbackFinished);
      connect(mm, &MultimediaManager::webRadioChannelListChanged, this, &MultimediaController::webRadioChannelListChanged);
      connect(mm, &MultimediaManager::webLinkListChanged, this, &MultimediaController::webLinkListChanged);
      connect(mm, &MultimediaManager::URIChanged, this, &MultimediaController::URIChanged);
    }
    
    MultimediaController::~MultimediaController()
    {
    }
    
    QQuickItem *MultimediaController::videoOutput() const
    {
      return MultimediaManager::instance()->videoOutput();
    }
    
    MultimediaController::MultimediaState MultimediaController::multimediaState() const
    {
      return static_cast<MultimediaController::MultimediaState>(MultimediaManager::instance()->multimediaState());
    }
    
    MultimediaController::PlayerState MultimediaController::playerState() const
    {
      return static_cast<MultimediaController::PlayerState>(MultimediaManager::instance()->playerState());
    }
    
    double MultimediaController::rate() const
    {
      return MultimediaManager::instance()->rate();
    }
    
    QString MultimediaController::bluetoothSinkAddress() const
    {
      return MultimediaManager::instance()->bluetoothSinkAddress();
    }
    
    QString MultimediaController::mediaName() const
    {
      return MultimediaManager::instance()->mediaName();
    }
    
    QString MultimediaController::webUrl() const
    {
      return MultimediaManager::instance()->webUrl();
    }
    
    QString MultimediaController::uri() const
    {
      return MultimediaManager::instance()->uri();
    }
    
    QString MultimediaController::backgroundImage() const
    {
      return MultimediaManager::instance()->backgroundImage();
    }
    
    bool MultimediaController::isDVBRadio() const
    {
      return MultimediaManager::instance()->isDVBRadio();
    }
    
    MediaListModel *MultimediaController::webRadioChannelList()
    {
      return MultimediaManager::instance()->webRadioChannelList();
    }
    
    MediaListModel *MultimediaController::webLinkList()
    {
      return MultimediaManager::instance()->webLinkList();
    }
    
    void MultimediaController::stop()
    {
      MultimediaManager::instance()->stop();
    }
    
    void MultimediaController::setVolume(double volume)
    {
      if (apolloIsRunning)
      {
        qDebug() << "Impostazione volume" << volume;
        QString command = QString("/opt/apollo/bin/pulseaudio_manager.py --set %1").arg(qCeil(volume * 200.0));
        qDebug() << command;
        system(qPrintable(command));
      }
    
      _volume = volume;
    }
    
    double MultimediaController::getVolume() const
    {
      if (apolloIsRunning)
      {
      QProcess process;
    
        process.start("/bin/bash", QStringList() << "-c" << QStringLiteral("/opt/apollo/bin/pulseaudio_manager.py --get"));
        process.waitForFinished();
        QString result = process.readAllStandardOutput();
        process.close();
        if (result.size() != 0)
        {
          return result.toDouble() / 200.0;
        }
      }
    
      return _volume;
    }
    
    void MultimediaController::setRate(double rate)
    {
      MultimediaManager::instance()->setRate(rate);
    }
    
    void MultimediaController::setVideoOutput(QQuickItem *item)
    {
      MultimediaManager::instance()->setVideoOutput(item);
    }
    
    void MultimediaController::setBluetoothSinkAddress(QString &address)
    {
      MultimediaManager::instance()->setBluetoothSinkAddress(address);
    }
    
    void MultimediaController::setYourViewPicture(const QString &picturePath)
    {
      MultimediaManager::instance()->setYourViewPicture(picturePath);
    }
    
    void MultimediaController::setYourViewVideo(const QString &videoPath)
    {
      MultimediaManager::instance()->setYourViewVideo(videoPath);
    }
    
    void MultimediaController::tuneToTVChannel(const QString &channelName, const QString &channelUrl, const bool isRadio)
    {
      MultimediaManager::instance()->tuneToTVChannel(channelName, channelUrl, isRadio);
    }
    
    void MultimediaController::tuneToWebRadioChannel(const QString &channelName, const QString &channelUrl)
    {
      MultimediaManager::instance()->tuneToWebRadioChannel(channelName, channelUrl);
    }
    
    void MultimediaController::browseWebPage(const QString &webUrl, const QString &pageName)
    {
      MultimediaManager::instance()->browseWebPage(webUrl, pageName);
    }
    
    void MultimediaController::playYouTubeVideo(const QString &videoUrl, const QString &audioUrl)
    {
      MultimediaManager::instance()->playYouTubeVideo(videoUrl, audioUrl);
    }
    
    void MultimediaController::playLocalMedia(const QString &mediaName, const QString &mediaUrl, const QString &fileType)
    {
      MultimediaManager::instance()->playLocalMedia(mediaName, mediaUrl, fileType);
    }
    
    void MultimediaController::playStatupVideo()
    {
      MultimediaManager::instance()->playStatupVideo();
    }
    
    void MultimediaController::goCooldown()
    {
      MultimediaManager::instance()->goCooldown();
    }
    
    void MultimediaController::reset()
    {
      MultimediaManager::instance()->reset();
    }
    
    void MultimediaController::reloadWebLists()
    {
      MultimediaManager::instance()->reloadWebLists();
    }
    

    In 5.15 the compilation is fine and all words, in 6.7 I have the following errors

    /build/Desktop_Qt_6_7_1-Debug/moc_MultimediaController.cpp:242: required from ‘constexpr const QtPrivate::QMetaTypeInterface const qt_incomplete_metaTypeArray [60]<{anonymous}::qt_meta_stringdata_CLASSMultimediaControllerENDCLASS_t, QtPrivate::TypeAndForceComplete<QQuickItem*, std::integral_constant<bool, true> >, QtPrivate::TypeAndForceComplete<MultimediaController::MultimediaState, std::integral_constant<bool, true> >, QtPrivate::TypeAndForceComplete<MultimediaController::PlayerState, std::integral_constant<bool, true> >, QtPrivate::TypeAndForceComplete<QString, std::integral_constant<bool, true> >, QtPrivate::TypeAndForceComplete<QString, std::integral_constant<bool, true> >, QtPrivate::TypeAndForceComplete<QString, std::integral_constant<bool, true> >, QtPrivate::TypeAndForceComplete<QString, std::integral_constant<bool, true> >, QtPrivate::TypeAndForceComplete<QString, std::integral_constant<bool, true> >, QtPrivate::TypeAndForceComplete<double, std::integral_constant<bool, true> >, QtPrivate::TypeAndForceComplete<bool, std::integral_constant<bool, true> >, QtPrivate::TypeAndForceComplete<MediaListModel*, std::integral_constant<bool, true> >, QtPrivate::TypeAndForceComplete<MediaListModel*, std::integral_constant<bool, true> >, QtPrivate::TypeAndForceComplete<MultimediaController::MultimediaState, std::integral_constant<bool, true> >, QtPrivate::TypeAndForceComplete<MultimediaController::PlayerState, std::integral_constant<bool, true> >, QtPrivate::TypeAndForceComplete<MultimediaController, std::integral_constant<bool, true> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<double, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<const QString&, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<const QString&, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<const QString&, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<const QString&, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<const bool, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<const QString&, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<const QString&, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<const QString&, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<const QString&, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<const QString&, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<const QString&, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<const QString&, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<const QString&, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<const QString&, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<double, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<double, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> > >’
    /home/mirko/Qt/6.7.1/gcc_64/include/QtCore/qmetatype.h:2600:43: required from ‘constexpr const QtPrivate::QMetaTypeInterface* const qt_incomplete_metaTypeArray [60]<{anonymous}::qt_meta_stringdata_CLASSMultimediaControllerENDCLASS_t, QtPrivate::TypeAndForceComplete<QQuickItem*, std::integral_constant<bool, true> >, QtPrivate::TypeAndForceComplete<MultimediaController::MultimediaState, std::integral_constant<bool, true> >, QtPrivate::TypeAndForceComplete<MultimediaController::PlayerState, std::integral_constant<bool, true> >, QtPrivate::TypeAndForceComplete<QString, std::integral_constant<bool, true> >, QtPrivate::TypeAndForceComplete<QString, std::integral_constant<bool, true> >, QtPrivate::TypeAndForceComplete<QString, std::integral_constant<bool, true> >, QtPrivate::TypeAndForceComplete<QString, std::integral_constant<bool, true> >, QtPrivate::TypeAndForceComplete<QString, std::integral_constant<bool, true> >, QtPrivate::TypeAndForceComplete<double, std::integral_constant<bool, true> >, QtPrivate::TypeAndForceComplete<bool, std::integral_constant<bool, true> >, QtPrivate::TypeAndForceComplete<MediaListModel*, std::integral_constant<bool, true> >, QtPrivate::TypeAndForceComplete<MediaListModel*, std::integral_constant<bool, true> >, QtPrivate::TypeAndForceComplete<MultimediaController::MultimediaState, std::integral_constant<bool, true> >, QtPrivate::TypeAndForceComplete<MultimediaController::PlayerState, std::integral_constant<bool, true> >, QtPrivate::TypeAndForceComplete<MultimediaController, std::integral_constant<bool, true> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<double, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<const QString&, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<const QString&, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<const QString&, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<const QString&, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<const bool, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<const QString&, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<const QString&, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<const QString&, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<const QString&, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<const QString&, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<const QString&, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<const QString&, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<const QString&, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<const QString&, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<double, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<double, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> > >’
    moc_MultimediaController.cpp:242:5: required from here
    /home/mirko/Qt/6.7.1/gcc_64/include/QtCore/qmetatype.h:2660:55: in ‘constexpr’ expansion of ‘QtPrivate::qTryMetaTypeInterfaceForType<{anonymous}::qt_meta_stringdata_CLASSMultimediaControllerENDCLASS_t, TypeAndForceComplete<MediaListModel*, std::integral_constant<bool, true> > >()’*

    Any ideas?????

    Thanks for the help

    1 Reply Last reply
    0
    • sierdzioS Offline
      sierdzioS Offline
      sierdzio
      Moderators
      wrote on last edited by
      #2

      In Qt 6, all Q_PROPERTY types need to be fully defined (no forward-declaration). So just move required #include statements from .cpp to .h and it should work.

      (Z(:^

      1 Reply Last reply
      3

      • Login

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