zoukankan      html  css  js  c++  java
  • Qt之对话框设计——不规则窗体

    shapewidget.h

    #ifndef SHAPEWIDGET_H
    #define SHAPEWIDGET_H
    
    #include <QtGui>
    
    class QPoint;
    
    
    class ShapeWidget : public QWidget
    {
    	Q_OBJECT
    
    public:
    	ShapeWidget(QWidget *parent = 0, Qt::WFlags flags = 0);
    	~ShapeWidget();
    
    protected:
    	void mousePressEvent(QMouseEvent *);
    	void mouseMoveEvent(QMouseEvent *);
    
    private:
    	QPoint dragPosition;
    	
    };
    
    #endif // SHAPEWIDGET_H
    

    shapewidget.cpp

    #include "shapewidget.h"
    #include <QPixmap>
    #include <QBitmap>
    
    ShapeWidget::ShapeWidget(QWidget *parent, Qt::WFlags flags)
    	: QWidget(parent, flags)
    {
    	QPixmap pix;	//实例化一个位图对象
    	
    	pix.load("images/tux.png",
    		0,
    		Qt::AvoidDither| Qt::ThresholdDither | Qt::ThresholdAlphaDither);	//加载掩码图像
    	resize(pix.size());		//设置图像的大小
    	setMask(pix.mask());	//抠除图像的白色区域实现不规则窗体
    
    	QPalette plt;	//实例化调色板
    	plt.setBrush(QPalette::Window, QBrush(pix));	//将调色板的画刷设置为掩码位图,在不规则窗体上显示出掩码位图
    	setPalette(plt);	//按调色板信息设置窗体
    }
    
    ShapeWidget::~ShapeWidget()
    {
    
    }
    
    void ShapeWidget::mousePressEvent(QMouseEvent * event)
    {
    	if (event->button() == Qt::LeftButton) 
    	{
    		dragPosition = event->globalPos() - frameGeometry().topLeft();
    		event->accept();
    	}
    	if (event->button() == Qt::RightButton) 
    	{
    		close();
    	}
    }
    
    void ShapeWidget::mouseMoveEvent(QMouseEvent * event)
    {
    	if (event->buttons() & Qt::LeftButton) 
    	{
    		move(event->globalPos() - dragPosition);
    		event->accept();
    	}
    }
    
    
    

    shapewidget.cpp中第30行的frameGeometry().topLeft()仍然表示整个窗体的左上角,而不是所见不规则窗体的左上角。

  • 相关阅读:
    在小气的神的Blog上看到的一段Video
    一个在.net下进行用户模拟的类
    PDC每日视频
    今天才知有一个CollectionBase类,惭愧
    “EditandContinue”特性
    Codeforces Round #597 (Div. 2) A. Good ol' Numbers Coloring
    单据号生成
    JAR包
    框架之间传值
    Eclipse3.4发布 新特性展示
  • 原文地址:https://www.cnblogs.com/hanzhaoxin/p/2783373.html
Copyright © 2011-2022 走看看