10 个解决方案
#1
在keyPressEvent里写,
头文件里添加声明
cpp文件里添加实现
类似这样,上面代码是判断键盘事件,鼠标拖动的话同理。
头文件里添加声明
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);
}
}
类似这样,上面代码是判断键盘事件,鼠标拖动的话同理。
#2
你的图片的移动,转化为QLabel的移动,QLabel 的鼠标移动,一个简单的问题,不要套纲套线的上图形学。
1 记录下鼠标当前位置。
2 鼠标移动后的位置,减去前面记录的位置得到移动的偏移量。
3 QLabel的位置加上为步骤2 中的偏移量。
1 记录下鼠标当前位置。
2 鼠标移动后的位置,减去前面记录的位置得到移动的偏移量。
3 QLabel的位置加上为步骤2 中的偏移量。
#3
////////////////////////////////////
3q 但是还是不会
我想让图片自己移动
我的代码就是最原始的那种,是这样的:
MainWindow.h:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
___________________________________________
main.cpp:
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
_____________________________
MainWindow.cpp:
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
____________________________
#4
谢谢 但是能帮忙写下具体的代码吗 ?我悟性确实差!谢谢
#5
自己重写鼠标的press、move、release事件
#6
能具体说明一下吗,根据我的代码修改一下
#7
建议楼主看下Qt的动画,或者如楼上们 所说,重写鼠标事件
#8
这样都不会。。。
你还是别写了,先看书吧
你还是别写了,先看书吧
#9
用QPainterPath实现,qt帮助文档中有例子
#10
cao 说的你呀的多牛似的 你牛笔倒是把代码给人家写出来啊 还先看书 看你大爷 不会别瞎在这比比
#1
在keyPressEvent里写,
头文件里添加声明
cpp文件里添加实现
类似这样,上面代码是判断键盘事件,鼠标拖动的话同理。
头文件里添加声明
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);
}
}
类似这样,上面代码是判断键盘事件,鼠标拖动的话同理。
#2
你的图片的移动,转化为QLabel的移动,QLabel 的鼠标移动,一个简单的问题,不要套纲套线的上图形学。
1 记录下鼠标当前位置。
2 鼠标移动后的位置,减去前面记录的位置得到移动的偏移量。
3 QLabel的位置加上为步骤2 中的偏移量。
1 记录下鼠标当前位置。
2 鼠标移动后的位置,减去前面记录的位置得到移动的偏移量。
3 QLabel的位置加上为步骤2 中的偏移量。
#3
////////////////////////////////////
3q 但是还是不会
我想让图片自己移动
我的代码就是最原始的那种,是这样的:
MainWindow.h:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
___________________________________________
main.cpp:
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
_____________________________
MainWindow.cpp:
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
____________________________
#4
谢谢 但是能帮忙写下具体的代码吗 ?我悟性确实差!谢谢
#5
自己重写鼠标的press、move、release事件
#6
能具体说明一下吗,根据我的代码修改一下
#7
建议楼主看下Qt的动画,或者如楼上们 所说,重写鼠标事件
#8
这样都不会。。。
你还是别写了,先看书吧
你还是别写了,先看书吧
#9
用QPainterPath实现,qt帮助文档中有例子
#10
cao 说的你呀的多牛似的 你牛笔倒是把代码给人家写出来啊 还先看书 看你大爷 不会别瞎在这比比