abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 20:33 | Nová verze

    Byla vydána (Mastodon, 𝕏) nová verze 2024.3 linuxové distribuce navržené pro digitální forenzní analýzu a penetrační testování Kali Linux (Wikipedie). Přehled novinek se seznamem nových nástrojů v oficiálním oznámení.

    Ladislav Hagara | Komentářů: 0
    dnes 14:55 | Bezpečnostní upozornění

    Ve FreeBSD byla nalezena a opravena kritická bezpečnostní chyba CVE-2024-43102 s CVSS 10.

    Ladislav Hagara | Komentářů: 2
    dnes 14:22 | Komunita

    K posouzení byly předány patche přidávající do linuxových stromů zařízení (device trees) zařízení s SoC A7 až A11 od Applu (iPhone, iPad, iPod a Apple TV).

    Ladislav Hagara | Komentářů: 0
    dnes 13:22 | Zajímavý článek

    Vývoj webového prohlížeče nad renderovacím jádrem Servo, aktuální příspěvek na blogu Serva (Wikipedie). Vedle referenčního prohlížeče servoshell vzniká prohlížeč Verso. Vyzkoušet lze noční sestavení.

    Ladislav Hagara | Komentářů: 0
    dnes 02:22 | Nová verze

    Unicode Consortium, nezisková organizace koordinující rozvoj standardu Unicode, oznámila vydání Unicode 16.0. Přidáno bylo 5 185 nových znaků. Celkově jich je 154 998. Přibylo 7 nových Emoji.

    Ladislav Hagara | Komentářů: 5
    dnes 01:00 | IT novinky

    Byla vydána první major verze 1.0 oficiálního firmwaru pro zařízení Flipper Zero (Wikipedie). Po třech letech vývoje. Přehled novinek i s náhledy a videi v příspěvku na blogu: podpora aplikací třetích stran, nový NFC podsystém, podpora JavaScriptu pro psaní aplikací, vylepšení spotřeby, zrychlení Bluetooth přenosu…

    Ladislav Hagara | Komentářů: 4
    včera 23:33 | Nová verze

    Radicle, distribuovaná alternativa k softwaru pro spolupráci jako např. GitLab, byl vydán ve verzi 1.0. Nyní obsahuje nad gitem postavený, rozšiřitelný protokol pro diskuze a nakládání s patchi, autentizaci a autorizaci, integraci Toru a uživatelské rozhraní v příkazovém řádku či jednoduché webové rozhraní pro prohlížení repozitářů. Projekt byl dříve představen a diskutován na Linux Weekly News.

    Fluttershy, yay! | Komentářů: 0
    včera 15:11 | Nová verze

    Byla vydána nová verze 6.7 živé linuxové distribuce Tails (The Amnesic Incognito Live System), jež klade důraz na ochranu soukromí uživatelů a anonymitu. Přehled změn v příslušném seznamu. Tor Browser byl povýšen na verzi 13.5.3. Thunderbird na verzi 115.15.0. OnionShare z verze 2.2 na verzi 2.6.

    Ladislav Hagara | Komentářů: 0
    včera 12:22 | IT novinky

    Rozsudky Soudního dvora Evropské unie ve věcech C-465/20 P (Apple) a C-48/22 P (Google a Alphabet): Irsko poskytlo společnosti Apple protiprávní daňová zvýhodnění ve výši 13 miliard eur a je povinné je získat zpět. Byla potvrzena pokuta ve výši 2,4 miliardy eur uložená společnosti Google za to, že zneužívala svého dominantního postavení tím, že upřednostňovala vlastní službu srovnávání výrobků.

    Ladislav Hagara | Komentářů: 53
    včera 03:22 | Nová verze

    Apache Cassandra (Wikipedie), tj. open source NoSQL distribuovaná databáze, byla vydána v nové major verzi 5.0. Přehled novinek v příspěvku na blogu a v souboru NEWS na GitHubu.

    Ladislav Hagara | Komentářů: 0
    Rozcestník

    Dotaz: qt model / view tableview

    31.7.2009 16:06 vlastagf | skóre: 11
    qt model / view tableview
    Přečteno: 338×
    Příloha:

    Ahoj!

    Pred par dny jsem zacal delat na takove mensi aplikaci, pro vyvoj jsem si vybral C++ a Qt, i kdyz ani s jednim nemam prakticky zadne zkusenosti. S C++ to docela jde, prechod z C# a Javy neni tak hrozny, clovek spis citi prijemnou volnost -)

    Ted k problemu, na zacatku programu potrebuju nacist nejaka data skrz gui a pri behu je pripadne lehce editovat, precetl jsem si nejake tutorialy na model / view pattern a implementoval celkem snadno editovani dat pres model a tableView.

    Co se mi ale nedari je vkladat a mazat radky z tableView pres gui, zatim jsem to ale pomoci nejakych signalu tlacitek a slotu v modelu celkem dobre obesel. Jako dalsi variantu vidim upraveni tableView a odchytavani nejakych eventu, radsi bych vsak volil nejakou "konfiguracni" cestu, jde to nejak? Ciste subjektivne, je lepsi pouzivat tlacitka se signaly nebo poupravit tableView? Nebo jsem jen v modelu zapomnel implementovat nejakou fci, ktera to umozni?

    Pak by me zajimalo, jak mohu z modelu (nebo z delagatu, k tomu se vratim) upravit vzhled samotne tableView, vim ze pres fci data(...) muzu neco vracet na dotaz Qt::SizeHintRole, ale s tim nemam zadne uspechy. Rad bych totiz, aby se sloupecky (treba podle nejakeho pomeru) roztahly po tableView do 100% sirky (viz priloha) a jeste bych chtel nejakym zpusobem upravit vysku radku.

    A na zaver bych se rad zeptal, k cemu je v model / view patternu dobry delegate? S cim mi muze pomoci?
     

    Za kazdou radu nebo tip budu moc vdecny, diky.

    Odpovědi

    2.8.2009 02:18 vlastagf | skóre: 11
    Rozbalit Rozbalit vše Re: qt model / view tableview

    Tak se mi to po dalsim usilovnem patrani a zkouseni podarilo vyresit.

    Misto QTableView pro zobrazeni pouzivam vlastnim tridu dedici prave QTableView.

    Pro pridavani a mazani zaznamu jsem si overridnul funkci keyPressEvent (..) a podle zrovna oznacenych radku posilam pozadavky primo do modelu, kde jsem implementoval funkce insertRows(..) a removeRows(..).

    Pro upravu layoutu jsem nejdriv implementoval funkci data(..) v modelu tak, aby pri volani, kdy role == Qt::SizeHintRole, vracela percentualni velikost jednotlivych sloupecku. A funkci resizeEvent(..) v mem QTableView jsem implementoval takto:

    (misto Qt::SizeHintRole by samozrejme sla pouzit jakakoliv jina Qtckem nepouzita hodnota, ale nezaznamenal jsem, ze by QTableView funkci data(..) s arg. role == Qt::SizeHintRole nekdy volal)

    {

      int count = model()->columnCount();

      int total = 0;

      //rozdelim podle pomeru z hintu

      for (int i = 0; i < count - 1; i++)

      {

        const QModelIndex index = model()->index(0, i);

        QVariant hint = model()->data(index, Qt::SizeHintRole);

        int size = (width() / 100) * hint.toInt();

        horizontalHeader()->resizeSection(i, size);

        total = total + size;

      }

      //posledni sloupec dostane zbytek mista + rezervu kvuli scrollu

      horizontalHeader()->resizeSection(count - 1, width() - total - 20);

    }


     

    Treba nekomu pomuze...

    Založit nové vláknoNahoru

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

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.