我分析也是要重构这个函数,但是因为我也才学Qt,试了一些方法还没试通.你能不能帮我改一些代码,我把.cpp和.h文件发上来,希望你能抽空帮我解决,先谢谢了.
test.h文件
#ifndef DDD_H
#define DDD_H
#include <QtGui/QWidget>
#include "ui_test.h"
#include <qevent.h>
class test: public QWidget
{
Q_OBJECT
public:
test(QWidget *parent = 0, Qt::WFlags flags = 0);
~test();
virtual void mousePressEvent(QMouseEvent *);
virtual void mouseMoveEvent(QMouseEvent *);
virtual void resizeEvent(QResizeEvent *);
private:
Ui::dddClass ui;
QPoint last, pos0;
};
#endif // TEST_H
test.cpp文件
#include "test.h"
test::test(QWidget *parent, Qt::WFlags flags)
: QWidget(parent, flags= Qt::WStyle_NoBorder | Qt::WStyle_Customize )
{
ui.setupUi(this);
QPixmap *pm_back_buffer = new QPixmap("images/bg.png");
setBackgroundPixmap(*pm_back_buffer);
const QIcon iconExit = QIcon(QString::fromUtf8("images/exit.png"));
ui.exitButton->setIcon(iconExit);
connect(ui.exitButton, SIGNAL(clicked()), this,SLOT(close()));
setActiveWindow();
setMinimumSize(266, 538);
resize(266, 538);
}
test::~test()
{
}
void test::mouseMoveEvent(QMouseEvent *e)
{
QPoint newpos = e->globalPos();
QPoint upleft = pos0 + newpos - last;
move(upleft);
}
void test::mousePressEvent(QMouseEvent *e)
{
last = e->globalPos();
pos0 = e->globalPos() - e->pos();
}
void test::resizeEvent(QResizeEvent *e)
{
int extraWidth = width() - minimumWidth();
int extraHeight = height() - minimumHeight();
ui.exitButton->setGeometry(240 + extraWidth, 10, 21, 21);
}