Qt Forum

    • Login
    • Search
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Search
    • Unsolved

    Unsolved come impostare il Focus in due oggetti distinti contemporaneamente

    Italian
    focus setfocus
    2
    4
    1367
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • L
      LorenzoMusci last edited by

      Salve a tutti.

      premetto di non essere un grande esperto di Qt e di programmazion e

      avrei la necessità di muovere 2 oggetti distinti nella mia scena usando comandi da tastiera, per poter dare dei comandi da tastiera ad un dato oggetto devo prima impostare il Flag e il Focus su tale oggetto, purtroppo però Qt mi permette di mettere sotto Focus un singolo oggetto alla volta e quindi al momento mi trovo a poter dare i comandi da tastiera ad un singolo oggetto alla volta.
      Esiste un modo per poter impostare 2 o più oggetti sotto Focus in modo da potergli inviare comandi da tastiera contemporanemente?

      1 Reply Last reply Reply Quote 0
      • P
        patrik08 last edited by patrik08

        Ciao Lorenzo...
        Domanda: in quanto non riesco bene a capire cosa intendi per scena... ti riferisci ad QGraphicsScene e i suoi item?
        oppure a un altra classe?
        10 anni fa ho scritto Miniscribus... un programma che vuole fare simili cose come il grande Scribus.. https://www.scribus.net/ non capivo mai .. neanche oggi perhè scribus non legge anche i file Apache™ FOP (Formatting Objects Processor) cosi in 2-3 mesi ho scritto il piccolo Miniscribus...
        https://sourceforge.net/projects/wysiwyg-edit/ e quello è pieno di
        QGraphicsScene permettendo di lavorare con Layer che si possono girare in qualsiasi gradi... in poche parole le classi derivanti da QObject si possono sempre eseguire come static c++ .. e senza perdere le loro proprieta dei segnali slot... con i quali puoi inviare segnali prendere e ricevere da classi che non necessariamente sono child ....se fosse quello il problema pubblico un po di template di esempio da capire meglio come funzionano....
        Saluti dalla svizzera italiana...

        1 Reply Last reply Reply Quote 0
        • L
          LorenzoMusci last edited by

          Ciao patrik08
          si forse non sono stato precisissimo, comunque mi riferisco alla QGraphicsScene e a 2 item che ho deciso di aggiungere.. il problema sta nel fatto che sono riuscito a creare un modo per muovere i due item in tutte le direzioni che voglio solo che per problemi di setFocus o setFlag non riesco a farli muovere contemporaneamente! devo ogni volta che voglio muovere un item piùttosto che un altro cliccare con il mouse sopra l'item che voglio muovere e solo a quel punto inviare i comandi da tastiera!...

          spero di essere stato abbastanza chiaro, purtroppo sono solo alle prime armi con Qt e con il c++ in generale

          Saluti da Reggio Emilia

          1 Reply Last reply Reply Quote 0
          • P
            patrik08 last edited by

            La parola magica si chiama zValue:
            nei documenti html e xsl-fo sarebbe il z-index..
            piu questo numero è alto il singolo elemento è visibile...
            muovendo in drag & drop con il tasto CTRL premuto...
            vedi in:
            https://github.com/pehohlva/fop-miniscribus/tree/master/fop_miniscribus.2.0.0
            esempio x mac e window.. cercando si trova anche un pacchetto gentoo linux... 10 anni or sono che ho scritto quel coso.. il codice è rozzo ma funziona.
            https://sourceforge.net/projects/wysiwyg-edit/

            /* filter only item a top Zindex /  zValue */
            bool GraphicsScene::WakeUp( const QPointF incomming ) 
            {
                   QList<QGraphicsItem *>  listing = QGraphicsScene::items(incomming);
                   qreal thebest = 0;  /* zindex on front */
                   for (int o=0;o<listing.size();o++) {
                       listing[o]->setSelected(false); 
                       listing[o]->setFlag(QGraphicsItem::ItemIsSelectable,false);
                       thebest = qMax(listing[o]->zValue(),thebest);
                   }
                   /* activate item at top z-index zValue  /  not the down not visible!!!! */
                   for (int e=0;e<listing.size();e++) {
                       if (listing[e]->zValue() == thebest) {
                         listing[e]->setFlag(QGraphicsItem::ItemIsSelectable,true);
                         emit SelectOn(listing[e],thebest);
                         return true;
                       }
                   }
            return false;
            }
            
            1 Reply Last reply Reply Quote 0
            • First post
              Last post