Russian Qt Forum
Ноябрь 25, 2024, 02:01 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Graphics View - прикрепить изображение, как?  (Прочитано 11464 раз)
Resager
Гость
« : Август 19, 2009, 17:41 »

 я создал обьект - Graphics View, не знаю, как теперь ему картинку сопоставить, чтобы отображать на окне?
 Через паинт не нада... хочу посмотреть. мона ли сделать всё мышью... 
 (а если честно, через паинт сложна - ещё не тот у мну уровень)
 в ресурсы вроде картинку залил (ПНГ)

Объект "qgraphicsview" создал (перетащил на поле окна этот объект), при создании в код не глядел вообще... а как теперь связать картинку и этот объект я не знаю...

(темы про 2Д графику читал.. но ничего не понял, да и не нашёл)

Записан
jojahti
Гость
« Ответ #1 : Август 19, 2009, 19:32 »

Если в сцену просто картинчатый объект добавить, то пишешь к примеру.
QGraphicsPixmapItem *item = addPixmap()
Ну и добавляешь. формат изображения QPixmap.
То бишь ... = addPixmap("chuperiviaktus.gif")


Все созданные графические штуковины автоматически отображаются, если ты их, конечно,  специально скрывать не станешь. )

P.S. Перетащил он.  Смеющийся Копытами всё надо делать, в блокнотике, тогда всё будет понятно(ну точнее - не всё непонятно.)  Подмигивающий
« Последнее редактирование: Август 19, 2009, 19:40 от jojahti » Записан
Resager
Гость
« Ответ #2 : Август 20, 2009, 07:55 »

addPixmap(); - говорит "C:/Qt/projs/pointerrr/logonwin.cpp:15: error: `addPixmap' undeclared (first use this function)"

Кстате... я сейчас выложу наверна сам код (я уверен что я вписал не туда, что чего-то нужного ещё не добавил и что вообще всё  у мну не так....)

Исходники то совсем пустые.... но ладно, глядите:

main.cpp
Код
C++ (Qt)
#include <QtGui/QApplication>
#include "logonwin.h"
int main(int argc, char *argv[])
{
   QApplication a(argc, argv);
   LogonWin w;
   w.show();
   return a.exec();
}
 

Logonwin.cpp - Главное окошко (и единственное)
Код
C++ (Qt)
#include "logonwin.h"
#include "ui_logonwin.h"
//#include <QGraphicsView>
//#include <QImage>
//#include <QGraphicsScene>
 
LogonWin::LogonWin(QWidget *parent)
   : QMainWindow(parent), ui(new Ui::LogonWin)
{
   ui->setupUi(this);
}
 
LogonWin::~LogonWin()
{
   QGraphicsPixmapItem *item = addPixmap();
  graphicsView = addPixmap("redo.png");
   delete ui;
}
 

Logonwin.h
Код
C++ (Qt)
#ifndef LOGONWIN_H
#define LOGONWIN_H
 
#include <QtGui/QMainWindow>
 
namespace Ui
{
   class LogonWin;
}
 
class LogonWin : public QMainWindow
{
   Q_OBJECT
 
public:
   LogonWin(QWidget *parent = 0);
   ~LogonWin();
 
private:
   Ui::LogonWin *ui;
};
 
#endif // LOGONWIN_H
 

pointerrr.pro
Код
C++ (Qt)
# -------------------------------------------------
# Project created by QtCreator 2009-08-19T20:20:40
# -------------------------------------------------
TARGET = pointerrr
TEMPLATE = app
SOURCES += main.cpp \
   logonwin.cpp
HEADERS += logonwin.h
FORMS += logonwin.ui
OTHER_FILES += redo.png
 

И ещё скрин ща кину. 169КБ


З.Ы. Чувствую себя полным ламером, принёсшим в ремонт системник с монитором и клавиатурой, но увы я только вчера поставил себе QT, причём уже собранную. Начинаю изучать.
Записан
Resager
Гость
« Ответ #3 : Август 20, 2009, 08:00 »

И вот ещё

ui_logonwin.h
Код
C++ (Qt)
/********************************************************************************
** Form generated from reading ui file 'logonwin.ui'
**
** Created: Wed 19. Aug 21:21:50 2009
**      by: Qt User Interface Compiler version 4.5.1
**
** WARNING! All changes made in this file will be lost when recompiling ui file!
********************************************************************************/

 
#ifndef UI_LOGONWIN_H
#define UI_LOGONWIN_H
 
#include <QtCore/QVariant>
#include <QtGui/QAction>
#include <QtGui/QApplication>
#include <QtGui/QButtonGroup>
#include <QtGui/QGraphicsView>
#include <QtGui/QHeaderView>
#include <QtGui/QLineEdit>
#include <QtGui/QMainWindow>
#include <QtGui/QWidget>
 
QT_BEGIN_NAMESPACE
 
class Ui_LogonWin
{
public:
   QWidget *centralWidget;
   QLineEdit *lineEdit;
   QGraphicsView *graphicsView;
 
