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í
×
eParkomat, startup z ČR, postoupil mezi finalisty evropského akcelerátoru ChallengeUp!
Robot na pivo mu otevřel dveře k opravdovému byznysu
Internet věcí: Propojený svět? Už se to blíží...
dnes 06:00 | Zajímavý software

OMG! Ubuntu! představuje emulátor terminálu Hyper (GitHub) postavený na webových technologiích (HTML, CSS a JavaScript). V diskusi k článku je zmíněn podobný emulátor terminálu Black Screen. Hyper i Black Screen používají framework Electron, stejně jako editor Atom nebo vývojové prostředí Visual Studio Code.

Ladislav Hagara | Komentářů: 3
dnes 06:00 | Zajímavý článek

I letos vychází řada ajťáckých adventních kalendářů. QEMU Advent Calendar 2016 přináší každý den nový obraz disku pro QEMU. Programátoři se mohou potrápit při řešení úloh z kalendáře Advent of Code 2016. Kalendáře Perl Advent Calendar 2016 a Perl 6 Advent Calendar přinášejí každý den zajímavé informace o programovacím jazyce Perl. Stranou nezůstává ani programovací jazyk Go.

Ladislav Hagara | Komentářů: 4
3.12. 16:24 | Nová verze

Byla vydána Mageia 5.1. Jedná se o první opravné vydání verze 5, jež vyšla v červnu loňského roku (zprávička). Uživatelům verze 5 nepřináší opravné vydání nic nového, samozřejmě pokud pravidelně aktualizují. Vydání obsahuje všechny aktualizace za posledního téměř půldruhého roku. Mageia 5.1 obsahuje LibreOffice 4.4.7, Linux 4.4.32, KDE4 4.14.5 nebo GNOME 3.14.3.

Ladislav Hagara | Komentářů: 9
3.12. 13:42 | Pozvánky

V Praze probíhá konference Internet a Technologie 16.2, volné pokračování jarní konference sdružení CZ.NIC. Konferenci lze sledovat online na YouTube. K dispozici je také archiv předchozích konferencí.

Ladislav Hagara | Komentářů: 0
2.12. 22:44 | Komunita

Joinup informuje, že Mnichov používá open source groupware Kolab. V srpnu byl dokončen dvouletý přechod na toto řešení. V provozu je asi 60 000 poštovních schránek. Nejenom Kolabu se věnoval Georg Greve ve své přednášce Open Source: the future for the European institutions (SlideShare) na konferenci DIGITEC 2016, jež proběhla v úterý 29. listopadu v Bruselu. Videozáznam přednášek z hlavního sálu je ke zhlédnutí na Livestreamu.

Ladislav Hagara | Komentářů: 24
2.12. 15:30 | Zajímavý projekt

Společnost Jolla oznámila v příspěvku Case study: Sailfish Watch na svém blogu, že naportovala Sailfish OS na chytré hodinky. Využila a inspirovala se otevřeným operačním systémem pro chytré hodinky AsteroidOS. Použita je knihovna libhybris. Ukázka ovládání hodinek na YouTube.

Ladislav Hagara | Komentářů: 8
2.12. 14:15 | Nová verze

Byla vydána verze 7.1.0 skriptovacího jazyka PHP používaného zejména k vývoji dynamických webových stránek. Jedná se o první stabilní verzi nejnovější větvě 7.1. Přehled novinek v dokumentaci. Podrobnosti v ChangeLogu. K dispozici je také příručka pro přechod z PHP 7.0.x na PHP 7.1.x.

Ladislav Hagara | Komentářů: 4
2.12. 12:55 | Nová verze

Google Chrome 55 byl prohlášen za stabilní. Nejnovější stabilní verze 55.0.2883.75 tohoto webového prohlížeče přináší řadu oprav a vylepšení (YouTube). Opraveno bylo také 36 bezpečnostních chyb. Mariusz Mlynski si například vydělal 22 500 dolarů za 3 nahlášené chyby (Universal XSS in Blink).

Ladislav Hagara | Komentářů: 4
2.12. 11:55 | Pozvánky

Máte rádi svobodný software a hardware nebo se o nich chcete něco dozvědět? Přijďte na 135. sraz spolku OpenAlt, který se bude konat ve čtvrtek 8. prosince od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5). Sraz bude tentokrát tématický. Bude retro! K vidění budou přístroje jako Psion 5mx nebo Palm Z22. Ze svobodného hardwaru pak Openmoko nebo čtečka WikiReader. Přijďte se i vy pochlubit svými legendami, nebo alespoň na pivo. Moderní hardware má vstup samozřejmě také povolen.

xkucf03 | Komentářů: 1
2.12. 00:10 | Nová verze

