Russian Qt Forum
Май 06, 2024, 12:26 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QBitmap & QPainter  (Прочитано 10165 раз)
Sun
Гость
« : Май 30, 2005, 18:23 »

Приветики!!!! У меня такая проблема - рисую QPainter'ом на bitmap(w, h, true) для прозрачности виджета. В результате при выполнении возникает ошибка (в момент создания виджета):

Xlib: unexpected async reply (sequence 0xb5)!

код конструктора:

QPainter p(&bitmap);
p.drawRect(0, 0, w, h);
p.end();
setMask(bitmap);

У кого нибудь встречалось что нибудь подобное?Непонимающий Если да, то подскажите как от этого избавится.

За ранее благодаона Подмигивающий
Записан
Hellenna
Гость
« Ответ #1 : Май 30, 2005, 21:14 »

было похожее когда в многопотоковом приложении из разных потоков обращалась к графическому интерфейсу. Ошибка связана с тем, что X не умеют обрабатывать асинхронные запросы.
Что делать в твоем случае пока не очень понятно. Но можно попробовать отловить поточнее на каком именно вызове происходит ошибка и попытаться обойти. Это можно сделать с помощью банальных printf или vallgrind`ом...

Еще, попробуй посмотреть пример $QTDIR/examples/tux там рисуется прозрачное окошко с наложением маски. Может тебе надо аналогично делать?...  :roll:
Записан
Hellenna
Гость
« Ответ #2 : Май 30, 2005, 21:57 »

Ради интереса посмотрела. У меня твой код работает:
Код:
void mainForm::init(){
   QBitmap bitmap(100, 100);
   QPainter p(&bitmap);
   p.drawRect(0,0, 100, 100);
   p.end();
   setMask(bitmap);
}


Работает в конфигурациях:
FedoraCore 3+ Qt3.3.3 + KDE
FedoraCore 3 + Qt3.3.3. + WindowMaker
MacOSX 10.3 + Qt3.3.4
в результате вместо целого окошка получается квадратик 100 на 100.
Если хочешь, могу весь проект кинуть   Улыбающийся
Записан
Sun
Гость
« Ответ #3 : Май 31, 2005, 07:37 »

Улыбающийся у меня тоже работает, но проблемка в том, что не всегда Грустный((...
ошибка возникает именно в момент QPainter p(&bitmap);
Записан
Hellenna
Гость
« Ответ #4 : Май 31, 2005, 09:28 »

Цитата: "Sun"
Улыбающийся
ошибка возникает именно в момент QPainter p(&bitmap);

а если попробовать
Код:
QPainter p();
p.begin(&bitmap);
? :roll:
Записан
Sun
Гость
« Ответ #5 : Май 31, 2005, 10:02 »

я чуток ошиблась в момент установки маски setMask...
не могу понять, то это всё работает, то нет......
Записан
Hellenna
Гость
« Ответ #6 : Май 31, 2005, 10:41 »

Цитата: "Sun"

не могу понять, то это всё работает, то нет......

это специфика ошибки, она проявляется не каждый раз, а только при "благоприятном" стечении обстоятельств...
можешь еще посмотреть здесь http://www.linux.org.ru/view-message.jsp?msgid=530860  может поможет...
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.044 секунд. Запросов: 20.