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

    Crown je multiplatformní open source herní engine. Zdrojové kódy jsou k dispozici na GitHubu pod licencí MIT a GPLv3+. Byla vydána nová verze 0.64. Vyzkoušet lze online demo.

    Ladislav Hagara | Komentářů: 0
    dnes 03:44 | Nová verze

    NVIDIA na konci ledna vydala v beta verzi nativního linuxového klienta své cloudové herní služby GeForce NOW. Včera oznámila ukončení beta verze a oficiální podporu Linuxu.

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

    Byla vydána nová verze 3.5.0 nástroje pro inkrementální kopírování souborů rsync (Wikipedie). Přehled oprav a vylepšení v souboru NEWS. Řešeno je 33 zranitelností.

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

    Organizace Apache Software Foundation (ASF) vydala verzi 31 integrovaného vývojového prostředí a vývojové platformy napsané v Javě NetBeans (Wikipedie). Přehled novinek na GitHubu. Instalovat lze také ze Snapcraftu a Flathubu.

    Ladislav Hagara | Komentářů: 0
    včera 16:44 | IT novinky

    Firma IBM uvedla svůj první mikropočítač Personal Computer před 45 lety, v srpnu 1981. Základní konfigurace modelu 5150 za 1 565 tehdejších dolarů obsahovala desktop s Intel 8088 a 16KB RAM, Color Graphics Adapter a klávesnici. Právě klávesnice Model F/XT vybavené kapacitními spínači, vlivné a s převodníkem dodnes použitelné, připomíná sběratelský web Admiral Shark's Keyboards.

    |🇵🇸 | Komentářů: 0
    včera 14:22 | IT novinky

    Slovensko odhalilo ruské součástky ve dvou testovaných zařízeních na zjišťování přestupků v silničním provozu a označilo je za bezpečnostní riziko. S odvoláním na vyjádření slovenského Národního bezpečnostního úřadu (NBÚ) to včera oznámil ministr vnitra Matúš Šutaj Eštok. Zároveň ohlásil ukončení spolupráce svého úřadu s dodavatelem části uvedeného systému, slovenskou společností Soitron. Opozice, která na problematické kamery upozornila už dříve, vyzvala k odvolání ministra vnitra.

    Ladislav Hagara | Komentářů: 10
    včera 06:00 | IT novinky

    Dle plánu dnes ve 13:00 proběhne veřejný test eDokladů. Jeho cílem je ověřit připravenost aplikace a související infrastruktury na vysokou souběžnou zátěž před podzimními komunálními volbami.

    Ladislav Hagara | Komentářů: 22
    včera 04:11 | Nová verze

    Byla vydána nová verze 3.47 frameworku Flutter (Wikipedie) pro vývoj mobilních, webových i desktopových aplikací a nová verze 3.13 souvisejícího programovacího jazyka Dart (Wikipedie).

    Ladislav Hagara | Komentářů: 0
    včera 04:00 | Nová verze

    Byla vydána nová verze 26.1 linuxové distribuce Manjaro (Wikipedie). Její kódové jméno je Bian-May. Ke stažení je v edicích GNOME, KDE PLASMA a XFCE.

    Ladislav Hagara | Komentářů: 0
    12.8. 19:00 | IT novinky

    Na akci Made by Google 2026 (YouTube) byla oficiálně představena jedenáctá generace telefonů Pixel s novým čipem Google Tensor G6 a hodinky Pixel Watch 5.

    Ladislav Hagara | Komentářů: 2
    Které desktopové prostředí na Linuxu používáte?
     (10%)
     (7%)
     (2%)
     (18%)
     (30%)
     (6%)
     (6%)
     (2%)
     (15%)
     (23%)
    Celkem 2386 hlasů
     Komentářů: 31, poslední včera 00:27
    Rozcestník


    Dotaz: qt model / view tableview

    31.7.2009 16:06 vlastagf | skóre: 11
    qt model / view tableview
    Přečteno: 504×
    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.