Hi,

On 13-06-2018 09:26, Nicolas Krieger wrote:
I would like to have a border in my widget, just like a QFrame. But a QFrame which border is over and not beside. I want to hide and show the border, but without layout re-sizing effects.

If I understand your problem correctly, you should be able to use a QGraphicsEffect like this:

#include <QGraphicsEffect>
#include <QPainter>

class InsideBorderGraphicsEffect : public QGraphicsEffect
{
  Q_OBJECT
public:
  InsideBorderGraphicsEffect(QObject* parent = nullptr)
    : QGraphicsEffect(parent)
  {
  }

protected:
  void draw(QPainter* painter) override
  {
    QPoint offset;
    const QPixmap pixmap = sourcePixmap(Qt::LogicalCoordinates,
                                        &offset);
    painter->drawPixmap(offset, pixmap);
    painter->setPen(QPen(Qt::magenta, 10));
    painter->drawRect(boundingRect());
  }
};


Now it is just a matter of setting the effect on your widget with

  setGraphicsEffect(new InsideBorderGraphicsEffect);

and clear it again with

  setGraphicsEffect(nullptr);

--
Frederik Christiani
Viking Software
https://www.vikingsoftware.com/
_______________________________________________
Interest mailing list
Interest@qt-project.org
http://lists.qt-project.org/mailman/listinfo/interest

Reply via email to