crossplatform.ru

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

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


Участник
**

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

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




Репутация:   0  


создаю в основном файле в конструкторе тэбвиджет по имени tabWidget_2:
QTabWidget* tabWidget_2 = new QTabWidget(ui->tab);
    tabWidget_2->setObjectName(QString::fromUtf8("tabWidget_2"));
    tabWidget_2->setGeometry(QRect(500, 10, 391, 451));
    this->pictureU_T=new canvasForU_T();
    tabWidget_2->addTab(pictureU_T, QString::fromAscii("T_\\"));
    this->pictureU_X=new canvasForU_X();
    tabWidget_2->addTab(this->pictureU_X,QString::fromAscii("T_\\"));

ui->tab это виджет, который вставляется в еще один тэб под названием tabwidget(получается один тэб - "tabWidget_2" в другом тэбе - "tabWidget")
canvasForU_T() - класс унаследованный от QWidget(его-то я и хочу вставить в tabWidget_2).
Вот его описание:
#include "canvasforu_t.h"

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

void canvasForU_T::painEvent(QPaintEvent *){

    QColor color(Qt::blue);
    QPen pen(color);
    pen.setWidth(12);
    paint->setPen(pen);
    paint->drawLine(10,10,70,70);

}

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

canvasForU_X() это тоже самое, что и canvasForU_T().
Никаких линий не рисуется.Появляется ошибка:
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::begin: Paint device returned engine == 0, type: 1
QPaintDevice: Cannot destroy paint device that is being painted

Как ее исправить?

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


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

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

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




Репутация:   34  


вот так заработает
#include "canvasforu_t.h"

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

void canvasForU_T::painEvent(QPaintEvent *)
{
    QPainter paint(this)

    QColor color(Qt::blue);
    QPen pen(color);
    pen.setWidth(12);
    paint.setPen(pen);
    paint.drawLine(10,10,70,70);

}

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


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


Участник
**

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

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




Репутация:   0  


ошибок кроме удаления нет.Но линии всеранво не чертятся((.А откройте секрет- почему ошибок не стало?
Вот кстати деструктор из основногокласса:
MainWindow::~MainWindow()
{
   delete ui;
   delete this->pictureU_T,this->pictureU_X;
}


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


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

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

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




Репутация:   34  


voipp, а с моим вариантом попробовал ?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
voipp
  опции профиля:
сообщение 26.10.2010, 21:51
Сообщение #5


Участник
**

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

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




Репутация:   0  


я с вашим вариантом и пробовал.Кстати я включил дебаггер(постаивл точки останова в пэйнтивенте в классе
canvasForU_T
) и он по ним не прошелся(((

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


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

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

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




Репутация:   34  


при чём тут деструктор MainWindow ? ))

а вот так попробуй, начертится чёрная линия ?

#include "canvasforu_t.h"
void canvasForU_T::painEvent(QPaintEvent *)
{
    QPainter paint(this)
    paint.drawLine(0,0,100,100);
}


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


Участник
**

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

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




Репутация:   0  


не всеравно зараза не чертит
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 26.10.2010, 21:58
Сообщение #8


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

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

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




Репутация:   34  


Цитата(voipp @ 27.10.2010, 0:51) *
) и он по ним не прошелся(((


у тебя класс canvasForU_T вообще является наследником QWidget ?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
voipp
  опции профиля:
сообщение 26.10.2010, 21:59
Сообщение #9


Участник
**

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

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




Репутация:   0  


Да:
class canvasForU_T : public QWidget

кстати у меня класс canvasFor_T canvasFor_X в разных файлах лежат(но всеранво они присоеденены)

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


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

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

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




Репутация:   34  


voipp, прицепи ка проект, а то ничего не понятно.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 4.8.2020, 6:26