Russian Qt Forum

Qt => 2D и 3D графика => Тема начата: Sun от Май 30, 2005, 18:23



Название: QBitmap & QPainter
Отправлено: 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);

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

За ранее благодаона ;)


Название: QBitmap & QPainter
Отправлено: Hellenna от Май 30, 2005, 21:14
было похожее когда в многопотоковом приложении из разных потоков обращалась к графическому интерфейсу. Ошибка связана с тем, что X не умеют обрабатывать асинхронные запросы.
Что делать в твоем случае пока не очень понятно. Но можно попробовать отловить поточнее на каком именно вызове происходит ошибка и попытаться обойти. Это можно сделать с помощью банальных printf или vallgrind`ом...

Еще, попробуй посмотреть пример $QTDIR/examples/tux там рисуется прозрачное окошко с наложением маски. Может тебе надо аналогично делать?...  :roll:


Название: QBitmap & QPainter
Отправлено: Hellenna от Май 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.
Если хочешь, могу весь проект кинуть   :)


Название: QBitmap & QPainter
Отправлено: Sun от Май 31, 2005, 07:37
:) у меня тоже работает, но проблемка в том, что не всегда :(((...
ошибка возникает именно в момент QPainter p(&bitmap);


Название: QBitmap & QPainter
Отправлено: Hellenna от Май 31, 2005, 09:28
Цитата: "Sun"
:)
ошибка возникает именно в момент QPainter p(&bitmap);

а если попробовать
Код:
QPainter p();
p.begin(&bitmap);
? :roll:


Название: QBitmap & QPainter
Отправлено: Sun от Май 31, 2005, 10:02
я чуток ошиблась в момент установки маски setMask...
не могу понять, то это всё работает, то нет......


Название: QBitmap & QPainter
Отправлено: Hellenna от Май 31, 2005, 10:41
Цитата: "Sun"

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

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