Byla vydána verze 3.2 svobodného systému pro detekci a prevenci průniků a monitorování bezpečnosti počítačových sítí Suricata. Z novinek lze zmínit například podporu protokolů DNP3 a CIP/ENIP, vylepšenou podporu TLS a samozřejmě také aktualizovanou dokumentaci.

Ladislav Hagara | Komentářů: 0
Kolik máte dat ve svém domovském adresáři na svém primárním osobním počítači?
 (32%)
 (24%)
 (29%)
 (7%)
 (5%)
 (3%)
Celkem 771 hlasů
 Komentářů: 50, poslední 29.11. 15:50
Rozcestník
Reklama

Dotaz: Špatná vazba mezi QTableView a QFileSystemModel

25.6.2013 10:56 exo
Špatná vazba mezi QTableView a QFileSystemModel
Přečteno: 295×
Ahoj, mám takový problém. Potřebuji zobrazovat soubory v seznamu QTableVeiw. Pro načítání souborů jsem použil QFileSystemModel. Problém je ale ten, že při této kombinaci nejsem schopný donutit seznam postavit kursor na(označit modře) první řádek. Vypadá to, jako by vazba mezi QTableVeiw a QFileSystemModel nebyla korektní, případně používám něco špatně. Základní kód vypadá takto:

mFileBoxWidget::mFileBoxWidget(QWidget *parent) :
    QTableView(parent)
    ,model(new QFileSystemModel())
{
    this->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
    this->setShowGrid(false);
    this->verticalHeader()->setVisible(false);
    this->installEventFilter(this);
    model->setReadOnly(true);
    this->setModel(model);
    this->horizontalHeader()->setSectionResizeMode(0, QHeaderView::Stretch ); 
    this->setColumnWidth(1,70);
    this->setColumnWidth(2,70);
    this->setColumnWidth(3,110);
    this->setRootIndex(model->setRootPath("C://"));
    this->setSelectionMode(QAbstractItemView::SingleSelection);
    this->setSelectionBehavior(QAbstractItemView::SelectRows);
    //this->selectRow(0); //Does not work - goto first row
    //this->setCurrentIndes(Index); //Does not work - goto index x=0 y=0
}
Vyzkoušel jsem již všechno. a) tento kód je tvořen jako přetížení qwidget. Zkusil jsem to přepsat tak, že přímo založím mainwindow, do něj vložím qtableview a pak přidám QFileSystemModel b) Myslel jsem že problém je v názvu model (takže jsem jej přejmenoval na myModel) c) Myslel jsem že problém je v tom že akrivuju view před model. Takže jsem zajistil aby byl model aktivovaný dříve. d) Myslel jsem že problém je ve verzi QT (používám 5.0). Otestoval jsem to v 4.8, 5.0, 5.1, všude stejné.

Problém je přesně v tom, že kursor i přes pokus jej nastavit končí vždy kde se mu zamane. Navíc pokud začnu procházet podadresáře, časem se program úplně zhroutí na chybu:
Microsoft Visual C++ Runtime Library
---------------------------
This application has requested the Runtime to terminate it in an unusual way.
Zdá se jako by byl kursor v nestandardní poloze, a při pokusu řídit jej šipkou dolů/nahoru spadne na tuto chybu. Pokud použiji myš, program nespadne, ale kursor je samozřejmě pokaždé někde víte kde... :-).

Pohybovat se v seznamu chci jako v klasickém souborovém manažeru, tedy enter dovnitř adresáře či spustit soubor, backspace o úroveň výš. To funguje dobře (tedy zde problém nehledám), pouze se nenastavuje ten šílený krusor tam kam má, tedy po vstupu do nějaké cesty nejlépe vždy na první řádek.

Řešení dotazu:


Odpovědi

25.6.2013 14:42 Ivan
Rozbalit Rozbalit vše Re: Špatná vazba mezi QTableView a QFileSystemModel
V cem to buildujes(qmake?, cmake?, Mingw?, MSVC?) a jaky verze knihoven pouzivas?

Ta chyba vypada, jako kdyby jsi kombinoval nekompatibilni verze knihoven(MSVC vs. Mingw Releage vs. Debug).

25.6.2013 15:37 exo
Rozbalit Rozbalit vše Re: Špatná vazba mezi QTableView a QFileSystemModel
Hm... to je správná otázka. sice jsem stahoval QT For Windows with mingw. Ale buildil jsem tam QXT a měnil path takže kdo ví v čem se to teď buildí, mrknu se na nastavení projektu, ale myslím že tak jednoduché to nebude. Dělá to ve více prostředích, Testoval to ještě jeden kluk a má ten stejný problém přičemž jeho prostředí neznám. Nicméně že by ho měl nastaveno stejně "blbě" jako já, to by byla příliš velká náhoda.
26.6.2013 06:20 exo
Rozbalit Rozbalit vše Re: Špatná vazba mezi QTableView a QFileSystemModel

