[Interest] First Paint Event: custom shaped widget
Sensei
senseiwa at gmail.com
Mon Feb 24 16:12:42 CET 2014
Dear all,
in a previous post (Masked widget glitch) I asked suggestions about
making an arrow-like widget (see picture in [1]). The old and bad code
used a mask, but it had a glitch, as you see in the picture; however,
the workaround was easy: doing show, hide, show. Ugly but it worked.
I was suggested to move my code to a new QWidget subclass, painting the
background, but now I'm finding it hard to create even the simplest form.
What I've achieved so far is very lousy (see picture in [2]): the ugly
hack I've used before seems better than this one.
Can anyone help me understand how to draw a good-looking widget?
Thanks & Cheers!
[1] https://dl.dropboxusercontent.com/u/15635416/mask.png
[2] https://dl.dropboxusercontent.com/u/15635416/paint.png
ToolWindow::ToolWindow(QWidget *parent, QWidget *follow) :
QWidget(parent, Qt::FramelessWindowHint)
{
setAttribute(Qt::WA_TranslucentBackground);
}
void ToolWindow::paintEvent(QPaintEvent *event)
{
QPainter p(this);
const int h = 10;
const int w = 12;
QPoint path[7];
path[0] = QPoint( 0, h);
path[1] = QPoint( w , h);
path[2] = QPoint( w * 2, 0);
path[3] = QPoint( w * 3, h);
path[4] = QPoint(width(), h);
path[5] = QPoint(width(), height());
path[6] = QPoint( 0, height());
p.drawPolygon(path, 7);
}
More information about the Interest
mailing list