Witam
Proszę o prosty kod wyświetlania obrazka w formacie jpg,gig,png w QGraphicsView.
Przejrzałem wczoraj dokumentację i nie znalazłem odpowiedniego przykładu. No chyba że coś przeoczyłem.
Serdecznie Pozdrawiam
Grześ
Witam
Proszę o prosty kod wyświetlania obrazka w formacie jpg,gig,png w QGraphicsView.
Przejrzałem wczoraj dokumentację i nie znalazłem odpowiedniego przykładu. No chyba że coś przeoczyłem.
Serdecznie Pozdrawiam
Grześ
coś kiepsko szukasz ;)
#include <QtGui/QApplication>
#include <QGraphicsView>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QGraphicsView graphicsView;
QGraphicsScene scene(&graphicsView);
QPixmap pix("example.jpg");
graphicsView.resize(QSize(pix.width(), pix.height()));
scene.setSceneRect(graphicsView.rect());
graphicsView.setScene(&scene);
scene.addPixmap(pix);
graphicsView.show();
return a.exec();
}
dziękuje za podpowiedz
serdecznie pozdrawiam
Grześ
Witam
Mam jeszcze jedno pytanie:
Do formularza dodałem dwa qlabel i chciałbym że po najechaniu na obrazka myszką w qlabel były wyświetlane współrzędne obrazka.
Zastanawiam czy to nie funkcja mouseMoveEvent
Poniżej podaję fragment kodu:
#include <QFileDialog>
#include <QMessageBox>
#include <QTextCodec>
#include <QDebug>
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
connect(ui->actionOtworz, SIGNAL(triggered()), this, SLOT(WczytajZdjecie_clicked()));
connect(ui->actionZakoncz, SIGNAL(triggered()), this, SLOT(Zakoncz_clicked()));
connect(ui->actionO_programie, SIGNAL(triggered()), this, SLOT(OProgramie_clicked()));
}
void MainWindow::mouseMoveEvent(QGraphicsSceneMouseEvent *e)
{
if (e->button() != Qt::LeftButton)
return;
}
void MainWindow::WczytajZdjecie_clicked()
{
QString fileName = QFileDialog::getOpenFileName(this,"","","Dopuszczalne formaty (*.jpg)");
QGraphicsScene *scene = new QGraphicsScene();
QPixmap pix;
pix.load(fileName);
scene->addPixmap(pix);
this->ui->graphicsView->setScene(scene);
this->ui->graphicsView->show();
this->ui->labelSzerokosc->setText(QString::number(pix.width()));
this->ui->labelWysokosc->setText(QString::number(pix.height()));
}
void MainWindow::Zakoncz_clicked()
{
QApplication::closeAllWindows();
}
MainWindow::~MainWindow()
{
delete ui;
}
Serdecznie pozdrawiam
Grześ
MouseMoveEvent,owszem,ale nie mainwindowa,a QGraphicsItemu:
http://doc.qt.nokia.com/4.7-snapshot/qgraphicsitem.html#mouseMoveEvent
[Edit]
Można też przy pomocy QGraphicsItem::hoverMoveEvent()
http://doc.qt.nokia.com/latest/qgraphicsitem.html#hoverMoveEvent
Dziękuje za podpowiedzi.
Wczoraj wieczorem analizowałem przykład w dokumentacji Qt - Chip (http://doc.qt.nokia.com/4.7/demos-chip.html).
I prawie wszystko mam.
Tylko mam jeszcze jedno pytanie:
W classie chip (http://doc.qt.nokia.com/4.7/demos-chip-chip-cpp.html) jest funkcja
void Chip::mousePressEvent(QGraphicsSceneMouseEvent *event)
i przerobiłem ją na tak:
void Chip::mousePressEvent(QGraphicsSceneMouseEvent *event)
{
QGraphicsItem::mousePressEvent(event);
a = event->pos().x();
qDebug()<<a;
}
i z niej chcę żeby współrzędne były wypisanie w Qlabel
np w klasie View http://doc.qt.nokia.com/4.7/demos-chip-view-cpp.html
label = new QLabel(name);
Jak to zrobić.
Serdecznie Pozdrawiam
Grześ
w tej chwili masz problem z programowaniem obiektowym, może za wcześnie na qt? Możesz umieścić dwa pola w klasie określające współrzędne i potem przez obiekt tej klasy wydobyć ich wartości, bądź za pomocą sygnałów i slotów.
1.Stwórz sobie nową klasę dziedziczącą po QObject mającą sygnał wyślijDaneDoQLabela(jakieś parametry)
2.Niech ten Twój Chip ma jako składnik obiekt powyżej wspomnianej klasy
3.Stwórz gdzieś slot odbierający sygnał wyślijDaneDoQLabela(jakieś parametry)-czy to przeimplementowując QLabela,czy główne okno programu
4.Tworząc obiekt Chip zarazem zrób podłączenie Chip.connectorObject,SIGNAL(wyślijDaneDoQLabela(jakieś parametry)) z tymże slotem