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.