Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [QT4] Вывод текста при помощи QPainter на QImage, вылетает SigSegv 
:(
    Опции темы
Rizar
Дата 7.2.2008, 21:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Код

QImage image(/*BORDER +*/ m + 1, /*BORDER */+ n + 1, QImage::Format_RGB32);

    for (int i = n; i >= 0; i--)
        for (int j = 0; j <= m; j++)
            if (bt.b[i][j])
                image.setPixel(/*BORDER */+ j, n - i, qRgb(0, 0, 0));
            else
                image.setPixel(/*BORDER */+ j, n - i, qRgb(255, 255, 255));

    QPainter paint(&image);
    paint.drawText(5, 5, "trt");


Код

SOURCES += main.cpp
SOURCES += draw.cpp
SOURCES += functions.cpp
HEADERS += draw.h
HEADERS += functions.h
CONFIG += qt debug
TARGET = graphic


В qt новичок а тут возникла проблема - вылетает Segmentation error где-то в Qmap при попытке вывести текст на  QImage.
Помогите чем-нить, может что-то надо в .pro указывать?
Заранее спасибо.
PM MAIL   Вверх
JackYF
Дата 7.2.2008, 21:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

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



Цитата(Rizar @  7.2.2008,  20:01 Найти цитируемый пост)
bt.b

какие размерности у этого массива?

какие значения принимают m, n непосредственно до этого куска кода?


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
Rizar
Дата 7.2.2008, 22:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Код

void draw_image(int n, int m, int x, int y, char* file_name, T_func* f)
{
    std::cout << "drawing of image started\n";    

    bin_table bt(n, m, x, y, f);
    QImage image(/*BORDER +*/ m + 1, /*BORDER */+ n + 1, QImage::Format_RGB32);

    for (int i = n; i >= 0; i--)
        for (int j = 0; j <= m; j++)
            if (bt.b[i][j])
                image.setPixel(/*BORDER */+ j, n - i, qRgb(0, 0, 0));
            else
                image.setPixel(/*BORDER */+ j, n - i, qRgb(255, 255, 255));

    QPainter paint(&image);
    paint.drawText(5, 5, "trt");
    
    image.save(file_name);                    
}


bin_table конструктор делает полезное дело предварительно вызывая init()

Код

void init()
    {
            b = new int* [n + 1];
        for (int i = 0; i <= n; i++)
        {    
            b[i] = new int [m + 1];
            memset(b[i], 0, 4 * (m + 1));
        }
    }


а вообще это все это корявая попытка написать программу для постройки графиков и вывода в файл результата
если ничего не получится придется пользоваться чем-то готовым
если убрать вывод текста drawText то график выводится корректно
PM MAIL   Вверх
JackYF
Дата 7.2.2008, 23:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

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



Цитата(Rizar @  7.2.2008,  21:16 Найти цитируемый пост)
пользоваться чем-то готовым

Qwt  smile 

Ещё раз - проверь, что в функцию передаются положительные n, m на всякий случай.
Больше потенциальных косяков здесь не вижу. Значит, они могут быть до этого куска, если с памятью накосячил.


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

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

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


 




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


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

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