Portál AbcLinuxu, 12. května 2025 13:51

Dotaz: Qt - static/const/dynamic cast

Martin Stiborský avatar 25.12.2010 12:12 Martin Stiborský | skóre: 26 | blog: Stibiho bláboly | Opava
Qt - static/const/dynamic cast
Přečteno: 281×
Odpovědět | Admin

Ahoj,

Narazil jsem v Qt kódu jednoho příkladu na něco, čím si nejsem úplně jistý co dělá.

void BarDelegate::setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const
{
    model->setData(index, static_cast<QSlider*>( editor )->value() );
}

Jde o ten static_cast. Pokud to chápu správně, tak ten static cast vrátil pointer na ten jeden konkrétní QSlider widget, abych z něj mohl dostat hodnotu a nastavit ji modelu. Proč jsem nemohl použít přímo pointer který mám v parametru metody?

Díky mockrát.

Kvík ..

Řešení dotazu:


Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Řešení 1× (Martin Stiborský (tazatel))
25.12.2010 13:08 kovariadam | skóre: 12 | blog: biased | Košice/Brno
Rozbalit Rozbalit vše Re: Qt - static/const/dynamic cast
Odpovědět | | Sbalit | Link | Blokovat | Admin
QWidget neobsahuje metodu value. Obsahuje ju QSlider, preto to pretypovanie.
Řešení 1× (Martin Stiborský (tazatel))
David Watzke avatar 25.12.2010 13:22 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: Qt - static/const/dynamic cast
Odpovědět | | Sbalit | Link | Blokovat | Admin
Musíš si to přetypovat na správnej typ widgetu. Je tam QWidget* proto, že ta metoda umí pracovat se všema widgetama. Jinak na QObjecty používej spíš qobject_cast.
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
Martin Stiborský avatar 25.12.2010 13:36 Martin Stiborský | skóre: 26 | blog: Stibiho bláboly | Opava
Rozbalit Rozbalit vše Re: Qt - static/const/dynamic cast

Jo ono je to přetypování :) Ok, teď je jasno.

Děkuji vám pánové.

Kvík ..
David Watzke avatar 25.12.2010 14:23 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: Qt - static/const/dynamic cast
Jojo, třeba reinterpret_cast<X*>(pointer) je totéž jako (X*)pointer
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
Martin Stiborský avatar 25.12.2010 14:28 Martin Stiborský | skóre: 26 | blog: Stibiho bláboly | Opava
Rozbalit Rozbalit vše Re: Qt - static/const/dynamic cast

Super.

Btw, neplánuješ další díly seriálu o Qt? Třeba o takovýchto věcech, nebo probrat model/view v Qt, jsou to zajímavé a mocné věci.

Kvík ..
David Watzke avatar 25.12.2010 14:58 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: Qt - static/const/dynamic cast
Tohle jsou čistě C++ věci, do seriálu o Qt to nepatří. Model/view v tom seriálu probíral Petr Vaněk - osobně s tím nemám skoro žádný zkušenosti, zatím jsem si vždycky vystačil s obyč. widgety. Co se týče dalších dílů, nemám v plánu nic konkrétního, i když se v budoucnu může ještě objevit nějakej další díl.
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
25.12.2010 18:37 Sinuhet | skóre: 31
Rozbalit Rozbalit vše Re: Qt - static/const/dynamic cast
Tak to zcela urcite neni, treba const reinterpretem z typu neodstranite.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.