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
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.