Название: Graphics View - прикрепить изображение, как?
Отправлено: Resager от Август 19, 2009, 17:41
я создал обьект - Graphics View, не знаю, как теперь ему картинку сопоставить, чтобы отображать на окне? Через паинт не нада... хочу посмотреть. мона ли сделать всё мышью... (а если честно, через паинт сложна - ещё не тот у мну уровень) в ресурсы вроде картинку залил (ПНГ)
Объект "qgraphicsview" создал (перетащил на поле окна этот объект), при создании в код не глядел вообще... а как теперь связать картинку и этот объект я не знаю...
(темы про 2Д графику читал.. но ничего не понял, да и не нашёл)
Название: Re: Graphics View - прикрепить изображение, как?
Отправлено: jojahti от Август 19, 2009, 19:32
Если в сцену просто картинчатый объект добавить, то пишешь к примеру. QGraphicsPixmapItem *item = addPixmap() Ну и добавляешь. формат изображения QPixmap. То бишь ... = addPixmap("chuperiviaktus.gif")
Все созданные графические штуковины автоматически отображаются, если ты их, конечно, специально скрывать не станешь. )
P.S. Перетащил он. ;D Копытами всё надо делать, в блокнотике, тогда всё будет понятно(ну точнее - не всё непонятно.) ;)
Название: Re: Graphics View - прикрепить изображение, как?
Отправлено: Resager от Август 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КБ (http://www.imageup.ru/img41/qwe173170.jpg) З.Ы. Чувствую себя полным ламером, принёсшим в ремонт системник с монитором и клавиатурой, но увы я только вчера поставил себе QT, причём уже собранную. Начинаю изучать.
Название: Re: Graphics View - прикрепить изображение, как?
Отправлено: Resager от Август 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 недавно познакомился... потому и вот так...
Название: Re: Graphics View - прикрепить изображение, как?
Отправлено: Авварон от Август 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; } ЗЫ - ногами не бить, с ресурсами\графиксценой не работал...
Название: Re: Graphics View - прикрепить изображение, как?
Отправлено: Resager от Август 20, 2009, 09:22
Ресунок этот (PNG) похерился почему то, да и вдруг не нравится ему этот формат..., поменял на БитМап.... вышло так "scene->addPixmap(QPixmap("C:\Qt\projs\pointerrr\gh.bmp"));", но увы квадрат сново чёрный, и в нём нет рисунка :(
Может скажете где есть полный туториал по вставке рисунка в обьект график вьювер.... а то на форуме в теме 2д графики только вопросы умелых...
Название: Re: Graphics View - прикрепить изображение, как?
Отправлено: Авварон от Август 20, 2009, 09:32
C:\Qt\projs\pointerrr\gh.bmp -> C:\\Qt\\projs\\pointerrr\\gh.bmp или C:/Qt/projs/pointerrr/gh.bmp (но тут не факт) => учи язык, бэкслеш ('\') это эскейп-последовательность, бэкслеш в строке это \\
Название: Re: Graphics View - прикрепить изображение, как?
Отправлено: Resager от Август 20, 2009, 12:27
Да знаю я про слеш.. просто с горяча забыл изменить, но всё равно не канает.... не работает... :(
Название: Re: Graphics View - прикрепить изображение, как?
Отправлено: Resager от Август 20, 2009, 12:50
Вот!!! ВОТ ОНО!!!! - http://doc.crossplatform.ru/qt/4.5.0/widgets-tutorial.html
Там как раз написано так, как я мечтаю кодить... то есть создавать (генерить) окно и все его элементы руками в коде, чтобы всё было онятно, а не мышкой тыкать (тем более это быдлокодерством называется)!!!! Вот только том уроке я не нашёл, как картинку разместить. Увы :(
Название: Re: Graphics View - прикрепить изображение, как?
Отправлено: Rcus от Август 20, 2009, 13:09
/** Внезапно осознал как сильно пал: интерфейс построен в дизайнере, привязан к системе обработки данных на qtscript... */
QLabel::setPixmap
|