Russian Qt Forum

Qt => 2D и 3D графика => Тема начата: Red Devil от Май 25, 2008, 19:43



Название: Нарисовать rect с засечками
Отправлено: Red Devil от Май 25, 2008, 19:43
Не знаю как правильно назвать - вообщем этот метод используется в krusader и total commander по умолчанию для отображения текующего выделенного элемента списка. Выглядит примерно так :
 -------
|тектс |
 -------
Какие опции для шрифта/кисти нужно использовать чтобы получить такое ?

и еще такая проблема. Вбил такой код :
Код:
void MyEdit::paintEvent( QPaintEvent * event )
{
QPainter painter(viewport());

QRect r = cursorRect();
r.setX(0);
r.setWidth(viewport()->width());
painter.fillRect(r, QBrush(QColor(230, 230, 230) ) );

QTextEdit::paintEvent( event );
}
В винде вылетает assert Qt-шный. В чем проблема не понимаю.   
Q_ASSERT(sharedPainter ? sharedPainter->isActive() : true);


Название: Re: Нарисовать rect с засечками
Отправлено: Red Devil от Май 25, 2008, 20:18
с assert справился. Обнес {} создание обьекта и рисование и все работает почему-то работает ^_^
Код:
           {
QPainter painter(viewport());
QRect r = cursorRect();
r.setX(0);
r.setWidth(viewport()->width());
painter.fillRect(r, QBrush(QColor(230, 230, 230) ) );
}

QTextEdit::paintEvent( event );
Видимо нужно было чтобы обьекта painter не существовало при вызове paintEvent родителя.


Ну и вообще вопрос решен :
painter.setPen(Qt::DashLine);
вот и все что требовалось что сделать такую окантовку ^_^


Название: Re: Нарисовать rect с засечками
Отправлено: ритт от Май 25, 2008, 20:28
если кутэ 4, посмотри QRubberBand