MouseReleaseEvent() na dwóch obiektach



  • Witam!

    Czy ktoś z was wie czym może być spowodowany, a raczej co robię źle, że mając dwie kontrolki QGraphicsView na formatce i tworząc w każdej z nich obiekt nowej klasy, która ma nadpisaną metodę mouseReleaseEvent() licznik kliknięć się nie zeruje w momencie kliknięcia na drugą stworzoną kontrolkę QGraphicsView.

    Może bardziej obrazowo to wytłumaczę:
    mam dwa okna na formatce, w których wyświetlam dwa inne zdjęcia, na jednym i drugim muszę zaznaczyć 6 punktów kluczowych, których kolejność jest numerowana, zaznaczam na jednym punkty od 1 do 6 a na drugim - jak zaznaczam - licznik się nie zeruje tylko idzie dalej - od 7 do 12 :/

    Nadpisana metoda mouseReleaseEvent() jest prywatna a obiekty klasy, w której się ona znajduje są oddzielnie tworzone dla jednego i drugiego zdjęcia.

    W czym jest problem?



  • Cześć,
    Wstaw trochę kodu bo nie bardzo wiadomo o co chodzi. Co to jest ten licznik ??



  • Nadpisywana metoda mouseReleaseEvent() w klasie MarkerEditor:
    @int nrMarkera = 1; //wspomniany licznik markerów
    int iloscMarkerow = 12;
    QPointF wspMarkerow[12];

    void MarkerEditor::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
    {
    if(nrMarkera <= iloscMarkerow)
    {

        [...]
    
        qDebug() << pozycjaMyszki;
        emit klikniecieWObraz(pozycjaMyszki);
        wspMarkerow[nrMarkera] = pozycjaMyszki;
    
        nrMarkera++;
    }
    else
    {
        return;
    }
    

    }@

    Stworzenie obiektu i akcje z nim związane w MainWindow dla jednego QGraphicsView:
    @void MainWindow::on_pushButtonPrzegldajZdjecie1_clicked()
    {
    nazwaZdjecia1 = QFileDialog::getOpenFileName(this, tr("Otwórz plik"), "C:/", tr("Obrazy (*.jpg *.png *.bmp)"));
    QFile ladowanyPlik1(nazwaZdjecia1);
    sciezka1 = ladowanyPlik1.fileName();

    ui->lineEditZdjecie1->setText(nazwaZdjecia1);
    if(!sciezka1.isEmpty()){
        
        [...]
    
        QGraphicsScene *scena1 = new QGraphicsScene(ui->graphicsViewZdjecie1);
        QPixmap mapaPikseli1(nazwaZdjecia1);
        ui->graphicsViewZdjecie1->setScene(scena1);
        MarkerEditor *edytorMarkerow1 = new MarkerEditor();
        scena1->addItem(edytorMarkerow1);
        edytorMarkerow1->setPos(0, 0);
        edytorMarkerow1->setPixmap(mapaPikseli1);
        ui->graphicsViewZdjecie1->fitInView(scena1->itemsBoundingRect(),Qt::KeepAspectRatio);
        ui->graphicsViewZdjecie1->show();
    
        [...]
    
    }
    QByteArray zawartoscPliku1(ladowanyPlik1.readAll());
    

    }@

    Taką samą metodę (oczywiście z innymi nazwami zmiennych) mam dla drugiego przycisku Przeglądaj, który obsługuje drugie QGraphicsView.


Log in to reply