crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

4 страниц V  < 1 2 3 4 >  
Ответить в данную темуНачать новую тему
> не работает прорисовка в форме
voipp
  опции профиля:
сообщение 26.10.2010, 22:46
Сообщение #21


Участник
**

Группа: Участник
Сообщений: 116
Регистрация: 20.10.2009
Из: Msk
Пользователь №: 1166

Спасибо сказали: 0 раз(а)




Репутация:   0  


Спасибо добрый человек! Все работает!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 26.10.2010, 22:48
Сообщение #22


фрилансер
******

Группа: Участник
Сообщений: 2941
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


наздоровье! :)

Сообщение отредактировал Алексей1153 - 26.10.2010, 22:49
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
voipp
  опции профиля:
сообщение 26.10.2010, 22:54
Сообщение #23


Участник
**

Группа: Участник
Сообщений: 116
Регистрация: 20.10.2009
Из: Msk
Пользователь №: 1166

Спасибо сказали: 0 раз(а)




Репутация:   0  


Но ошибка QPaintDevice: Cannot destroy paint device that is being painted всеранво осталась
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 26.10.2010, 23:03
Сообщение #24


фрилансер
******

Группа: Участник
Сообщений: 2941
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


вот так не будет
//это к делу не относится, просто подправил ))
MainWindow::~MainWindow()
{
   delete ui;
   delete pictureU_T,
   delete pictureU_X;
}


//а это оно самое
/*
void MainWindow::paintEvent(QPaintEvent*){
    painter= new QPainter(this);
    QColor color(Qt::blue);
    QPen pen(color);
    pen.setWidth(8);
    painter->setPen(pen);
    //this->pictureU_T->update();
}
*/
void MainWindow::paintEvent(QPaintEvent*)
{
    QPainter painter(this);
    QColor color(Qt::blue);
    QPen pen(color);
    pen.setWidth(8);
    painter.setPen(pen);
}
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
voipp
  опции профиля:
сообщение 26.10.2010, 23:20
Сообщение #25


Участник
**

Группа: Участник
Сообщений: 116
Регистрация: 20.10.2009
Из: Msk
Пользователь №: 1166

Спасибо сказали: 0 раз(а)




Репутация:   0  


а можно тупой вопрос - почему именно так? какая разница?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 26.10.2010, 23:25
Сообщение #26


фрилансер
******

Группа: Участник
Сообщений: 2941
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


voipp, да нормальный вопрос, отчего ж тупой. Можно было оставить, как было, с одним условием -вернуть память в кучу

painter= new QPainter(this);
...
delete painter;


а я написал с созданием переменной на стеке - она удалится автоматом
QPainter painter(this);



Читать про управление памятью в C++ .

Сообщение отредактировал Алексей1153 - 26.10.2010, 23:26
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_Гость_voipp_*_*
сообщение 27.10.2010, 9:33
Сообщение #27





Гости








    


"Можно было оставить, как было, с одним условием -вернуть память в кучу" так я ведь в деструкторе удаляю painter!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
voipp
  опции профиля:
сообщение 27.10.2010, 9:45
Сообщение #28


Участник
**

Группа: Участник
Сообщений: 116
Регистрация: 20.10.2009
Из: Msk
Пользователь №: 1166

Спасибо сказали: 0 раз(а)




Репутация:   0  


#include "canvasforu_t.h"

canvasForU_T::canvasForU_T(QWidget* parent):QWidget(parent)
{
    paint=new QPainter(this);
}

void canvasForU_T::paintEvent(QPaintEvent *){

    //QPainter paint(this);

    paint->drawLine(0,0,170,170);

}

canvasForU_T::~canvasForU_T(){
    delete paint;
}

В данном коде я ведь в деструкторе удаляю paint.Почему всеравно вылезает ошибка
QPainter::begin: Paint device returned engine == 0, type: 1
К тому же не рисуются никакие линии.Ведь деструктор вызывается перед выходом из программы!
PS. Остальной код рабоатет нормально

Сообщение отредактировал voipp - 27.10.2010, 9:48
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 27.10.2010, 9:58
Сообщение #29


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


voipp, QPainter надо создавать там где он нужен. Т.е. в методе paintEvent.

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
voipp
  опции профиля:
сообщение 27.10.2010, 10:18
Сообщение #30


Участник
**

Группа: Участник
Сообщений: 116
Регистрация: 20.10.2009
Из: Msk
Пользователь №: 1166

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(Litkevich Yuriy @ 27.10.2010, 10:58) *
voipp, QPainter надо создавать там где он нужен. Т.е. в методе paintEvent.

Я подумал, что зачем каждый раз выделять память под художника(QPainter).И тем более я не вижу причины ошибки!Вот что самое главное!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

4 страниц V  < 1 2 3 4 >
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


8 чел. читают эту тему (гостей: 8, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 28.12.2024, 18:21