隐藏标题栏:
setWindowFlags ( Qt::FramelessWindowHint )
然后自己画一个图片按钮,重写下面事件:
virtual void mousePressEvent(QMouseEvent* arg1);
virtual void mouseReleaseEvent(QMouseEvent* arg1);
virtual void paintEvent(QPaintEvent* arg1);
void ExitButton::mousePressEvent(QMouseEvent* arg1)
{
if (arg1->button() == Qt::LeftButton)
{
Global_Server.PlayFile((char *)(QString(BTN_RING).toUtf8().data()));
arg1->accept();
m_ButtonState=ButtonPress;
emit clicked();
this->repaint();
}
}
void ExitButton::mouseReleaseEvent(QMouseEvent* arg1)
{
if (arg1->button() == Qt::LeftButton)
{
arg1->accept();
m_ButtonState=ButtonRelease;
this->repaint();
}
}
void ExitButton::paintEvent(QPaintEvent* arg1)
{
QImage ButtonImage;
QPainter Painter;
switch (m_ButtonState)
{
case ButtonPress:
ButtonImage.load(":/images/closebuttondown.png");
break;
case ButtonRelease:
default:
ButtonImage.load(":/images/closebutton.png");
break;
}
Painter.begin(this);
Painter.drawImage(this->rect(),ButtonImage);
Painter.end();
QWidget::paintEvent(arg1);
}