当前位置: 代码迷 >> QT开发 >> 新人求教诸位老人qt实现图片的移动
  详细解决方案

新人求教诸位老人qt实现图片的移动

热度:21   发布时间:2016-04-25 03:20:37.0
新人求教各位老人qt实现图片的移动
本人比较愚笨请大神们多多谅解,我想做一个用qt来做一个图片移动的程序,我用label添加了图片,图片显示什么的都完成了,就是移动这块不会,qt的有关函数一点也不通,有人说用图形学做,我都不知道图形学做是什么,也求老人科普一下,控件移动,我也是完全不懂。老师们把程序大体写下来,稍加知道就好。求老师别说从头看什么的,这毕竟是个任务,我从头开始的话这个小任务要做不少时间呢。
------解决方案--------------------
在keyPressEvent里写,
头文件里添加声明
protected:
    void keyPressEvent(QKeyEvent *e);



cpp文件里添加实现
void Dialog::keyPressEvent(QKeyEvent *e)
{
    int x = ui->label->geometry().x();
    int y = ui->label->geometry().y();
    int width = ui->label->geometry().width();
    int height = ui->label->geometry().height();
    if(e->key()==Qt::Key_Up)
    {
        ui->label->setGeometry(x,y-1,width,height);
    } else if(e->key() == Qt::Key_Down)
    {
         ui->label->setGeometry(x,y+1,width,height);
    }else if(e->key() == Qt::Key_Left)
    {
         ui->label->setGeometry(x-1,y,width,height);
    }else if(e->key() == Qt::Key_Right)
    {
         ui->label->setGeometry(x+1,y,width,height);
    }

}


类似这样,上面代码是判断键盘事件,鼠标拖动的话同理。
------解决方案--------------------
你的图片的移动,转化为QLabel的移动,QLabel 的鼠标移动,一个简单的问题,不要套纲套线的上图形学。
1 记录下鼠标当前位置。
2 鼠标移动后的位置,减去前面记录的位置得到移动的偏移量。
3 QLabel的位置加上为步骤2 中的偏移量。
------解决方案--------------------
建议楼主看下Qt的动画,或者如楼上们 所说,重写鼠标事件
  相关解决方案