怎么用PS做网站广告图,设计logo网站免费无水印,网络搭建与应用教程,储煤棚网架公司事件 mousePressEvent、paintEvent、closeEvent、keyPressEvent
鼠标样式的设置
按WSAD通过keyPressEvent事件移动按钮
通过事件mousePressEvent获取鼠标位置的相对位置#xff0c;绝对位置 cusor 鼠标样式设置成十字星 .h #ifndef DEFAULTHANDLEREXAMPLE_H
#define DEFAUL…事件 mousePressEvent、paintEvent、closeEvent、keyPressEvent
鼠标样式的设置
按WSAD通过keyPressEvent事件移动按钮
通过事件mousePressEvent获取鼠标位置的相对位置绝对位置 cusor 鼠标样式设置成十字星 .h #ifndef DEFAULTHANDLEREXAMPLE_H
#define DEFAULTHANDLEREXAMPLE_H#include QWidget
#include QPaintEventnamespace Ui {
class DefaultHandlerExample;
}class DefaultHandlerExample : public QWidget
{Q_OBJECT
protected:void paintEvent(QPaintEvent *event);void closeEvent(QCloseEvent *event);void keyPressEvent(QKeyEvent *event);void showEvent(QShowEvent *event);void hideEvent(QHideEvent *event);void mousePressEvent(QMouseEvent *event);public:explicit DefaultHandlerExample(QWidget *parent nullptr);~DefaultHandlerExample();private:Ui::DefaultHandlerExample *ui;
};#endif // DEFAULTHANDLEREXAMPLE_H.cpp #include defaulthandlerexample.h
#include ui_defaulthandlerexample.h#include QMessageBox
#include QPainterDefaultHandlerExample::DefaultHandlerExample(QWidget *parent): QWidget(parent), ui(new Ui::DefaultHandlerExample)
{ui-setupUi(this);this-setMouseTracking(false);//只有按下鼠标才会跟踪
}DefaultHandlerExample::~DefaultHandlerExample()
{delete ui;
}
void DefaultHandlerExample::paintEvent(QPaintEvent *event)
{Q_UNUSED(event);QPainter painter(this);painter.drawPixmap(0,0,this-width(),this-height(),QPixmap(:/toolbar/images/background.jpg));
}void DefaultHandlerExample::closeEvent(QCloseEvent *event)
{QString dlgTitle 提示;QString strInfo 确定要退出吗?;QMessageBox::StandardButton resultQMessageBox::question(this,dlgTitle,strInfo,QMessageBox::Yes|QMessageBox::No|QMessageBox::Cancel);if(result QMessageBox::Yes)event-accept();//窗口确认关闭elseevent-ignore();//忽略
}void DefaultHandlerExample::keyPressEvent(QKeyEvent *event)
{QPoint pt ui-btnMove-pos();if((event-key() Qt::Key_A)|| (event-key()Qt::Key_Left))ui-btnMove-move(pt.x()-20,pt.y());if((event-key() Qt::Key_D)|| (event-key()Qt::Key_Right))ui-btnMove-move(pt.x()20,pt.y());if((event-key() Qt::Key_W)|| (event-key()Qt::Key_Up))ui-btnMove-move(pt.x(),pt.y()-20);if((event-key() Qt::Key_S)|| (event-key()Qt::Key_Down))ui-btnMove-move(pt.x(),pt.y()20);// this-setWindowTitle(event-ke);
}void DefaultHandlerExample::showEvent(QShowEvent *event)
{Q_UNUSED(event);ui-label-setText(showEvent函数被触发);
}void DefaultHandlerExample::hideEvent(QHideEvent *event)
{Q_UNUSED(event);ui-label-setText(hideEvent函数被触发);
}void DefaultHandlerExample::mousePressEvent(QMouseEvent *event)
{if(event-button()Qt::LeftButton){QPoint pt event-pos(); //窗口上的相对坐标QPointF relaPt event-position(); //相对坐标QPointF winPt event-scenePosition();//相对坐标QPointF globalPt event-globalPosition();//屏幕上的绝对坐标QString str QString::asprintf(pos()(%d,%d),pt.x(),pt.y());str QString::asprintf(\nposition()%.0f,%.0f,relaPt.x(),relaPt.y());str QString::asprintf(\nscenePosition()%.0f,%.0f,winPt.x(),winPt.y());str QString::asprintf(\nglobalPosition()%.0f,%.0f,globalPt.x(),globalPt.y());ui-label-setText(str);ui-label-adjustSize();ui-label-move(event-pos());//标签移动到鼠标光标处}QWidget::mousePressEvent(event);
}效果