c++qt
1.显示画布
#include "code.h"
#include <QtWidgets/QApplication>
#include<iostream>
#include<vector>
#include <QWindow>
#include <QGraphicsView>
#include <QGraphicsScene>
using namespace std;
//1.空格 2.墙 3.入口 4.终点 5.双入口
/*
1.入口
2.出口
3.出入口
4.下一个任务迷宫
5.没有障碍
6 有障碍
7.玩家位置
*/
class Maze {
public:
int row, col;//迷宫的行数和列数
int layer;//所属层
Maze();
};
Maze::Maze() {
this->row = row;
this->col = col;
}
class MazeManager { //迷宫管理器
public:
int row;//玩家位置
int col;//玩家位置
MazeManager();
vector<Maze> mazes; //存储多个迷宫
};
MazeManager::MazeManager() {
}
class Canvas : public QGraphicsView {
public:
Canvas(QWidget* parent = nullptr);
private:
QGraphicsScene* scene;
};
class MainWindow : public QMainWindow
{
public:
MainWindow(QWidget* parent = nullptr);
void cnavasInit();
Canvas* canvas; // 指向 Canvas 的指针
};
void MainWindow::cnavasInit() {
canvas = new Canvas(this); // 创建 Canvas 对象
canvas->setGeometry(50, 50, 800, 800); // // 设置 Canvas 的绝对位置和大小
canvas->show();
}
Canvas::Canvas(QWidget* parent)
: QGraphicsView(parent), scene(new QGraphicsScene(this)) {
// 设置背景颜色为白色
setBackgroundBrush(Qt::white);
// 设置场景
setScene(scene);
setRenderHint(QPainter::Antialiasing); // 开启抗锯齿
setSceneRect(0, 0, 800*2, 800*2); // 设置场景大小
// 添加一些图形项到场景
scene->addRect(50, 50, 200, 100, QPen(Qt::blue), QBrush(Qt::cyan)); // 矩形
scene->addEllipse(300, 50, 100, 100, QPen(Qt::red), QBrush(Qt::yellow)); // 椭圆
scene->addLine(50, 200, 300, 200, QPen(Qt::green)); // 线条
}
MainWindow::MainWindow(QWidget* parent)
: QMainWindow(parent)
{
// 设置主窗口标题
setWindowTitle("迷宫");
this->resize(1600, 900);
}
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow* mainWindow = new MainWindow();
mainWindow->cnavasInit(); //显示画布
mainWindow->show();
return a.exec();
}
2.按钮函数
QString getStyle(int r,int g,int b) {
QString styleSheet = QString(
"QPushButton {"
"background-color: rgb(%1, %2, %3);"
"color: black;" // 设置字体颜色为白色
"font-weight: bold;" // 设置字体加粗
"border: 1px solid black;" // 设置黑色边框,宽度为2像素
"border-radius: 8px;" // 设置圆角边框,半径为8像素
"}"
"QPushButton:hover {"
"background-color: rgb(128, 0, 128);" // 鼠标悬停时为紫色
"}"
"QPushButton:pressed {"
"background-color: rgb(255, 0, 0);" // 鼠标点击时为红色
"}"
).arg(r).arg(g).arg(b);
return styleSheet;
}
QPushButton* getButton(QWidget* parent, QString message,int r,int g,int b,int x,int y) {
QPushButton* button = new QPushButton(message, parent);
button->setGeometry(x, y, 100, 40);
QFont font("微软雅黑", 12); // 字体名称和大小
button->setFont(font);
button->setStyleSheet(getStyle(r,g,b));
return button;
}