Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [QT4] QGraphicsView, Не отображается 
:(
    Опции темы
SwordOfDeath
Дата 27.12.2008, 01:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 130
Регистрация: 16.10.2007

Репутация: нет
Всего: нет



Привет,

Не могу заставить QGraphicsView нарисоватся... В своем классе порожденном от QWidget, в конструкторе: 
Код

QGraphicsScene scene;
scene.addText(tr("Hello, world!"));
scene.setSceneRect(0, 0, 100,25);
scene.setItemIndexMethod(QGraphicsScene::NoIndex);
QGraphicsView view(&scene,this);
view.show();
view.setVisible(TRUE);
view.move(0,0);
view.setMinimumSize(100,25);


Уже и минимальные размеры и show() и setVisible() но ничего не отображается... В чем трабл?
PM MAIL   Вверх
pan2004
Дата 27.12.2008, 11:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 357
Регистрация: 28.7.2007

Репутация: 6
Всего: 9



Странно, что оба объекта создаются в стеке - время их существования в таком случае ограничено временем выполнения конструктора.
Если у тебя так написано:
Код

MyWidget::MyWidget():
   QWidget(0)
{
 QGraphicsScene scene;
 scene.addText(tr("Hello, world!"));
 scene.setSceneRect(0, 0, 100,25);
 scene.setItemIndexMethod(QGraphicsScene::NoIndex);
 QGraphicsView view(&scene,this);
 view.show();
 view.setVisible(TRUE);
 view.move(0,0);
 view.setMinimumSize(100,25);
}

То скорее всего, ты ничего не успеешь увидеть, ведь оба этих объекта будут удалены еще до вызова paintEvent()! Вообще говоря, рекомендуется использовать для Qtшных объектов динамическую память, особенно если они имеют parent Object.
Еще одна возможная причина - не заданы координаты текстового элемента, хотя они вроде автоматически становятся (0, 0)


--------------------
Qt4/C++ fan
WinXP SP3: MSVC++2005 Qt4.5.1 Boost1.39
сыграем в дурака?
PM MAIL   Вверх
gmorgunov
Дата 27.12.2008, 21:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 17.5.2008

Репутация: нет
Всего: 5



SwordOfDeath
Привет. У меня в SUSE вот так все рисует(проверил):
Код

#include <QtGui>
int main(int argc, char** argv) {
    QApplication   app(argc, argv);
    //-----------------------------
    QGraphicsScene scene;
    scene.addText("Hello, world!"); //
    scene.setSceneRect(0,0, 100,25);
    scene.setItemIndexMethod(QGraphicsScene::NoIndex);
    QGraphicsView view(&scene);
    view.show();
    view.setVisible(TRUE);
    view.move(100,100);  // <--- ВОТ ТУТЬ
    view.setMinimumSize(100,25);
    //-----------------------------
    return app.exec();
}

Похоже scene-view  смещены относительно друг друга. Почитать можно у Бланшетт( глава "Преобразования рисовальщика"). 
PM MAIL   Вверх
pan2004
Дата 27.12.2008, 21:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 357
Регистрация: 28.7.2007

Репутация: 6
Всего: 9



Цитата(gmorgunov @  27.12.2008,  21:39 Найти цитируемый пост)
Похоже scene-view  смещены относительно друг друга.

Такое наврятли возможно:
Цитата

QGraphicsView::sceneRect
If unset, or if a null QRectF is set, this property has the same value as QGraphicsScene::sceneRect, and it changes with QGraphicsScene::sceneRect. Otherwise, the view's scene rect is unaffected by the scene.

И кроме того, QPainter* имеет опосредованное отношение к Graphics Framework
В третьих move() ни к одному ни к другому не имеет никакого отношения.


--------------------
Qt4/C++ fan
WinXP SP3: MSVC++2005 Qt4.5.1 Boost1.39
сыграем в дурака?
PM MAIL   Вверх
Killhimself
Дата 27.12.2008, 23:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 30.8.2006

Репутация: нет
Всего: нет



>> Похоже scene-view  смещены относительно друг друга. Почитать можно у Бланшетт( глава "Преобразования рисовальщика"). 

Извините, что немного офтоп, но где у Бланшет вообще написано что-то про QGraphicsView/Scene?
Смотрю книжку Ж. Бланшет, М. Саммерфилд QT4: Программирование GUI на С++, что-то не вижу там :(
PM MAIL   Вверх
gmorgunov
Дата 27.12.2008, 23:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 17.5.2008

Репутация: нет
Всего: 5



Killhimself
Я высказал предположение и выложил рабочий код. Если можете объяснить причину - объясните.
Всем будет интересно.

PM MAIL   Вверх
Killhimself
Дата 27.12.2008, 23:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 30.8.2006

Репутация: нет
Всего: нет



Цитата(gmorgunov @ 27.12.2008,  23:45)
Killhimself
Я высказал предположение и выложил рабочий код. Если можете объяснить причину - объясните.
Всем будет интересно.

Так я же не в упрек сказал, я лишь спросил где у Бланшет написано что-нить про QGraphicsView...сам хотел посмотреть smile)

А что посчет кода, то через main у меня тож все пучком, а через виджет не пробовал..

Это сообщение отредактировал(а) Killhimself - 27.12.2008, 23:59
PM MAIL   Вверх
gmorgunov
Дата 28.12.2008, 00:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 17.5.2008

Репутация: нет
Всего: 5



Вот ,где уж точно есть view/scene - Макс Шлее "Qt4...".  Стр. 386-399. Только что посмотрел. smile

PM MAIL   Вверх
gmorgunov
Дата 28.12.2008, 09:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 17.5.2008

Репутация: нет
Всего: 5



Проверил. pan2004 оказался прав. Беру свои слова назад(смещение) ... истина дороже.smile Вот рабочий код:
Код

#include <QtGui>
class MyWidget : public QWidget {
public:
    MyWidget(QWidget* parent = 0) : QWidget(parent) {
        //-------------------------------------------------
        QGraphicsScene* scene = new QGraphicsScene(this);
        scene->addText(tr("Hello, world!"));
        scene->setSceneRect(0, 0, 100,25);
        scene->setItemIndexMethod(QGraphicsScene::NoIndex);
        QGraphicsView* view=new QGraphicsView(scene,this);
        //view->show() ;
        view->setVisible(TRUE);
        view->move(0,0);
        view->setMinimumSize(100,25);
        //-------------------------------------------------
    }
};
int main(int argc, char** argv) {
    QApplication app(argc, argv);
    MyWidget widget;
    widget.show();
    return app.exec();
}


PM MAIL   Вверх
SwordOfDeath
  Дата 28.12.2008, 19:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 130
Регистрация: 16.10.2007

Репутация: нет
Всего: нет



Спасибо всем... 
Действительно именно в этом и была проблема... Мои view и scene были сатическими...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.0463 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.