QT自定义窗口:

QT自定义窗口:

New file--->qt--->qt designer form class--->widget 创建一个干净的vvwidget  .ui .h .cpp

该窗口支持拖动,透明,效果如图:

 

图片

 

/// vvwidget.h ///

#ifndef VVWIDGET_H

#define VVWIDGET_H

#include <QWidget>

#include <QPoint>

#include <QPainter>

#include <QMouseEvent>

#include <QKeyEvent>

namespace Ui {

   class vvwidget;

}

class vvwidget : public QWidget

{

   Q_OBJECT

public:

   explicit vvwidget(QWidget *parent = 0);

   ~vvwidget();

protected:

   void keyPressEvent ( QKeyEvent * event );

   void mousePressEvent(QMouseEvent *event);

   void mouseMoveEvent(QMouseEvent *event);

   void paintEvent( QPaintEvent* );

private:

   Ui::vvwidget *ui;

   QPoint dragPosition;

};

#endif // VVWIDGET_H

/// vvwidget.cpp //

#include "vvwidget.h"

#include "ui_vvwidget.h"

vvwidget::vvwidget(QWidget *parent) :

   QWidget(parent),

   ui(new Ui::vvwidget)

{

   ui->setupUi(this);

   setWindowFlags(Qt::FramelessWindowHint);

   setAttribute(Qt::WA_TranslucentBackground, true);

}

vvwidget::~vvwidget()

{

   delete ui;

}

void vvwidget::mousePressEvent(QMouseEvent *event)

{

  if (event->button() == Qt::LeftButton) {

      dragPosition = event->globalPos()-pos();

  }

}

void vvwidget::mouseMoveEvent(QMouseEvent *event)

{

  if (event->buttons() & Qt::LeftButton) {

      move(event->globalPos()-dragPosition);

  }

}

void vvwidget::keyPressEvent(QKeyEvent *event)

{

   if(event->key()==Qt::Key_Escape){

      close();

   }

}

void vvwidget::paintEvent( QPaintEvent* )

{

    QPainter p(this);

   p.drawPixmap(rect(),QPixmap(":/images/vb.png"));

}

这张vb.png 是我从<<热血传奇>>中提取出来的对话框背景,并在左上角抠了个透明区域。

在ui上调了下窗口大小 ,加了两个按钮,意思意思,一切从简,只为表达思想 :-)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值