概述
这个demo想要实现的效果为:
可以在界面上按鼠标左键来拖动窗口,双击来使其全屏,按着鼠标右键则使其指针变为一个自定义的图片,而使用滚轮则可以放大或者缩小编辑器中的内容。
由滚轮实现放大字体效果如下:
myMouseEvent::myMouseEvent(QWidget *parent, Qt::WFlags flags)
: QWidget(parent, flags)
{
ui.setupUi(this);
//set cursor
QCursor cursor;
cursor.setShape(Qt::OpenHandCursor);
setCursor(cursor);
}
//重写父类中虚函数,可以直接运行,不需要再次建立信号传递(与wxWidgets区分)
void myMouseEvent::mousePressEvent(QMouseEvent* event)
{
if(event->button() == Qt::LeftButton){
QCursor cursor;
cursor.setShape(Qt::ClosedHandCursor);
QApplication::setOverrideCursor(cursor);
//globalPos()是鼠标指针相对于屏幕左上角的坐标, pos()是窗体左上角相对于屏幕左上角的坐标 (获取未移动前的窗体位置)
offset = event->globalPos() - pos();
}
else if(event->button() == Qt::RightButton){
QCursor cursor(QPixmap("../image/itk.png"));//2个点表示上级目录
QApplication::setOverrideCursor(cursor);
}
}
void myMouseEvent::mouseReleaseEvent(QMouseEvent* event)
{
QApplication::restoreOverrideCursor();
}
void myMouseEvent::mouseDoubleClickEvent(QMouseEvent* event)//感觉没有体现鼠标被点击了2次
{
if(event->button() == Qt::LeftButton){
if(windowState() != Qt::WindowFullScreen)
setWindowState(Qt::WindowFullScreen);
else setWindowState(Qt::WindowNoState);
}
}
void myMouseEvent::mouseMoveEvent(QMouseEvent* event)
{
if(event->buttons() & Qt::LeftButton){//与运算
QPoint temp;
temp = event->globalPos() - offset;//
move(temp);//移动到具体坐标点
qDebug()<<"globalPos"<<event->globalPos()<<endl;
qDebug()<<"pos"<<pos()<<endl;
}
}
void myMouseEvent::wheelEvent(QWheelEvent * event)
{
if(event->delta() > 0){
ui.textEdit->zoomIn();//放大
}else{
ui.textEdit->zoomOut();//缩小
}
}
最后
以上就是曾经钥匙为你收集整理的QT 鼠标和滚轮事件学习的全部内容,希望文章能够帮你解决QT 鼠标和滚轮事件学习所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复