用qt写一个可随鼠标拖拽移动的图标程序
时间: 2023-05-21 21:07:29 浏览: 295
可以使用QWidget类来创建可随鼠标拖拽移动的图标程序。以下是一个基本的Qt程序示例,展示如何实现此功能:
```
#include <QApplication>
#include <QWidget>
#include <QHBoxLayout>
#include <QLabel>
#include <QMouseEvent>
class DraggableWidget : public QWidget
{
public:
DraggableWidget(QWidget *parent = 0)
: QWidget(parent)
{
QHBoxLayout *layout = new QHBoxLayout();
QLabel *label = new QLabel("Drag Me", this);
layout->addWidget(label);
setLayout(layout);
}
protected:
void mousePressEvent(QMouseEvent *event)
{
if (event->button() == Qt::LeftButton) {
m_dragPosition = event->globalPos() - frameGeometry().topLeft();
event->accept();
}
}
void mouseMoveEvent(QMouseEvent *event)
{
if (event->buttons() & Qt::LeftButton) {
move(event->globalPos() - m_dragPosition);
event->accept();
}
}
private:
QPoint m_dragPosition;
};
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
DraggableWidget w;
w.show();
return a.exec();
}
```
该程序创建了一个自定义的QWidget类,该类可以用来创建可拖动的图标。在该类的构造函数中,我们添加了一个水平布局和一个标签,用于显示“Drag Me”文本。在该类中,我们重新实现了mousePressEvent()和mouseMoveEvent()函数来捕获鼠标按下和移动事件,并使图标随着鼠标移动而移动。
注意:该程序未考虑边界情况,因此图标可以从窗口移出。如果需要在边界处停止,请自行添加代码。
阅读全文