当前位置: 首页 > article >正文

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;
}


http://www.kler.cn/a/373840.html

相关文章:

  • MySQL学习笔记2【函数/约束/多表查询】
  • 通过gradle发布aar或jar携带sources-jar到maven nexus
  • windows从0开始配置llamafactory微调chatglm3-6b
  • uniapp 微信小程序内嵌h5实时通信
  • 30天开发操作系统 第 12 天 -- 定时器 v1.0
  • Linux(上):基本知识篇
  • SLAM:未来智能科技的核心——探索多传感器融合的无限可能
  • ​IOT NTN 与 NR NTN​
  • 我在命令行下剪辑视频
  • Linux CentOS7下创建SFTP服务器
  • 我在命令行下学日语
  • Chrome和Firefox如何保护用户的浏览数据
  • c++编解码封装
  • 【YOLO 系列】基于YOLO的行人口罩检测系统【python源码+Pyqt5界面+数据集+训练代码】
  • Python中的`update`方法详解及示例
  • nginx配置https及url重写
  • OpenCV与AI深度学习 | 基于OpenCV和深度学习预测年龄和性别
  • python opencv1
  • 如何通过指标驱动研发体系建设
  • shell基础-awk
  • 特斯联巨亏数十亿:毛利率剧烈波动下滑,高管动荡引发关注
  • 一文详解高光谱数据python处理包spectral(SPy)
  • Linux_03 Linux 常用命令——find、ls
  • MyBatis常见面试题总结
  • wps Excel下拉框生成填充及下拉框内容颜色格式修改
  • 云安全联盟倡导对关键基础设施实施零信任