轉:QT實現陰影視窗(二)
阿新 • • 發佈:2019-02-16
從上一篇的效果可以看到視窗並不美觀,而且不能用滑鼠進行拖動,還不可以實現最大最小化。
要實現用滑鼠拖動可以,過載滑鼠點選和滑鼠移動事件的處理,具體如下:
//GraphicDialog.h
protected:
void mousePressEvent(QMouseEvent *)
void mouseMoveEvent(QMouseEvent* );
private:
QPoint last;//儲存滑鼠按下的位置
//GraphicDialog.cpp
void GraphicDialog::mousePressEvent(QMouseEvent *e)
{
last = e->globalPos();
}
void GraphicDialog::mouseMoveEvent(QMouseEvent *e)
{
if(e->buttons()== Qt::LeftButton)
{
QPoint newpos = e->globalPos();
QPoint upleft = mapToParent(newpos - last); //計算距原位置的偏移
move(upleft);
last = newpos; //更新原位置到最新的位置
}
}
這時已經可以用滑鼠手動視窗到任意位置。