商会网站怎么做,wordpress图片浏览,东莞高风险地区名单最新,linux做网站要求学习目标#xff1a; 鼠标事件和键盘事件应用
前置环境
运行环境:qt creator 4.12
学习内容和效果演示#xff1a;
1.鼠标事件
根据鼠标的坐标位置#xff0c;做出对应的事件。 2.键盘事件
根据键盘的输入做出对应操作 详细主要代码
1.鼠标事件
#include main…学习目标 鼠标事件和键盘事件应用
前置环境
运行环境:qt creator 4.12
学习内容和效果演示
1.鼠标事件
根据鼠标的坐标位置做出对应的事件。 2.键盘事件
根据键盘的输入做出对应操作 详细主要代码
1.鼠标事件
#include mainwindow.hMainWindow::MainWindow(QWidget *parent): QMainWindow(parent)
{status new QLabel(鼠标在当前窗口坐标为);status-setFixedWidth(200);mouser new QLabel();mouser-setFixedWidth(200);statusBar()-addPermanentWidget(status);statusBar()-addPermanentWidget(mouser);this-setMouseTracking(true);resize(800,600);QImage *imagenew QImage();if(!image-load(C:/Users/jbj/Pictures/test/IMG_5037.JPG)){QMessageBox::information(this,失败,加载图片失败请重新检查);delete image;return;}QLabel* imglabe new QLabel(this);imglabe-setFixedSize(200,300);imglabe-setPixmap(QPixmap::fromImage(*image));
}MainWindow::~MainWindow()
{
}//鼠标移动时被调用
void MainWindow::mouseMoveEvent(QMouseEvent *e){mouser-setText((QString::number(e-x()),QString::number(e-y())));
}
//鼠标按下时被调用
void MainWindow::mousePressEvent(QMouseEvent *e){QString qstr(QString::number(e-x()),QString::number(e-y()));if(e-button()Qt::LeftButton){statusBar()-showMessage(用户已按下鼠标[左键]坐标qstr);}else if(e-button()Qt::RightButton){statusBar()-showMessage(用户已按下鼠标[右键]坐标qstr);}else if(e-button()Qt::MidButton){statusBar()-showMessage(用户已按下鼠标[中键]坐标qstr);}
}
//鼠标释放时被调用
void MainWindow::mouseReleaseEvent(QMouseEvent *e){QString qstr(QString::number(e-x()),QString::number(e-y()));statusBar()-showMessage(用户已释放鼠标坐标qstr,20);
}2.键盘事件
这里用到了绘画的知识点
画板 Qpalette 画家 Qpainter 钢笔QPen
理解画师在画板上做画,会用到钢笔当要展现时QPainter 负责将画板呈现。
#include widget.hWidget::Widget(QWidget *parent): QWidget(parent)
{setWindowTitle(键盘测试);setAutoFillBackground(true);//调色板QPalette pale this-palette();pale.setColor(QPalette::Window,Qt::white);setPalette(pale);setMinimumSize(800,600);setMaximumSize(800,600);widthsize().width();heightsize().height();pixnew QPixmap(width,height);//画板pix-fill(Qt::white);//实际物体mainnew QPixmap(28,28);main-fill(Qt::red);sx30;sy30;step30;Drawpinit();resize(800,600);
}
void Widget::Drawpinit(){pix-fill(Qt::white); // 清空QPainter* painter new QPainter;//画家QPen pen(Qt::DashDotLine);for (int istep; iwidth;istep) { //竖线painter-begin(pix); //选择画板painter-setPen(pen);painter-drawLine(QPoint(i,0),QPoint(i,height));painter-end();}for(int jstep;jheight;jjstep) // 横线{painter-begin(pix); //选择画板painter-setPen(pen);painter-drawLine(QPoint(0,j),QPoint(width,j));painter-end();}painter-begin(pix);painter-drawPixmap(QPoint(sx,sy),*main);painter-end();
}void Widget::paintEvent(QPaintEvent *){QPainter painter;painter.begin(this);//将之前在 Drawpinit() 函数中绘制的 QPixmap 对象绘制到 Widget 的左上角(坐标 (0, 0))。painter.drawPixmap(QPoint(0,0),*pix);painter.end();}
void Widget::keyPressEvent(QKeyEvent *evt){sxsx-sx%step;sysy-sy%step;//左右移动if(evt-key()Qt::Key_Left){sx(sx-step0)?sx:sx-step;}if(evt-key()Qt::Key_Right){sx(sxstepmain-width() width)?sx:sxstep;}if(evt-key()Qt::Key_Up){sy(sy-step0)?sy:sy-step;}if(evt-key()Qt::Key_Down){sy(systepmain-height() height)?sy:systep;}Drawpinit(); //重新设置参数update(); //触发绘画
}
Widget::~Widget()
{}总结
键盘事件 void keyPressEvent(QKeyEvent *evt) //按下时被调用
鼠标事件 //鼠标移动时被调用 void mouseMoveEvent(QMouseEvent *e); //鼠标按下时被调用 void mousePressEvent(QMouseEvent *e); //鼠标释放时被调用 void mouseReleaseEvent(QMouseEvent *e);
详细开发则需查阅官方开发文档。
最后附上源代码链接 对您有帮助的话帮忙点个star
26-mouserEvent · jbjnb/Qt demo - 码云 - 开源中国 (gitee.com)
27-QkeyEvent · jbjnb/Qt demo - 码云 - 开源中国 (gitee.com)