用Qt编写一个程序,通过键盘的上下左右方向键控制窗口上图标的移动。若按下Home键,则图标回到界面的左上角顶点的位置;若按下End键,则图标到达界面右下角顶点的位置。
时间: 2024-05-02 19:23:23 浏览: 124
在linux下用Qt编写的一个程序
以下是一个简单的示例程序,演示了如何使用 Qt 编写一个窗口,通过键盘方向键控制图标的移动。
```cpp
#include <QApplication>
#include <QLabel>
#include <QKeyEvent>
class MyLabel : public QLabel {
public:
MyLabel(QWidget *parent = nullptr) : QLabel(parent) {
setPixmap(QPixmap(":/icon.png"));
}
protected:
void keyPressEvent(QKeyEvent *event) override {
int x = this->x();
int y = this->y();
switch (event->key()) {
case Qt::Key_Left:
x -= 10;
break;
case Qt::Key_Right:
x += 10;
break;
case Qt::Key_Up:
y -= 10;
break;
case Qt::Key_Down:
y += 10;
break;
case Qt::Key_Home:
x = 0;
y = 0;
break;
case Qt::Key_End:
x = parentWidget()->width() - width();
y = parentWidget()->height() - height();
break;
}
this->move(x, y);
}
};
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
QWidget window;
window.resize(800, 600);
MyLabel label(&window);
label.move(0, 0);
label.show();
window.show();
return app.exec();
}
```
在这个程序中,我们创建了一个 `MyLabel` 类,继承自 `QLabel`,并重载了 `keyPressEvent` 函数,用来处理键盘事件。在键盘按下时,我们根据按下的按键来计算出图标应该移动到的新位置,并通过 `move` 函数将图标移动到新位置。
在 `main` 函数中,我们创建了一个窗口和一个 `MyLabel` 对象,并将其添加到窗口中。最后,我们显示了窗口并启动了应用程序的主循环。
阅读全文