Wyświetlanie obrazka w QGraphicsView

Odpowiedz Nowy wątek
2011-08-04 10:22
0

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ś

Pozostało 580 znaków

2011-08-04 10:52
odp
0

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();
}

Pozostało 580 znaków

2011-08-04 14:46
0

http://doc.qt.nokia.com/latest/qgraphicspixmapitem.html


Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.

Pozostało 580 znaków

2011-08-04 17:23
grzesczwa
0

dziękuje za podpowiedz

serdecznie pozdrawiam
Grześ

Pozostało 580 znaków

2011-08-06 10:09
0

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ś

edytowany 2x, ostatnio: grzesczwa, 2011-08-06 10:40

Pozostało 580 znaków

2011-08-06 12:27
0

MouseMoveEvent,owszem,ale nie mainwindowa,a QGraphicsItemu:
http://doc.qt.nokia.com/4.7-s[...]phicsitem.html#mouseMoveEvent


"Sugeruję wyobrazić sobie Słońce widziane z orbity Merkurego, a następnie dupę tej wielkości. W takiej właśnie dupie specjalista ma teksty o wspaniałej atmosferze, pracy pełnej wyzwań i tworzeniu innowacyjnych rozwiązań. Pracuje się po to, żeby zarabiać, a z resztą specjalista sobie poradzi we własnym zakresie, nawet jeśli firma mieści się w okopie na granicy obu Korei."
-somekind,
konkretny człowiek-konkretny przekaz :]

Pozostało 580 znaków

2011-08-06 23:12
0

[Edit]
Można też przy pomocy QGraphicsItem::hoverMoveEvent()
http://doc.qt.nokia.com/lates[...]phicsitem.html#hoverMoveEvent

edytowany 1x, ostatnio: videl, 2011-08-06 23:20

Pozostało 580 znaków

2011-08-08 08:56
0

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ś

Pozostało 580 znaków

2011-08-08 11:28
odp
0

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.

Pozostało 580 znaków

2011-08-08 12:05
0

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


"Sugeruję wyobrazić sobie Słońce widziane z orbity Merkurego, a następnie dupę tej wielkości. W takiej właśnie dupie specjalista ma teksty o wspaniałej atmosferze, pracy pełnej wyzwań i tworzeniu innowacyjnych rozwiązań. Pracuje się po to, żeby zarabiać, a z resztą specjalista sobie poradzi we własnym zakresie, nawet jeśli firma mieści się w okopie na granicy obu Korei."
-somekind,
konkretny człowiek-konkretny przekaz :]

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0