crossplatform.ru

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

3 страниц V  < 1 2 3 >  
Ответить в данную темуНачать новую тему
> преобразованный QWidget не отрисовывается на форме
efg
  опции профиля:
сообщение 9.5.2011, 10:57
Сообщение #11


Студент
*

Группа: Участник
Сообщений: 48
Регистрация: 6.5.2011
Пользователь №: 2658

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




Репутация:   0  


Цитата(Litkevich Yuriy @ 9.5.2011, 7:50) *
efg, приведи код paintEvent(), который у тебя получился в конечном итоге, что-то ты делаешь не то, что я тебе говорю.

у тебя должно было получится так:
void mazegame::paintEvent(QPaintEvent *e)
{
    QWidget::paintEvent(e);
/*
ТУТ ТВОЙ КОД
*/
}


void mazegame::paintEvent(QPaintEvent *event) {
    /*
    const int mX=21;
    const int mY=18;
    QPainter painter(this);
    QPoint point;
    for (int i=0; i<20; i++)
        for (int j=0; j<20; j++) {
        if (m->getLeftS(i,j)&&i) {
            point.setX(mX+i*20+i-1);
            point.setY(mY+j*20+j+1);
            painter.drawImage(point,vSeparatorImage);
        }
        if (m->getUpS(i,j)&&j) {
            point.setX(mX+i*20+i);
            point.setY(mY+j*20+j);
            painter.drawImage(point,hSeparatorImage);
        }
    }
    point.setX(mX+p->getX()*20+p->getX()%20);
    point.setY(mY+p->getY()*20+p->getY()%20+1);
    painter.drawImage(point,playerImage);
    point.setX(mX+m->geteX()*20+m->geteX()%20);
    point.setY(mY+m->geteY()*20+m->geteY()%20+1);
    painter.drawImage(point,exitImage);
    */
    QWidget::paintEvent(event);
}

откомпилилось. слева и справа лэйблы, между ними - 459 пикселей пустоты, как и ожидалось
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
PAFOS
  опции профиля:
сообщение 10.5.2011, 8:42
Сообщение #12


Активный участник
***

Группа: Участник
Сообщений: 258
Регистрация: 27.12.2010
Из: Дмитров
Пользователь №: 2309

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




Репутация:   8  


поставь вызов QWidget::paintEvent(event) ПЕРЕД твоим кодом рисования.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
efg
  опции профиля:
сообщение 10.5.2011, 12:18
Сообщение #13


Студент
*

Группа: Участник
Сообщений: 48
Регистрация: 6.5.2011
Пользователь №: 2658

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




Репутация:   0  


Цитата(PAFOS @ 10.5.2011, 9:42) *
поставь вызов QWidget::paintEvent(event) ПЕРЕД твоим кодом рисования.

сударь, не поленитесь же теперь растолковать мне, в чём же, собственно, состоит разница между функцией из прошлой цитаты и ей же после того, как я проделал над ней предложенные вами манипуляции
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
PAFOS
  опции профиля:
сообщение 10.5.2011, 13:40
Сообщение #14


Активный участник
***

Группа: Участник
Сообщений: 258
Регистрация: 27.12.2010
Из: Дмитров
Пользователь №: 2309

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




Репутация:   8  


Когда я говорил чтобы ты поставил вызов QWidget::paintEvent(ev) в начало функции, я предполагал, что ты раскомментируешь свой код рисования.

А в том случае, что на скрине, программа отрабатывает правильно.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 10.5.2011, 17:01
Сообщение #15


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

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

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




Репутация:   94  


efg, попробуй просто линию конкретным цветом нарисовать.

П.С.
У меня нет возможности набивать твой код для теста, если дашь простейший компилируемый проэкт, то потестю.

П.П.С.
Вызывать обработчик рисования базового класса не нужно, если всё хорошо. Я говорил так сделать, только для теста.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
efg
  опции профиля:
сообщение 10.5.2011, 21:20
Сообщение #16


Студент
*

Группа: Участник
Сообщений: 48
Регистрация: 6.5.2011
Пользователь №: 2658

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




Репутация:   0  


Цитата(Litkevich Yuriy @ 10.5.2011, 18:01) *
efg, попробуй просто линию конкретным цветом нарисовать.


Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
efg
  опции профиля:
сообщение 11.5.2011, 23:26
Сообщение #17


Студент
*

Группа: Участник
Сообщений: 48
Регистрация: 6.5.2011
Пользователь №: 2658

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




Репутация:   0  


если добавить виджет на форму, опять ничего не рисуется
втф
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
PAFOS
  опции профиля:
сообщение 12.5.2011, 7:58
Сообщение #18


Активный участник
***

Группа: Участник
Сообщений: 258
Регистрация: 27.12.2010
Из: Дмитров
Пользователь №: 2309

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




Репутация:   8  


мб ты при создании виджета не указываешь родителя?

Т.е. ему надо передавать указатель на родительский виджет.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
efg
  опции профиля:
сообщение 12.5.2011, 19:56
Сообщение #19


Студент
*

Группа: Участник
Сообщений: 48
Регистрация: 6.5.2011
Пользователь №: 2658

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




Репутация:   0  


Цитата(PAFOS @ 12.5.2011, 8:58) *
мб ты при создании виджета не указываешь родителя?

Т.е. ему надо передавать указатель на родительский виджет.

как при размещении виджета на форме в кьют-дизайнере указать родителя? и что им будет? centralWidget?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 13.5.2011, 7:28
Сообщение #20


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

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

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




Репутация:   94  


efg, Судя по скрину, тестовый вариант виджета работает правильно.


В дизайнере этот тестовый вариант не работает?

Если да, то покажи настройки "Promote to" в дизайнере, для данного виджета. Прям снимок экрана.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 24.5.2024, 16:38