Witam
Mam taki problem mam klasę MainWindow : public QMainWindow i zawiera ona QGraphicsView oraz funkcje które obsługują ten element. Potrzebuję teraz z klasy Pomiar : public QGraphicsScene odwołać się do funkcji która jest w klasie MainWindow i nie wiem za bardzo jak to zrobić możecie mi podpowiedzieć? Jest może jakiś sposób żeby powiązać klasę Pomiar żeby miała możliwość wywołania funkcji w MainWindow ? I mam jeszcze jedno pytanie w jaki inny sposób można odwoływać się do QGrapichsView niż to zrobiłem w funkcji Pow_clicked() i czy można jakoś odwołać się z innej klasy do tego obiektu? Dopiero zaczynam przygodę z Qt i tego typu programami więc proszę o wyrozumiałość:).
Mój kod:
// pomiar.cpp
#include "mainwindow.h"
Pomiar::Pomiar(QObject *parent) : QGraphicsScene(parent)
{}
Pomiar::~Pomiar()
{}
void Pomiar::mousePressEvent(QGraphicsSceneMouseEvent *e)
{
if(e->button()==Qt::LeftButton)
{
QPointF p=e->buttonDownScenePos(Qt::LeftButton);
///Tutaj chciałbym wywołać funkcje Wycz() z MainWindow.cpp
}
QGraphicsScene::mousePressEvent(e);
}
// mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
setWindowTitle("Obraz") ;
/*
*/
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::WczytajZdjecie_clicked()
{
QString fileName = QFileDialog::getOpenFileName(this,"","","*.jpg *.png");
Pomiar *scene = new Pomiar();
setWindowTitle("Obraz - " + fileName);
pix.load(fileName);
wyp = scene->addPixmap(pix);
this->ui->graphicsView->setScene(scene);
this->ui->graphicsView->show();
}
void MainWindow::Zakoncz_clicked()
{
QApplication::closeAllWindows();
}
void MainWindow::Zmniejsz_clicked()
{
this->ui->graphicsView->scale(0.8,0.8);
}
void MainWindow::Pow_clicked()
{
this->ui->graphicsView->scale(1.2,1.2);
}
// Tą funkcję chciałbym wywołać po kliknięciu
void MainWindow::Wycz()
{
/*
*/
}
}
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include<QtCore>
#include<QtGui>
#include "pomiar.h"
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow {
Q_OBJECT
public:
Pomiar *scene;
QGraphicsPixmapItem *wyp;
MainWindow(QWidget *parent = 0);
~MainWindow();
protected:
private slots:
/*
*/
void Wycz();
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H