Anzeige:
Ergebnis 1 bis 8 von 8

Thema: Qt: QObject::setProperty()

  1. #1
    Registrierter Benutzer
    Registriert seit
    16.09.2002
    Beiträge
    73

    Qt: QObject::setProperty()

    Hallo Mädels und Jungens,

    ich habe ein Problem mit der setProperty-Methode:

    Das funktioniert:
    Code:
    QWidget *w = new QWidget(...);
    bool b = false;
    QVariant var(b);
    w->setProperty("enabled",var); //Das sollte das Widget disablen
    Aber das funktioniert nicht:
    Code:
    QWidget *w = new QWidget(...);
    QVariant var(QString("0"));
    w->setProperty("enabled", var); //Das sollte das Widget disablen
    Aber warum funktionierts nicht? In der Doku steht, daß von String automatisch nach bool gecastet werden kann.

  2. #2
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Geht var(QString("false")) ?

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  3. #3
    Registrierter Benutzer
    Registriert seit
    16.09.2002
    Beiträge
    73
    Geht var(QString("false")) ?
    Nee, hab ich auch schon probiert.

  4. #4
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    hmm die Doku sagt
    Returns TRUE if the variant has type Int, UInt or Double and its value is non-zero; otherwise returns FALSE
    Da steht nix von String.
    Aber vielleicht geht ein null String oder ein leerer.

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  5. #5
    Registrierter Benutzer
    Registriert seit
    16.09.2002
    Beiträge
    73
    Jepp, das steht so unter QVariant::toBool() aber bei QVariant::canCast() ist ne Tabelle und in der steht eben, dass von String automatisch nach Bool gecastet werden kann. Ich muesste nochmal ausprobieren ob der Cast mit ints usw funktioniert - Wenn ja, scheint das ein Fehler in der Doku zu sein oder ich interpretiere es einfach falsch.

  6. #6
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    In meiner DOcku zu 3.1.2 steht das nicht

    String -> CString, Int, Uint, Double, Date, Time, DateTime, KeySequence, Font, Color

    CString -> String
    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  7. #7
    Registrierter Benutzer
    Registriert seit
    16.09.2002
    Beiträge
    73
    Hihi, ist schon lustig. Ich hab auch die 3.1.2 und da steht:
    String --> CString, Int, Uint, Bool, Double, Date, Time, DateTime, KeySequence, Font, Color
    Irgendjemand muss doch da an der Doku rumgeschraubt haben.
    Aber egal, jetzt weiss ich wenigstens, dass das so nicht funktioniert. Trotzdem danke anda_skoa

    Hatte noch ne Idee: Eine Klasse von QVariant ableiten und canCast() und toBool() erweitern. Das dumme ist nur, dass Trolltech an diese Moeglichkeit wohl nicht gedacht hat und keine der Methoden als virtual deklariert hat.
    Geändert von brotzi (20-01-2004 um 17:49 Uhr)

  8. #8
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Original geschrieben von brotzi
    Hihi, ist schon lustig. Ich hab auch die 3.1.2 und da steht:
    Irgendjemand muss doch da an der Doku rumgeschraubt haben.
    Aber egal, jetzt weiss ich wenigstens, dass das so nicht funktioniert. Trotzdem danke anda_skoa
    Oh, du hast recht.
    Muss in der Firma doch eine andere Version der Doku haben.


    Hatte noch ne Idee: Eine Klasse von QVariant ableiten und canCast() und toBool() erweitern. Das dumme ist nur, dass Trolltech an diese Moeglichkeit wohl nicht gedacht hat und keine der Methoden als virtual deklariert hat.
    Das würde die Instanzen der Klasse unnötig größer machen.
    QVariant ist ein möglichst kleiner Transportwrapper.

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •