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í
×
    včera 18:00 | IT novinky

    Na Humble Bundle běží akce Linux: All the Things by O'Reilly a Picos, HATs, and More by Raspberry Pi Press. Elektronické knihy lze koupit se slevou a současně podpořit organizace Code for America a Raspberry Pi Foundation.

    Ladislav Hagara | Komentářů: 1
    včera 14:00 | Komunita

    FreeCAD (Wikipedie), tj. svobodný multiplatformní parametrický 3D CAD, má nový vtipný a současně užitečný doplněk Banana For Scale (GitHub). Aktuálně umožňuje do výkresu vložit banán nebo plechovku pro porovnání a určení měřítka.

    Ladislav Hagara | Komentářů: 4
    včera 12:00 | Komunita

    Blender Studio nedávno oznámilo plán vytvořit svůj první otevřený (open source) celovečerní film. Film by se měl jmenovat Overgrown (YouTube). Film vznikne, pokud se zajistí financování. Prvním krokem je získat 7 000 předplatitelů Blender Studia. Cena je od 11,50 eur měsíčně. Aktuálně počet předplatitelů je 5 289. Předplatné pokryje 20 % nákladů. Zbytek, 80 % nákladů, má být financován externími producenty nebo distributory.

    Ladislav Hagara | Komentářů: 0
    12.7. 01:11 | Nová verze

    Byl vydán Debian 13.6, tj. šestá opravná verze Debianu 13 s kódovým názvem Trixie a Debian 12.15, tj. poslední patnáctá opravná verze Debianu 12 s kódovým názvem Bookworm, k dispozici je LTS. Řešeny jsou především bezpečnostní problémy, ale také několik vážných chyb. Instalační média Debianu 13 a Debianu 12 lze samozřejmě nadále k instalaci používat. Po instalaci stačí systém aktualizovat.

    Ladislav Hagara | Komentářů: 0
    10.7. 16:11 | Bezpečnostní upozornění

    V jádře Linux byla nalezena a v upstreamu již byla opravena kritická zranitelnost GhostLock aneb CVE-2026-43499. Lokálnímu uživateli umožňuje získat práva roota a také obejít kontejnerovou izolaci. Zranitelnost existovala v Linuxu 15 let, tj. od roku 2011, od Linuxu verze 2.6.39.

    Ladislav Hagara | Komentářů: 2
    10.7. 13:55 | IT novinky

    Evropská komise předběžně shledala, že návykový design aplikací Instagram a Facebook od americké společnosti Meta porušuje unijní nařízení o digitálních službách (DSA). Návykový design zahrnuje například takzvané nekonečné posouvání, automatické přehrávání videí, tzv. push notifikace, kdy aplikace uživatele vybízí k návratu do jejího prostředí, či vysoce personalizovaný algoritmus, který rychle pozná, co uživatele baví a snaží

    … více »
    Ladislav Hagara | Komentářů: 18
    10.7. 12:11 | Nová verze

    Byla vydána verze 1.97.0 programovacího jazyka Rust (Wikipedie). Podrobnosti v poznámkách k vydání. Vyzkoušet Rust lze například na stránce Rust by Example.

    Ladislav Hagara | Komentářů: 0
    10.7. 05:00 | IT novinky

    Švýcarská společnost Punkt. má nově v nabídce telefon Punkt. MC03. Telefon byl navržen ve Švýcarsku s důrazem na soukromí a digitální suverenitu a vyroben v Německu. V telefonu běží operační systém AphyOS (Apostrophy OS) založený na AOSP (Android Open Source Project) 15. Cena telefonu je 745 eur.

    Ladislav Hagara | Komentářů: 26
    10.7. 04:44 | Nová verze

    TypeScript (Wikipedie), tj. JavaScript rozšířený o statické typování a další atributy, byl vydán v nové verzi 7.0. Kompilátor byl kvůli výkonu přepsán z TypeScriptu do Go.

    Ladislav Hagara | Komentářů: 0
    9.7. 17:00 | IT novinky

    Europarlament podpořil pozměněnou verzi výjimky známé jako „chat control 1.0“ umožňující firmám skenovat soukromou komunikaci na internetu kvůli ochraně dětí před zneužitím. Pozměňovací návrhy přijaté europoslanci však počítají s tím, že z výjimky bude vyřazena šifrovaná komunikace. Výjimka přestala platit začátkem dubna poté, co se Evropský parlament a Rada EU nedokázaly shodnout na jejím prodloužení. Rada následně přijala

    … více »
    Ladislav Hagara | Komentářů: 12
    Které desktopové prostředí na Linuxu používáte?
     (11%)
     (7%)
     (2%)
     (17%)
     (31%)
     (4%)
     (6%)
     (2%)
     (15%)
     (25%)
    Celkem 2117 hlasů
     Komentářů: 30, poslední 3.4. 20:20
    Rozcestník


    Dotaz: qt4 QApplication mimo hlavní thread

    13.7.2010 10:50 vencas | skóre: 32
    qt4 QApplication mimo hlavní thread
    Přečteno: 348×
    Zdravím,

    mám program, jehož hlavní větev běží v pythonu, výpočetní část je v c++ a chtěl bych (ale jen někdy a ne na začátku programu) spustit několik oken přes PyQt4. Mám tam teď něco jako
    from PyQt4 import QtGui
    qapp=QtGui.QApplication(sys.argv)
    import thread
    thread.start_new_thread(qapp.exec_,())
    
    protože chci, aby mi qapp.exec_() běželo na pozadí. Sice to funguje (okna klikají etc), ale křičí to na mě
    QApplication::exec: Must be called from the main thread
    
    což je ale přesně to, co nechci -- v době kdy se pouští Qt, už několik ostatních threadů běží.

    Lze to nějak obejít? Může být i pomocí c++.

    Díky.

    Odpovědi

    14.7.2010 09:49 majo
    Rozbalit Rozbalit vše Re: qt4 QApplication mimo hlavní thread
    skus presunut riadok:

    qapp=QtGui.QApplication(sys.argv)

    na zaciatok threadu, mam pocit ze podmienkou je iba aby new a exec boli v kontexte jedneho a toho isteho threadu.
    Vojta Drbohlav avatar 14.7.2010 11:14 Vojta Drbohlav | skóre: 26 | blog: Blog | Strahov
    Rozbalit Rozbalit vše Re: qt4 QApplication mimo hlavní thread
    To není pravda, alespoň v C++ to takhle nefunguje. Nepovedlo se mi nijak donutit QApplication běžet mimo main thread.
    14.7.2010 12:56 majo
    Rozbalit Rozbalit vše Re: qt4 QApplication mimo hlavní thread
    pripajam framgment z existujuce a funkcnej QT4 C++ aplikacie kde QApp je spustene v tele threadu ineho ako main:
    void UserInterface::run()
    {
        waitForStart();
        const char* argv[1] = { "rdp" };
        int argc = 1;
        app = new QApplication(argc, (char **) argv);
        view = new Window(this, container);
        view->showMe();
        app->exec();
        delete view;
        view = 0;
        delete app;
        app = 0;
    }
    
    Vojta Drbohlav avatar 14.7.2010 13:02 Vojta Drbohlav | skóre: 26 | blog: Blog | Strahov
    Rozbalit Rozbalit vše Re: qt4 QApplication mimo hlavní thread
    To je divný, dělal jsem to úplně stejně, jen jsem neměl na začátku waitForStart();, zkusím to.
    14.7.2010 20:50 majo
    Rozbalit Rozbalit vše Re: qt4 QApplication mimo hlavní thread
    wait nie qt funkcia tudiz to ani nepojde, napada ma jedna zmena - moj thread nebol QThread ale Poco::Thread - inak povedane - obycajny pthread - teoreticky by aj to mohlo byt rozdiel.
    Vojta Drbohlav avatar 14.7.2010 21:12 Vojta Drbohlav | skóre: 26 | blog: Blog | Strahov
    Rozbalit Rozbalit vše Re: qt4 QApplication mimo hlavní thread
    Jojo máš pravdu, je potřeba QApplication vytvářet v jiném threadu než je QThread, například použít zmíněné Poco, nebo rovnou pthread.
    14.7.2010 21:28 vencas | skóre: 32
    Rozbalit Rozbalit vše Re: qt4 QApplication mimo hlavní thread
    Tak jsem to zkoušel, ale v Pythonu když pustím QApplication mimo hlavní thread, tak se sice varování umlčí, ale nezobrazují se potom okýnka vytvořená v hlavním threadu (nebo nějakém jiném) a dostávám taky warning QPixmap: It is not safe to use pixmaps outside the GUI thread.

    Asi takhle:
    import sys,threading
    def startQt4():
       qapp=QApplication(sys.argv)
       qapp.exec_()
    threading.start_new_thread(startQt4,())
    # ...
    
    David Watzke avatar 14.7.2010 23:19 David Watzke | skóre: 74 | blog: Blog... | Praha
    Rozbalit Rozbalit vše Re: qt4 QApplication mimo hlavní thread
    Obecně je vhodný pracovat s GUI jen z jednoho vlákna (z toho, kde běží QApplication). To taky nejde?
    “Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
    Jardík avatar 15.7.2010 00:09 Jardík | skóre: 40 | blog: jarda_bloguje
    Rozbalit Rozbalit vše Re: qt4 QApplication mimo hlavní thread

    Obecně každý QObject potřebuje ke své funkčnosti (tím myslím funkční signnály, sloty) běžící "qt smyčku" v tom samém threadu, kde byl vytvořen*, ať už je spuštěna v QApplication::exec() či QThread::exec(). QApplication se od QThreadu liší akorát tím, že inicializuje nějaký ty data v Qt knihovně a označí thread, kde je vytvořen, za hlavní.

    * Lze použít QObject::moveToThread k "přesunutí" do jiného threadu. Jak se s tím ale vyrovnají widgety, to nevím. Možná dobře, možná ne, záleží na tom, jak dobře se s tím vyrovná XLib.

    Věřím v jednoho Boha.

    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.