   void setupUi(QMainWindow *LogonWin)
   {
       if (LogonWin->objectName().isEmpty())
           LogonWin->setObjectName(QString::fromUtf8("LogonWin"));
       LogonWin->resize(600, 400);
       QPalette palette;
       QBrush brush(QColor(255, 255, 255, 255));
       brush.setStyle(Qt::SolidPattern);
       palette.setBrush(QPalette::Active, QPalette::WindowText, brush);
       QBrush brush1(QColor(0, 0, 0, 255));
       brush1.setStyle(Qt::SolidPattern);
       palette.setBrush(QPalette::Active, QPalette::Button, brush1);
       palette.setBrush(QPalette::Active, QPalette::Light, brush1);
       palette.setBrush(QPalette::Active, QPalette::Midlight, brush1);
       palette.setBrush(QPalette::Active, QPalette::Dark, brush1);
       palette.setBrush(QPalette::Active, QPalette::Mid, brush1);
       palette.setBrush(QPalette::Active, QPalette::Text, brush);
       palette.setBrush(QPalette::Active, QPalette::BrightText, brush);
       palette.setBrush(QPalette::Active, QPalette::ButtonText, brush);
       palette.setBrush(QPalette::Active, QPalette::Base, brush1);
       palette.setBrush(QPalette::Active, QPalette::Window, brush1);
       palette.setBrush(QPalette::Active, QPalette::Shadow, brush1);
       palette.setBrush(QPalette::Active, QPalette::AlternateBase, brush1);
       QBrush brush2(QColor(255, 255, 220, 255));
       brush2.setStyle(Qt::SolidPattern);
       palette.setBrush(QPalette::Active, QPalette::ToolTipBase, brush2);
       palette.setBrush(QPalette::Active, QPalette::ToolTipText, brush1);
       palette.setBrush(QPalette::Inactive, QPalette::WindowText, brush);
       palette.setBrush(QPalette::Inactive, QPalette::Button, brush1);
       palette.setBrush(QPalette::Inactive, QPalette::Light, brush1);
       palette.setBrush(QPalette::Inactive, QPalette::Midlight, brush1);
       palette.setBrush(QPalette::Inactive, QPalette::Dark, brush1);
       palette.setBrush(QPalette::Inactive, QPalette::Mid, brush1);
       palette.setBrush(QPalette::Inactive, QPalette::Text, brush);
       palette.setBrush(QPalette::Inactive, QPalette::BrightText, brush);
       palette.setBrush(QPalette::Inactive, QPalette::ButtonText, brush);
       palette.setBrush(QPalette::Inactive, QPalette::Base, brush1);
       palette.setBrush(QPalette::Inactive, QPalette::Window, brush1);
       palette.setBrush(QPalette::Inactive, QPalette::Shadow, brush1);
       palette.setBrush(QPalette::Inactive, QPalette::AlternateBase, brush1);
       palette.setBrush(QPalette::Inactive, QPalette::ToolTipBase, brush2);
       palette.setBrush(QPalette::Inactive, QPalette::ToolTipText, brush1);
       palette.setBrush(QPalette::Disabled, QPalette::WindowText, brush1);
       palette.setBrush(QPalette::Disabled, QPalette::Button, brush1);
       palette.setBrush(QPalette::Disabled, QPalette::Light, brush1);
       palette.setBrush(QPalette::Disabled, QPalette::Midlight, brush1);
       palette.setBrush(QPalette::Disabled, QPalette::Dark, brush1);
       palette.setBrush(QPalette::Disabled, QPalette::Mid, brush1);
       palette.setBrush(QPalette::Disabled, QPalette::Text, brush1);
       palette.setBrush(QPalette::Disabled, QPalette::BrightText, brush);
       palette.setBrush(QPalette::Disabled, QPalette::ButtonText, brush1);
       palette.setBrush(QPalette::Disabled, QPalette::Base, brush1);
       palette.setBrush(QPalette::Disabled, QPalette::Window, brush1);
       palette.setBrush(QPalette::Disabled, QPalette::Shadow, brush1);
       palette.setBrush(QPalette::Disabled, QPalette::AlternateBase, brush1);
       palette.setBrush(QPalette::Disabled, QPalette::ToolTipBase, brush2);
       palette.setBrush(QPalette::Disabled, QPalette::ToolTipText, brush1);
       LogonWin->setPalette(palette);
       centralWidget = new QWidget(LogonWin);
       centralWidget->setObjectName(QString::fromUtf8("centralWidget"));
       lineEdit = new QLineEdit(centralWidget);
       lineEdit->setObjectName(QString::fromUtf8("lineEdit"));
       lineEdit->setGeometry(QRect(140, 300, 301, 21));
       QPalette palette1;
       QBrush brush3(QColor(0, 171, 0, 255));
       brush3.setStyle(Qt::SolidPattern);
       palette1.setBrush(QPalette::Active, QPalette::Text, brush3);
       palette1.setBrush(QPalette::Inactive, QPalette::Text, brush3);
       palette1.setBrush(QPalette::Disabled, QPalette::Text, brush1);
       lineEdit->setPalette(palette1);
       QFont font;
       font.setFamily(QString::fromUtf8("Trendy"));
       font.setPointSize(10);
       lineEdit->setFont(font);
       lineEdit->setAlignment(Qt::AlignCenter);
       graphicsView = new QGraphicsView(centralWidget);
       graphicsView->setObjectName(QString::fromUtf8("graphicsView"));
       graphicsView->setGeometry(QRect(170, 30, 256, 192));
       QBrush brush4(QColor(38, 38, 38, 255));
       brush4.setStyle(Qt::DiagCrossPattern);
       graphicsView->setBackgroundBrush(brush4);
       graphicsView->setSceneRect(QRectF(0, 0, 10, 10));
       LogonWin->setCentralWidget(centralWidget);
 
       retranslateUi(LogonWin);
 
       QMetaObject::connectSlotsByName(LogonWin);
   } // setupUi
 
