我们通常看到见的窗体都是长方形的窗体,但是有时候我们也会需要用到不规则的窗体,所以我们也需要知道怎么创建一个不规则的窗体。
首先创建一个项目,基类选择QWidget,这次我们不勾选创建界面。因为我们需要使用鼠标拖动窗口移动,所以我们需要重写鼠标事件,同时我们还需要用到绘图事件。
我们首先需要在这个类的构造函数中创建一个QPixmap对象,然后使用load函数为这个对象填入图像值,这个图像就是整个窗口。
然后我们将主窗口的尺寸设置为这个图片的尺寸。最后我们只需要给这个图片加一个遮罩,让遮住区域以外的部分看起来是透明的。
现在我们来看看具体的代码
1、创建一个Qpixmap对象,并为其添加图像值,设置窗体的尺寸,添加遮罩
QPixmap pix;//创建一个QPixmap对象
/*
* 调用pix的load函数为QPixmap对象填入图像值
* 参数的含义
* 1、图片的文件名
* 2、读取图片文件的格式 0表示采用默认格式
* 3、表示读取图片的方式 这里表示的是避免图片抖动
*/
pix.load("16.png", 0, Qt::AvoidDither|Qt::ThresholdDither|Qt::ThresholdAlphaDither);
resize(pix.size());//重新设置主窗体的尺寸,尺寸为图片的尺寸
/*
* 为调用它的控件增加一个遮罩,遮住所选区域以外的部分,使之看起来是透明的
* 它的参数是一个QBitmap对象或者是一个QRegion对象
*/
setMask(QBitmap(pix.mask()));
2、重写鼠标按下响应函数,判断是鼠标哪个键被按下,如果是左键被按下,就记录下鼠标当前位置相对于窗体左上角的偏移量,如果是右键被按下,就关闭这个窗口
void Widget::mousePressEvent(QMouseEvent *event)
{
if(event->button() == Qt::LeftButton)
{