IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Discussion :

Problème avec Qt::GlobalColor

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Août 2008
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 34
    Par défaut Problème avec Qt::GlobalColor
    Bonjour, j'ai récupéré le programme engauge digitizer disponible ici. Le programme est à la base écrit en qt3. J'ai donc utiliser le script qt3toqt4 pour le « convertir en qt4 ». À la suite de ça, je fait
    qmake digitizer.pro
    make
    Je tombe sur l'erreur de compilation suivante
    src/colorchooser.cpp: In member function ‘void ColorChooser::loadForegroundPixmap(QRgb)’:
    src/colorchooser.cpp:261:23: erreur: request for member ‘rgb’ in ‘(Qt::GlobalColor)3u’, which is of non-class type ‘Qt::GlobalColor’
    src/colorchooser.cpp:263:23: erreur: request for member ‘rgb’ in ‘(Qt::GlobalColor)2u’, which is of non-class type ‘Qt::GlobalColor’
    make: *** [src/.objs/colorchooser.o] Erreur 1
    Le problème c'est que je ne comprends pas ce que signifient les « 2u » et « 3u » et comment corriger cela.
    Voici le code de la fonction qui pose soucis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    void ColorChooser::loadForegroundPixmap(QRgb rgbBg)
    {
      // build foreground/background pixmap. for the foreground color we use black or white,
      // whichever is furthest in rgb space from the background color
      int width = ChooserWidth + 2 * ChooserPadding;
      QImage imageScale(width, m_scaleHeight, 32);
     
      int rBg, gBg, bBg;
      QColor colorBg(rgbBg);
      colorBg.rgb(&rBg, &gBg, &bBg);
     
      QRgb rgbFg;
      int distanceBlack = (rBg - 0) * (rBg - 0) + (gBg - 0) * (gBg - 0) + (bBg - 0) * (bBg - 0);
      int distanceWhite = (rBg - 255) * (rBg - 255) + (gBg - 255) * (gBg - 255) + (bBg - 255) * (bBg - 255);
      if (distanceWhite > distanceBlack)
        rgbFg = Qt::white.rgb();
      else
        rgbFg = Qt::black.rgb();
     
      for (int x = 0; x < width; x++)
        for (int y = 0; y < m_scaleHeight; y++)
        {
          // show an triangle with bottom side on the left, and point on the right
          if (x < (y * width) / (m_scaleHeight - 2 * ChooserFrame))
            setPixelRGB(&imageScale, x, y, rgbBg);
          else
            setPixelRGB(&imageScale, x, y, rgbFg);
        }
     
      pixmapForeground.convertFromImage(imageScale, Qt::ThresholdDither);
     
      if (m_discretizeMethod == DiscretizeForeground)
      {
        scaleCanvas->setBackgroundPixmap(pixmapForeground);
        scaleCanvas->update();
      }
    }
    Qu'en pensez-vous ?

  2. #2
    Rédacteur

    Avatar de johnlamericain
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2004
    Messages
    3 742
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 3 742
    Par défaut
    Le problème se trouve à ce niveau là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (distanceWhite > distanceBlack)
        rgbFg = Qt::white.rgb();
      else
        rgbFg = Qt::black.rgb();
    Qt::white et Qt::black ne sont pas des classes ou fonctions mais font partis d'une enum appellé Qt::GlobalColor. Il est possible qu'à l'époque de Qt 3 cela retourné une QColor mais ce n'est plus le cas.

    Essaye :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (distanceWhite > distanceBlack)
        rgbFg = QColor(Qt::white).rgb();
      else
        rgbFg = QColor(Qt::black).rgb();

  3. #3
    Membre averti
    Inscrit en
    Août 2008
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 34
    Par défaut
    C'était bien ça. Merci.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. VC++ Direct3D8, problème avec LPD3DXFONT et LPD3DTEXTURE8
    Par Magus (Dave) dans le forum DirectX
    Réponses: 3
    Dernier message: 03/08/2002, 11h10
  2. Problème avec [b]struct[/b]
    Par Bouziane Abderraouf dans le forum CORBA
    Réponses: 2
    Dernier message: 17/07/2002, 10h25
  3. Problème avec le type 'Corba::Any_out'
    Par Steven dans le forum CORBA
    Réponses: 2
    Dernier message: 14/07/2002, 18h48
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo