2013-03-17 2 views
0

Не могли бы вы рассказать мне, как рисовать прямоугольники с границами, такими как this, пользовательским QGraphicsItem. Я сделал макет и нарисовал прямоугольники, но границы моего rectangles - это простая ручка. Запросите вашу помощь. Благодарю.Qt настроить границы прямоугольника для получения мягкого 3D-эффекта

void QGraphicsTileItem::paint(QPainter *painter, 
           const QStyleOptionGraphicsItem *option, 
           QWidget *widget) 
{ 
    /// Draw the rect 
    painter->setRenderHints(QPainter::Antialiasing | 
          QPainter::TextAntialiasing | 
          QPainter::SmoothPixmapTransform | 
          QPainter::HighQualityAntialiasing, true); 
    painter->setPen(pen); 
    painter->setBrush(colour); 
    painter->drawRect(bound); 
    painter->drawText(bound, Qt::AlignLeft | Qt::AlignTop | 
         Qt::TextSingleLine, name); 
} 
+1

Я бы не рисовал прямоугольники. Я бы нарисовал 2 набора строк. – 2013-03-17 07:47:55

+0

Сделайте то, что @Sosukodo говорит. – cmannett85

ответ

2

Вот пример paintEvent от QWidget. Вы должны уметь адаптировать его к вашему событию рисования (вместо «this») вы должны использовать свой измененный вариант:

void Button::paintEvent(QPaintEvent *e) 
{ 
    QPainter paint; 
    paint.begin(this); 
    paint.setPen(Qt::white); 
    paint.drawLine(0,0, this->width(), 0); 
    paint.drawLine(0,0, 0, this->height()); 
    paint.setPen(Qt::black); 
    paint.drawLine(0, this->height()-1, this->width()-1, this->height()-1); 
    paint.drawLine(this->width()-1, 0, this->width()-1, this->height()-1); 
    paint.end(); 
} 
+0

[This] [1] - это то, что я получаю сейчас, спасибо за это. Но это не совсем то, чего я пытаюсь достичь. Любые предложения, пожалуйста. [1] https://picasaweb.google.com/lh/photo/NwC_3WCZY01w1gztYlu0C9MTjNZETYmyPJy0liipFm0?feat=directlink – pascal

+0

Ну это решение хорошо работает с небольшой настройки. Большое спасибо за вашу помощь. – pascal

Смежные вопросы