Russian Qt Forum

Qt => 2D и 3D графика => Тема начата: Diablo от Март 27, 2007, 09:22



Название: QCanvas и порядок отображения объектов
Отправлено: Diablo от Март 27, 2007, 09:22
Здавствуйте!
У меня возникла проблема с QCanvas. Версия Qt 3.3.8 Мне нужно сделать интерактивный виджет, на котором должны находится много концентрических окружностей, точек и линий, притом все эти объекты перекрываются друг с другом.
Вот что происходит: я рисую круг (а именно создаю QCanvas, создаю QCanvasEllipse и показываю его - в итоге у меня должен получиться круг); далее провожу из центра круга линии доходящие до границ (создаю массив указателей на QCanvasLine и в цикле создаю объекты QCanvasLine и показываю их - в итоге у меня на экране должны быть круг, а на нем линии-радиусы); затем рисую круг меньшего радиуса с цветом фона (создаю QCanvasEllipse, заливаю его цветом фона QCanvas с целью получить кольцо, в котором нарисованы линии, которые разбивают это кольцо на секторы). Затем создаю QCanvasView и показываю QCanvas. На экране вижу: внутренний круг (который с цветом фона) перекрывает внешний как и должно быть, но линии не рисуются между кругам (то есть в кольце), некоторые линии оказываются перекрыты внутренним кругом (как и должно быть), а некоторые показываются сверху над всеми кругами. Это все я рисую в конструкторе класса унаследованного от  QWidget. Если я создаю и рисую линии в цикле, но не в конструкторе, а например по событию нажатия кнопки мыши, линии у меня вообще не видны, хотя диспечер задач говорит, что память для линий была выделена, то есть линии существуют, но перекрываются кругами.
У меня вопрос к вам. Как можно управлять порядком расположения объектов? На мой вгляд это довольно распространенная операция - расположение объектов в векторном графическом редакторе, я надеюсь в Qt это тоже можно делать. Пожалуйста, если знаете, подскажите, как это сделать с помощью QCanvas или может с помощью другого класса. Буду вам очень благодарен.