Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. Italian
  4. Ridimensionare graphicsview di QGraphicsView
Qt 6.11 is out! See what's new in the release blog

Ridimensionare graphicsview di QGraphicsView

Scheduled Pinned Locked Moved Italian
4 Posts 2 Posters 3.0k Views 1 Watching
  • 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.
  • ? Offline
    ? Offline
    A Former User
    wrote on last edited by
    #1

    chiedo scusa, ui->graphicsView->resize(width,height) funzionerebbe anche se gli passassi delle dimensioni accettabili e se il form, fosse grande abbastanza per contenerle ... :).

    Ciao, ho creato un widget graphicsview nel form con qtcreator, riesco a visualizzare l'immagine al suo interno associando l'immagine alla scena e la scena al graphicsview. Ma quando espando la finestra principale vorrei che il contenitore graphicsview si espandesse proporzionalmente, l'istruzione ui->graphicsView->setGeometry() non varia width e height del contentirore graphicsView ma ingrandisce solo l'immagine come uno zoom senza controllo di cosa vedere dell'immagine, il contenitore dell'immagine (qgraphicsView) resta delle stesse dimensioni.

    @
    void MiaClasse::resizeEvent(QResizeEvent *event)
    {

    if (elenco.size()>0)    {
        qDebug() << event->oldSize() << " vecchia dimensione";
        qDebug() << event->size() << " nuova dimensione";
    
        QSize wh;
        wh.setWidth(event->size().width() - 680);
        wh.setHeight(event->size().height());
    
        if (wh.width() > 610 &&   wh.height() > 722) {
    
            QRect rettangolo = QRect(680,0,wh.width(),wh.height());
            ui->graphicsView->setGeometry(680,0,wh.width(),wh.height());
    
            delete imageObject;
            imageObject = new QImage();
            QDir dir(dirtif);
            QString absolutePath = dir.absoluteFilePath(elenco.at(contatoreImage));
            imageObject->load(absolutePath);
    
            image = QPixmap::fromImage(*imageObject);
            delete scene;
            scene = new QGraphicsScene(this);
            scene->addPixmap(image);
            scene->setSceneRect(image.rect());
            ui->graphicsView->setScene(scene);
            //ui->graphicsView->ensureVisible ( scene->sceneRect()  );
            ui->graphicsView->ensureVisible (rettangolo);
            ui->graphicsView->fitInView(rettangolo, Qt::KeepAspectRatio);
            oldWidget->setFocus();
        }
        oldWidget->setFocus();
    
    }
    

    }
    Ringrazio chiunque voglia rispondere. Ciao!
    @

    Sull' application output vedo la finestra crescere (la finestra main)

    QSize(1300, 780) vecchia dimensione
    QSize(1300, 783) nuova dimensione
    QSize(1300, 783) vecchia dimensione
    QSize(1306, 793) nuova dimensione
    QSize(1306, 793) vecchia dimensione
    QSize(1307, 794) nuova dimensione
    QSize(1307, 794) vecchia dimensione
    QSize(1313, 800) nuova dimensione
    ....................................:::::::...
    QSize(1495, 1025) nuova dimensione
    QSize(1495, 1025) vecchia dimensione
    .........................................................
    QSize(1483, 1021) nuova dimensione
    QSize(1483, 1021) vecchia dimensione
    QSize(1483, 1020) nuova dimensione
    Ma i graphicsView resta sempre grande uguale

    1 Reply Last reply
    0
    • ? Offline
      ? Offline
      A Former User
      wrote on last edited by
      #2

      Anche io avevo questo problema.......
      Non trovando una soluzione ho optato nel rendere la finestra fullscreen.
      Settando le dimensioni con le proporzioni.
      Diciamo che ho risolto in questo modo :-).
      Non so se anche a te conviene fare così.

      1 Reply Last reply
      0
      • ? Offline
        ? Offline
        A Former User
        wrote on last edited by
        #3

        Dato che il widget della foto occupa mezzo schermo, uso
        @ui.->graphicsView->x() - event->size().width()@

        per determinare la larghezza disponibile della finestra per il widget graphicsView

        Mentre per sapere quanto è grande la finestra, uso:

        @
        resizeEvent(QResizeEvent *event)
        {
        event->size().width()
        event->size()->height()
        }
        @

        all'apertura del programma:
        QSize(-1, -1) vecchia dimensione
        QSize(1920, 1080) nuova dimensione
        la prima volta considera la finestra senza dimensione, quindi, esegue sempre la funzione resizeEvent()
        QSize(1920, 1080) vecchia dimensione
        QSize(1920, 1080) nuova dimensione
        dunque credo che da -1-1 si dimensioni alla grandezza specificata nel form generato con qtcreator, e siccome modifica la dimensione, si richiama un'altra volta, con la dimensione vecchia identica alla nuova.

        Poi quando eseguo operazioni manuali viene chiamata di nuovo la funzione ogni volta..

        Devo capire come fare a gestire le dimensioni della finestra quando uso un'altro schermo magari del portatile.
        e devo anche capire perchè va in crash se massimizzo la finestra quando clicco due volte sulla decorazione di windows in alto, invece di massimizzare muore il programma.
        Ma questa è un'altra storia :)
        ciao e grazie!

        1 Reply Last reply
        0
        • ? Offline
          ? Offline
          A Former User
          wrote on last edited by
          #4

          Cmq per gestire le dimensioni anche se cambi schermo devi fare come ti ho detto prima. Ripeto io utilizzo il fullscreen e utilizzando le proporzioni anche se cambio schermo o pc le dimensioni cambiano in base allo schermo.

          1 Reply Last reply
          0

          • Login

          • Login or register to search.
          • First post
            Last post
          0
          • Categories
          • Recent
          • Tags
          • Popular
          • Users
          • Groups
          • Search
          • Get Qt Extensions
          • Unsolved