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. qt6 migration issue
Forum Updated to NodeBB v4.3 + New Features

qt6 migration issue

Scheduled Pinned Locked Moved Unsolved General and Desktop
35 Posts 4 Posters 3.6k 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.
  • JonBJ JonB

    @Actarus
    That's not good! There would appear to be a problem if editor says the .cpp is not editable I would be worried :) Which may lead to a problem when trying to compile it to the .o file....

    A Offline
    A Offline
    Actarus
    wrote on last edited by
    #24

    @JonB I've just checked and I have the same message on the other PC with QT5 but, in that case, it compiles without errors and I can find the colorrange.o file in the debug folder.

    JonBJ 1 Reply Last reply
    0
    • JonBJ JonB

      @Actarus
      That's not good! There would appear to be a problem if editor says the .cpp is not editable I would be worried :) Which may lead to a problem when trying to compile it to the .o file....

      A Offline
      A Offline
      Actarus
      wrote on last edited by
      #25

      @JonB Jon, just opened it with text editor and saved it in UTF-8, the encoding error disappeared but the Error 1 is still present.

      1 Reply Last reply
      0
      • A Actarus

        @JonB I've just checked and I have the same message on the other PC with QT5 but, in that case, it compiles without errors and I can find the colorrange.o file in the debug folder.

        JonBJ Offline
        JonBJ Offline
        JonB
        wrote on last edited by
        #26

        @Actarus
        I would delete the debug folder and do a full, clean rebuild from scratch. If it errors look carefully at the compile output, because what you show seems "strange".

        A 1 Reply Last reply
        0
        • JonBJ JonB

          @Actarus
          I would delete the debug folder and do a full, clean rebuild from scratch. If it errors look carefully at the compile output, because what you show seems "strange".

          A Offline
          A Offline
          Actarus
          wrote on last edited by Actarus
          #27

          @JonB Did it but it didn't change, but the colorrange.cpp file is "casually" the same where I have the error mentioned above about backgroundcolor that is the last one code issue that had not yet been corrected.

          Could you please give me a tip about it and maybe it fixes also the Error1?

          "Can you help in correcting the sintax for QT6 for the following line of QTableWidgetItem:

          colorPicker = new QColorDialog(ui->table->item(r, 0)->backgroundColor(), nullptr
          

          I corrected replacing backgroundColor with background, but I can't get the correct sintax."

          Thanks.

          JonBJ 1 Reply Last reply
          0
          • A Actarus

            @JonB Did it but it didn't change, but the colorrange.cpp file is "casually" the same where I have the error mentioned above about backgroundcolor that is the last one code issue that had not yet been corrected.

            Could you please give me a tip about it and maybe it fixes also the Error1?

            "Can you help in correcting the sintax for QT6 for the following line of QTableWidgetItem:

            colorPicker = new QColorDialog(ui->table->item(r, 0)->backgroundColor(), nullptr
            

            I corrected replacing backgroundColor with background, but I can't get the correct sintax."

            Thanks.

            JonBJ Offline
            JonBJ Offline
            JonB
            wrote on last edited by
            #28

            @Actarus
            The line you show simply seems to be missing the trailing );. Other than that I don't think it has changed from Qt5. If you get an error copy & paste exactly what the compiler shows you about it.

            A 3 Replies Last reply
            0
            • JonBJ JonB

              @Actarus
              The line you show simply seems to be missing the trailing );. Other than that I don't think it has changed from Qt5. If you get an error copy & paste exactly what the compiler shows you about it.

              A Offline
              A Offline
              Actarus
              wrote on last edited by Actarus
              #29

              @JonB Sorry, just didn't pasted here the ); but it's in the code.
              Actually in QT6 it's no longer possible to use 'backgroundColor', indeed I replaced it with 'background' in all the other situations where I had the same error message and it worked.

              The error text is the following:

              error: 'class QTableWidgetItem' has no member named 'backgroundColor'; did you mean 'background'?
              307 | colorPicker = new QColorDialog(ui->table->item(r, 0)->backgroundColor(), nullptr/ui->table/);
              | ^~~~~~~~~~~~~~~
              | background

              But replacing it with 'background', then I get the message :

              colorrange.cpp:307:27: No matching constructor for initialization of 'QColorDialog'
              qcolordialog.h:36:14: candidate constructor not viable: no known conversion from 'QBrush' to 'const QColor' for 1st argument
              qcolordialog.h:35:14: candidate constructor not viable: allows at most single argument 'parent', but 2 arguments were provided
              :74:20: note: candidate constructor not viable: requires 1 argument, but 2 were provided

              1 Reply Last reply
              0
              • JonBJ JonB

                @Actarus
                The line you show simply seems to be missing the trailing );. Other than that I don't think it has changed from Qt5. If you get an error copy & paste exactly what the compiler shows you about it.

                A Offline
                A Offline
                Actarus
                wrote on last edited by
                #30

                @JonB Jon, fixed both with the correct sintax:

                colorPicker = new QColorDialog(ui->table->item(r, 0)->background().color(), nullptr);
                

                This also fixed the error1 and now the .o file is generated

                1 Reply Last reply
                0
                • JonBJ JonB

                  @Actarus
                  The line you show simply seems to be missing the trailing );. Other than that I don't think it has changed from Qt5. If you get an error copy & paste exactly what the compiler shows you about it.

                  A Offline
                  A Offline
                  Actarus
                  wrote on last edited by Actarus
                  #31

                  @JonB Jon, now that I fixed all the errors, if I compile I suddenly get around 1600 errors like the following one but in QT5 it has always compiled and run perfectly.

                  error: conversion from 'const char [2]' to 'QChar' is ambiguous
                  : conversion from 'const char [2]' to 'QChar' is ambiguous
                  933 | if(formula.at(i) == "'" && i+1 < formula.length())
                  | ^~~

                  Invalid operands to binary expression ('const QChar' and 'const char[2]')
                  qchar.h:582:34: candidate function not viable: no known conversion from 'const char[2]' to 'QChar' for 2nd argument

                  Here the code:

                  QString can;
                                                              for(int i = 0; i < formula.size(); i++)
                                                              {
                                                                  if(formula.at(i) == "'" && i+1 < formula.length())
                                                                  {
                                                                      i += 1;
                                                                      while(i < formula.length() && formula.at(i) != "'")
                                                                      {
                                                                          can.append(formula.at(i));
                                                                          i += 1;
                                                                      }
                                                                      if(cBoxChannel_1->findText(can) != -1)
                                                                      {
                                                                          nChannels += 1;
                                                                          if(nChannels == 1)
                                                                              cBoxChannel_1->setCurrentIndex(cBoxChannel_1->findText(can));
                                                                          else
                                                                              if(nChannels == 2)
                                                                                  cBoxChannel_2->setCurrentIndex(cBoxChannel_2->findText(can));
                                                                              else
                                                                                  if(nChannels == 3)
                                                                                      cBoxChannel_3->setCurrentIndex(cBoxChannel_3->findText(can));
                                                                                  else
                                                                                      if(nChannels == 4)
                                                                                          cBoxChannel_4->setCurrentIndex(cBoxChannel_4->findText(can));
                                                                                      else
                                                                                          if(nChannels == 5)
                                                                                              cBoxChannel_5->setCurrentIndex(cBoxChannel_5->findText(can));
                                                                                          else
                                                                                              if(nChannels == 6)
                                                                                                  cBoxChannel_6->setCurrentIndex(cBoxChannel_6->findText(can));
                                                                                              else
                                                                                                  if(nChannels == 7)
                                                                                                      cBoxChannel_7->setCurrentIndex(cBoxChannel_7->findText(can));
                                                                                                  else
                                                                                                      if(nChannels == 8)
                                                                                                          cBoxChannel_8->setCurrentIndex(cBoxChannel_8->findText(can));
                                                                      }
                                                                      can.clear();
                                                                  }
                                                              }
                  

                  The claimed part is the ==:

                  if(formula.at(i) == "'" && i+1 < formula.length())

                  Christian EhrlicherC 1 Reply Last reply
                  0
                  • A Actarus

                    @JonB Jon, now that I fixed all the errors, if I compile I suddenly get around 1600 errors like the following one but in QT5 it has always compiled and run perfectly.

                    error: conversion from 'const char [2]' to 'QChar' is ambiguous
                    : conversion from 'const char [2]' to 'QChar' is ambiguous
                    933 | if(formula.at(i) == "'" && i+1 < formula.length())
                    | ^~~

                    Invalid operands to binary expression ('const QChar' and 'const char[2]')
                    qchar.h:582:34: candidate function not viable: no known conversion from 'const char[2]' to 'QChar' for 2nd argument

                    Here the code:

                    QString can;
                                                                for(int i = 0; i < formula.size(); i++)
                                                                {
                                                                    if(formula.at(i) == "'" && i+1 < formula.length())
                                                                    {
                                                                        i += 1;
                                                                        while(i < formula.length() && formula.at(i) != "'")
                                                                        {
                                                                            can.append(formula.at(i));
                                                                            i += 1;
                                                                        }
                                                                        if(cBoxChannel_1->findText(can) != -1)
                                                                        {
                                                                            nChannels += 1;
                                                                            if(nChannels == 1)
                                                                                cBoxChannel_1->setCurrentIndex(cBoxChannel_1->findText(can));
                                                                            else
                                                                                if(nChannels == 2)
                                                                                    cBoxChannel_2->setCurrentIndex(cBoxChannel_2->findText(can));
                                                                                else
                                                                                    if(nChannels == 3)
                                                                                        cBoxChannel_3->setCurrentIndex(cBoxChannel_3->findText(can));
                                                                                    else
                                                                                        if(nChannels == 4)
                                                                                            cBoxChannel_4->setCurrentIndex(cBoxChannel_4->findText(can));
                                                                                        else
                                                                                            if(nChannels == 5)
                                                                                                cBoxChannel_5->setCurrentIndex(cBoxChannel_5->findText(can));
                                                                                            else
                                                                                                if(nChannels == 6)
                                                                                                    cBoxChannel_6->setCurrentIndex(cBoxChannel_6->findText(can));
                                                                                                else
                                                                                                    if(nChannels == 7)
                                                                                                        cBoxChannel_7->setCurrentIndex(cBoxChannel_7->findText(can));
                                                                                                    else
                                                                                                        if(nChannels == 8)
                                                                                                            cBoxChannel_8->setCurrentIndex(cBoxChannel_8->findText(can));
                                                                        }
                                                                        can.clear();
                                                                    }
                                                                }
                    

                    The claimed part is the ==:

                    if(formula.at(i) == "'" && i+1 < formula.length())

                    Christian EhrlicherC Online
                    Christian EhrlicherC Online
                    Christian Ehrlicher
                    Lifetime Qt Champion
                    wrote on last edited by Christian Ehrlicher
                    #32

                    error: conversion from 'const char [2]' to 'QChar' is ambiguous
                    : conversion from 'const char [2]' to 'QChar' is ambiguous

                    We already discussed this problem ...

                    Qt Online Installer direct download: https://download.qt.io/official_releases/online_installers/
                    Visit the Qt Academy at https://academy.qt.io/catalog

                    A 1 Reply Last reply
                    0
                    • Christian EhrlicherC Christian Ehrlicher

                      error: conversion from 'const char [2]' to 'QChar' is ambiguous
                      : conversion from 'const char [2]' to 'QChar' is ambiguous

                      We already discussed this problem ...

                      A Offline
                      A Offline
                      Actarus
                      wrote on last edited by Actarus
                      #33

                      @Christian-Ehrlicher Thanks, fixed.

                      I'm facing a couple of situations that in QT5 compile without problem but not in QT6:

                      connect(xychart->m_ChartViewer, &QChartViewer::needTrackLineXYChart, this, &AnalysisWindow::trackLineAxis);
                      

                      and

                      connect(m_ChartViewer, &QChartViewer::MouseIsPressed, this, &BaseViewPortComp::mousePressEvent);
                      

                      In both cases the problem is error:
                      static assertion failed: Signal and slot arguments are not compatible.
                      214 | static_assert((QtPrivate::CheckCompatibleArguments<typename SignalType::Arguments, typename SlotType::Arguments>::value),

                      I assume it's because it's not possible to connect a QPointerEvent to a QMouseEvent, but how to get out of this?

                      Christian EhrlicherC 1 Reply Last reply
                      0
                      • A Actarus

                        @Christian-Ehrlicher Thanks, fixed.

                        I'm facing a couple of situations that in QT5 compile without problem but not in QT6:

                        connect(xychart->m_ChartViewer, &QChartViewer::needTrackLineXYChart, this, &AnalysisWindow::trackLineAxis);
                        

                        and

                        connect(m_ChartViewer, &QChartViewer::MouseIsPressed, this, &BaseViewPortComp::mousePressEvent);
                        

                        In both cases the problem is error:
                        static assertion failed: Signal and slot arguments are not compatible.
                        214 | static_assert((QtPrivate::CheckCompatibleArguments<typename SignalType::Arguments, typename SlotType::Arguments>::value),

                        I assume it's because it's not possible to connect a QPointerEvent to a QMouseEvent, but how to get out of this?

                        Christian EhrlicherC Online
                        Christian EhrlicherC Online
                        Christian Ehrlicher
                        Lifetime Qt Champion
                        wrote on last edited by
                        #34

                        Qt has no class named QChartViewer so I don't know this class. Most likely the signature of the signals changed so you have to adjust your slots accordingly - normal developer stuff.

                        Qt Online Installer direct download: https://download.qt.io/official_releases/online_installers/
                        Visit the Qt Academy at https://academy.qt.io/catalog

                        A 1 Reply Last reply
                        1
                        • Christian EhrlicherC Christian Ehrlicher

                          Qt has no class named QChartViewer so I don't know this class. Most likely the signature of the signals changed so you have to adjust your slots accordingly - normal developer stuff.

                          A Offline
                          A Offline
                          Actarus
                          wrote on last edited by
                          #35

                          @Christian-Ehrlicher Thanks Christian, fixed adjusting slots.

                          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