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.
  • 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