Tak v "postup sestavování" mám na prvním místě qmake:

qmake.exe D:\home\all\develop\qt5\mManager\mManager.pro -r -spec win32-g++ "CONFIG+=debug" "CONFIG+=declarative_debug" "CONFIG+=qml_debug"

a na druéhém místě ming32

25.6.2013 20:52 Roman Došek | skóre: 17 | blog: flare
Rozbalit Rozbalit vše Re: Špatná vazba mezi QTableView a QFileSystemModel
Sice jsem to nezkoušel, ale nebude náhodou fungovat něco jako
this->setCurrentIndex(model->index(0, 0));
nebo
this->setCurrentIndex("/ceste/k/souboru/ktery/je/jako/prvni");
V té ukázce není definována proměnná Index, takže těžko z toho říct, co tam vlastně dáváš. Ty pády jsou pravděpodobně tím, že to pak nastaví index na nějaký neplatný a když to k tomu přistoupí, tak to spadne. Pomocí debuggeru se dá docela snadno podívat co to tam dává.

25.6.2013 23:20 exo
Rozbalit Rozbalit vše Re: Špatná vazba mezi QTableView a QFileSystemModel

No samosebou ze v indexu mam (0,0) :-). Obe uvadene varianty jsem zkousel. Vsechny varianty jsem zkousel, proste podle mne je chyba v QFileSystemModelu.

Si to klidne vyzkousejte, Udelejte obycejne mainwindow, do nej dejte jedno qtableview a do qtableview priradte model qfilesystemmodel.

Pokud cestu nastavite jinak nez pres m_tableView->setRootIndex(myModel->setRootPath(QDir::homePath())); proste se vam kursor na prvni radek nepodari dostat.

Nechapu to... bud je chyba v modelu a nebo delam neco blbe, ale nechapu co.
26.6.2013 10:13 Roman Došek | skóre: 17 | blog: flare
Rozbalit Rozbalit vše Re: Špatná vazba mezi QTableView a QFileSystemModel
Vím že to tam máš zakomentované, ale u mě this->selectRow(0); normálně funguje - řádek je vybraný - sice není zamodřený, ale to je na Windows standardní chování.
26.6.2013 12:00 exo
Rozbalit Rozbalit vše Re: Špatná vazba mezi QTableView a QFileSystemModel
A postavíš kursor na druhý řádek pomocí this->selectRow(1); Nebo na jakýkoliv jiný? Protože někdy ho mám taky na prvním místě, ale nemůžu ho dát nikam jinam. Navíc mám i jinde použité jiné qtableview, které nepracuje s filesystem ale s úkoly a mysql a řádek normálně nastavím včetně toho, že je modrý.
Řešení 1× (Roman Došek)
26.6.2013 18:46 Roman Došek | skóre: 17 | blog: flare
Rozbalit Rozbalit vše Re: Špatná vazba mezi QTableView a QFileSystemModel
Problém je v tom, že QFilesystemModel je asynchronní, data se nahrávají v jiném threadu, proto hned po vytvoření toho objektu a nastavení adresáře neexistují platné indexy. Řešením je udělat výběr ve slotu připojeném na signál directoryLoaded modelu.
connect(model, SIGNAL(directoryLoaded(QString)), this, SLOT(onLoaded()));

void MainWindow::onLoaded()
{

    QModelIndex index = model->index(model->rootPath());

    view->setCurrentIndex(index.child(0, index.column()));
}
27.6.2013 09:37 exo
Rozbalit Rozbalit vše Re: Špatná vazba mezi QTableView a QFileSystemModel
Ty brďo, tak na to bych asi nikdy nepřišel :-). Dík moc za radu. Testnu to a dám vědět jak jsem dopadnul.
27.6.2013 10:15 Ivan
Rozbalit Rozbalit vše Re: Špatná vazba mezi QTableView a QFileSystemModel
Offtopic - u takovych problemu je vyhoda, ze je QTcko multiplatformni.

MSVC je dobry kompilator, ktery pri debug buildu generuje kod, ktery obsahuje spoustu internich kontrol (stack frame, vnitrni kontroly v stl knihovne). Navic QTcko v v debug buildu (QtCored.dll, QtGuid.dll) taky obsahuje ruzne vnitrni kontroly(napr. thread affinity).

No a na Linuxu je zase valgrind.

Pri kombinaci obojiho se daji najit i ty nejzakernejsi chyby.
27.6.2013 11:08 exo
Rozbalit Rozbalit vše Re: Špatná vazba mezi QTableView a QFileSystemModel
Tak opravdu... vyřešeno. Díky moc :-).

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.