   void retranslateUi(QMainWindow *LogonWin)
   {
       LogonWin->setWindowTitle(QApplication::translate("LogonWin", "LogonWin", 0, QApplication::UnicodeUTF8));
       lineEdit->setText(QApplication::translate("LogonWin", "Enter you name", 0, QApplication::UnicodeUTF8));
#ifndef QT_NO_WHATSTHIS
       graphicsView->setWhatsThis(QApplication::translate("LogonWin", "Logo", 0, QApplication::UnicodeUTF8));
#endif // QT_NO_WHATSTHIS
       Q_UNUSED(LogonWin);
   } // retranslateUi
 
};
 
namespace Ui {
   class LogonWin: public Ui_LogonWin {};
} // namespace Ui
 
QT_END_NAMESPACE
 
#endif // UI_LOGONWIN_H
 

могу ещё и  logonwin.ui скинуть...

З.Ы. На с++ я то кодю, а вот с QT недавно познакомился... потому и  вот так...
« Последнее редактирование: Август 20, 2009, 08:27 от Resager » Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #4 : Август 20, 2009, 08:08 »

Код:
LogonWin::LogonWin(QWidget *parent)
    : QMainWindow(parent), ui(new Ui::LogonWin)
{
    ui->setupUi(this);
}
 
LogonWin::~LogonWin()
{
    QGraphicsPixmapItem *item = addPixmap();
    graphicsView = addPixmap("redo.png");
    delete ui;
}
заменить на
Код:
LogonWin::LogonWin(QWidget *parent)
    : QMainWindow(parent), ui(new Ui::LogonWin)
{
    ui->setupUi(this);
    QGraphicsScene * scene = new QGraphicsScene ();
    scene->addPixmap(QPixmap(":/resource.png"));
    ui->graphicsView->setScene(scene);
}
 
LogonWin::~LogonWin()
{
    delete ui;
}
ЗЫ - ногами не бить,  с ресурсами\графиксценой не работал...
« Последнее редактирование: Август 20, 2009, 08:11 от Авварон » Записан
Resager
Гость
« Ответ #5 : Август 20, 2009, 09:22 »

Ресунок этот (PNG) похерился почему то, да и вдруг не нравится ему этот формат..., поменял на БитМап.... вышло так "scene->addPixmap(QPixmap("C:\Qt\projs\pointerrr\gh.bmp"));", но увы квадрат сново чёрный, и в нём нет рисунка Грустный

Может скажете где есть полный туториал по вставке рисунка в обьект график вьювер.... а то на форуме в теме 2д графики только вопросы умелых...
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #6 : Август 20, 2009, 09:32 »

C:\Qt\projs\pointerrr\gh.bmp -> C:\\Qt\\projs\\pointerrr\\gh.bmp или C:/Qt/projs/pointerrr/gh.bmp (но тут не факт) => учи язык, бэкслеш ('\') это эскейп-последовательность, бэкслеш в строке это \\
Записан
Resager
Гость
« Ответ #7 : Август 20, 2009, 12:27 »

Да знаю я про слеш.. просто с горяча забыл изменить, но всё равно не канает.... не работает... Грустный
Записан
Resager
Гость
« Ответ #8 : Август 20, 2009, 12:50 »

Вот!!! ВОТ ОНО!!!! - http://doc.crossplatform.ru/qt/4.5.0/widgets-tutorial.html

Там как раз написано так, как я мечтаю кодить... то есть создавать (генерить) окно и все его элементы руками в коде, чтобы всё было онятно, а не мышкой тыкать (тем более это быдлокодерством называется)!!!! Вот только  том уроке я не нашёл, как картинку разместить.
Увы Грустный
Записан
Rcus
Гость
« Ответ #9 : Август 20, 2009, 13:09 »

/** Внезапно осознал как сильно пал: интерфейс построен в дизайнере, привязан к системе обработки данных на qtscript... */

QLabel::setPixmap
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.172 секунд. Запросов: 22.