酷代码 AI
菜单

用c++写一个图形界面程序,有七个球,可以点击球然后按上下左右键移动球,七个球的颜色分别为红、橙、黄、绿、青、蓝、紫。

以下是一个使用Qt框架实现的C++图形界面程序,该程序有七个不同颜色(红、橙、黄、绿、青、蓝、紫)的球,你可以点击球并使用上下左右键移动它。 步骤: 1. 创建Qt项目:首先,确保你已经安装了Qt开发环境。创建一个新的Qt Widgets Application项目。 2. 编写代码: `mainwindow.h` ```cpp #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include <QPainter> #include <QMouseEvent> #include <QKeyEvent> #include <QVector> QT_BEGIN_NAMESPACE namespace Ui { class MainWindow; } QT_END_NAMESPACE class MainWindow : public QMainWindow { Q_OBJECT public: MainWindow(QWidget *parent = nullptr); ~MainWindow(); protected: void paintEvent(QPaintEvent *event) override; void mousePressEvent(QMouseEvent *event) override; void keyPressEvent(QKeyEvent *event) override; private: Ui::MainWindow *ui; QVector<QPoint> ballPositions; QVector<QColor> ballColors; int selectedBallIndex = -1; const int ballRadius = 20; }; #endif // MAINWINDOW_H ``` `mainwindow.cpp` ```cpp #include "mainwindow.h" #include "ui_mainwindow.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui->setupUi(this); // 初始化七个球的位置和颜色 for (int i = 0; i < 7; ++i) { ballPositions.append(QPoint(50 + i * 60, 100)); } ballColors = {Qt::red, Qt::darkYellow, Qt::yellow, Qt::green, Qt::cyan, Qt::blue, Qt::magenta}; } MainWindow::~MainWindow() { delete ui; } void MainWindow::paintEvent(QPaintEvent *event) { Q_UNUSED(event); QPainter painter(this); for (int i = 0; i < ballPositions.size(); ++i) { painter.setBrush(ballColors[i]); painter.drawEllipse(ballPositions[i], ballRadius, ballRadius); } } void MainWindow::mousePressEvent(QMouseEvent *event) { for (int i = 0; i < ballPositions.size(); ++i) { QPoint center = ballPositions[i]; if ((event->pos() - center).manhattanLength() <= ballRadius) { selectedBallIndex = i; return; } } selectedBallIndex = -1; } void MainWindow::keyPressEvent(QKeyEvent *event) { if (selectedBallIndex != -1) { QPoint &pos = ballPositions[selectedBallIndex]; switch (event->key()) { case Qt::Key_Up: pos.setY(pos.y() - 10); break; case Qt::Key_Down: pos.setY(pos.y() + 10); break; case Qt::Key_Left: pos.setX(pos.x() - 10); break; case Qt::Key_Right: pos.setX(pos.x() + 10); break; default: break; } update(); } } ``` `main.cpp` ```cpp #include "mainwindow.h" #include <QApplication> int main(int argc, char *argv[]) { QApplication a(argc, argv); MainWindow w; w.show(); return a.exec(); } ``` 代码解释: 1. `MainWindow`类:继承自`QMainWindow`,用于创建主窗口。 2. `paintEvent`:重写该事件处理函数,使用`QPainter`绘制七个不同颜色的球。 3. `mousePressEvent`:重写该事件处理函数,检测鼠标点击位置是否在某个球内,如果是,则标记该球为选中状态。 4. `keyPressEvent`:重写该事件处理函数,当有球被选中时,根据按下的上下左右键移动球的位置,并调用`update()`函数触发重绘。 编译和运行: 将上述代码保存到对应的文件中,使用Qt Creator打开项目,编译并运行程序。你将看到七个不同颜色的球,点击球后可以使用上下左右键移动它。 [2026-01-23 08:16:18 | AI问答 | 1091点数解答]

服务商
相关提问
发财导航,免费问AI
实用工具查看更多