Qt:依据ChatGpt生成Qt可选择扇形按钮

目录

  • 引言
  • 1、生成过程
    • 1.1 饼图
    • 2.2 扇形图
    • 3.3 可选择扇形按钮
    • 1.4 新的扇形画法*GraphicItem
  • 2、训练过程
  • 3、错误原因
  • 4、涉及知识点

引言

  因为项目需要绘制一个中间为圆心,包含数个扇形的可选择按钮。正好ChatGpt使用起来比较成熟,因此使用询问的方式得到两部分代码。最终修改后的效果如动图:
在这里插入图片描述

1、生成过程

1.1 饼图

目前ChatGpt给出的代码还有缺陷,一次运行不起来。需要人为添加头文件或处理逻辑关系,不过已经很强大了。
生成的效果为:
在这里插入图片描述

//饼图案例
#include <QApplication>
#include <QWidget>
#include <QPushButton>
#include <QPainter>
#include <QDebug>
#include <QTableWidget>
#include <QHeaderView>
#include <QMessageBox>
#include <QMouseEvent>class SectorChartButton : public QPushButton {
public:SectorChartButton(QTableWidget* tableWidget, QWidget* parent = nullptr) : QPushButton(parent), m_tableWidget(tableWidget) {setFixedSize(200, 200);setStyleSheet("border: none");}protected:void paintEvent(QPaintEvent* event) override {Q_UNUSED(event)QPainter painter(this);painter.setRenderHint(QPainter::Antialiasing);// Draw background fan shapepainter.setPen(Qt::NoPen);painter.setBrush(QColor(200, 200, 200));painter.drawEllipse(rect());// Draw concentric circlepainter.setPen(QPen(QColor(0, 0, 0), 3));painter.setBrush(QColor(255, 255, 255));int x = width() / 4;int y = height() / 4;int w = width() / 2;int h = height() / 2;painter.drawEllipse(x, y, w, h);// Draw fan shapespainter.setPen(QPen(QColor(0, 0, 0), 3));painter.setBrush(QColor(255, 0, 0));painter.drawPie(rect(), 30 * 16, 120 * 16);painter.setBrush(QColor(0, 255, 0));painter.drawPie(rect(), 150 * 16, 120 * 16);painter.setBrush(QColor(0, 0, 255));painter.drawPie(rect(), 270 * 16, 120 * 16);// Draw lines from center to edge of each fan shapepainter.drawLine(width() / 2, height() / 2, width() / 2 + (width() - 20) / 4 * qCos(qDegreesToRadians(75)), height() / 2 - (height() - 20) / 4 * qSin(qDegreesToRadians(75)));painter.drawLine(width() / 2, height() / 2, width() / 2 - (width() - 20) / 4 * qSin(qDegreesToRadians(60)), height() / 2 + (height() - 20) / 4 * qCos(qDegreesToRadians(60)));painter.drawLine(width() / 2, height() / 2, width() / 2 - (width() - 20) / 4 * qCos(qDegreesToRadians(75)), height() / 2 - (height() - 20) / 4 * qSin(qDegreesToRadians(75)));}void mousePressEvent(QMouseEvent* event) override {QRectF rect = this->rect();QPointF center = rect.center();QPointF pos = event->localPos();qreal angle = qRadiansToDegrees(qAtan2(pos.y() - center.y(), pos.x() - center.x())) + 360;if (angle >= 30 && angle < 150) {m_tableWidget->insertRow(0);QTableWidgetItem* item1 = new QTableWidgetItem("Red sector");QTableWidgetItem* item2 = new QTableWidgetItem("Column 1 data");m_tableWidget->setItem(0, 0, item1);m_tableWidget->setItem(0, 1, item2);QMessageBox::information(this, "Sector Chart Button", "You clicked on the red sector!");}else if (angle >= 150 && angle < 270) {m_tableWidget->insertRow(0);QTableWidgetItem* item1 = new QTableWidgetItem("Green sector");QTableWidgetItem* item2 = new QTableWidgetItem("Column 2 data");m_tableWidget->setItem(0, 1, item1);m_tableWidget->setItem(0, 2, item2);QMessageBox::information(this, "Sector Chart Button", "You clicked on the green sector!");}else if (angle >= 270 || angle < 30) {m_tableWidget->insertRow(0);QTableWidgetItem* item1 = new QTableWidgetItem("Blue sector");QTableWidgetItem* item2 = new QTableWidgetItem("Column 3 data");m_tableWidget->setItem(0, 2, item1);m_tableWidget->setItem(0, 3, item2);QMessageBox::information(this, "Sector Chart Button", "You clicked on the blue sector!");}}private:QTableWidget* m_tableWidget;
};int main(int argc, char* argv[]) {QApplication app(argc, argv);QWidget widget;widget.setFixedSize(600, 400);// Create table widgetQTableWidget tableWidget(&widget);tableWidget.setColumnCount(4);tableWidget.setHorizontalHeaderLabels({ "Column 1", "Column 2", "Column 3", "Column 4" });tableWidget.verticalHeader()->setVisible(false);tableWidget.setGeometry(250, 50, 300, 300);// Create sector chart buttonSectorChartButton* button = new SectorChartButton(&tableWidget, &widget);button->move(50, 100);button->show();widget.show();return app.exec();
}

2.2 扇形图

ChatGpt实现效果如下,支持鼠标停留变颜色以及单击保留选择项。
在这里插入图片描述
生成代码:

//扇形图案例#include <QApplication>
#include <QWidget>
#include <QPainter>
#include <QMouseEvent>
#include <QDebug>class ColorWheel : public QWidget
{
public:ColorWheel(QWidget *parent = nullptr) : QWidget(parent){setFixedSize(200, 200);setMouseTracking(true);}protected:void paintEvent(QPaintEvent*) override{QPainter painter(this);painter.setRenderHint(QPainter::Antialiasing);QRectF rect = QRectF(10, 10, 180, 180);qreal startAngle[] = {0, 120, 240};qreal spanAngle[] = {120, 120, 120};QColor colors[] = {Qt::red, Qt::green, Qt::blue};for (int i = 0; i < 3; i++) {if (m_hoveredSector == i || m_selectedSector == i) {painter.setPen(colors[i]);painter.setBrush(colors[i]);} else {painter.setPen(colors[i].darker());painter.setBrush(Qt::NoBrush);}painter.drawPie(rect, startAngle[i] * 16, spanAngle[i] * 16);}}void mouseMoveEvent(QMouseEvent* event) override{int x = event->x();int y = event->y();int sector = getSector(x, y);if (sector != m_hoveredSector) {m_hoveredSector = sector;update();if (sector >= 0 && sector < 3) {QColor color;switch (sector) {case 0: color = Qt::red; break;case 1: color = Qt::green; break;case 2: color = Qt::blue; break;}qDebug() << "Hovering over sector" << sector << ", color is" << color.name();}}}void leaveEvent(QEvent*) override{m_hoveredSector = -1;update();}void mousePressEvent(QMouseEvent* event) override{int x = event->x();int y = event->y();int sector = getSector(x, y);if (sector != m_selectedSector) {m_selectedSector = sector;update();if (sector >= 0 && sector < 3) {QColor color;switch (sector) {case 0: color = Qt::red; break;case 1: color = Qt::green; break;case 2: color = Qt::blue; break;}qDebug() << "Selected sector" << sector << ", color is" << color.name();}}}private:int getSector(int x, int y){int dx = x - 100;int dy = y - 100;int r = qSqrt(dx*dx + dy*dy);if (r < 90) {qreal angle = qAtan2(dy, dx) * 180 / M_PI;if (angle < 0) angle += 360;int sector = static_cast<int>(angle / 120);return sector;}return -1;}int m_hoveredSector = -1;int m_selectedSector = -1;
};int main(int argc, char *argv[])
{QApplication a(argc, argv);ColorWheel w;w.show();return a.exec();
}

3.3 可选择扇形按钮

在这里插入图片描述
根据以上代码修正后得到该按钮,代码如下:

#include <QApplication>
#include <QWidget>
#include <QPainter>
#include <QMouseEvent>
#include <QDebug>class ColorWheel : public QWidget
{
public:ColorWheel(QWidget* parent = nullptr) : QWidget(parent){setFixedSize(200, 200);setMouseTracking(true);}protected:void paintEvent(QPaintEvent*) override{QPainter painter(this);painter.setRenderHint(QPainter::Antialiasing);QRectF rect = QRectF(10, 10, 180, 180);qreal startAngle[] = { 90, 210, 330 };qreal spanAngle[] = { 120, 120, 120 };QColor colors[] = { Qt::red, Qt::green, Qt::blue };int x = width() / 4;int y = height() / 4;int w = width() / 2;int h = height() / 2;QRectF innerRect = QRectF(x, y, w, h);if (m_init){//默认绘制第一个图形painter.setPen(colors[0]);painter.setBrush(Qt::NoBrush);painter.drawPie(rect, startAngle[0] * 16, spanAngle[0] * 16);// Draw concentric circlepainter.setPen(Qt::NoPen);painter.setBrush(QColor(255, 255, 255));painter.drawEllipse(x, y, w, h);painter.setPen(colors[0]);painter.drawArc(innerRect, startAngle[0] * 16, spanAngle[0] * 16);}for (int i = 0; i < 3; i++) {if (m_hoveredSector == i || m_selectedSector == i) {painter.setPen(colors[i]);painter.setBrush(Qt::NoBrush);painter.drawPie(rect, startAngle[i] * 16, spanAngle[i] * 16);// Draw concentric circlepainter.setPen(Qt::NoPen);painter.setBrush(QColor(255, 255, 255));painter.drawEllipse(x, y, w, h);painter.setPen(colors[i]);painter.drawArc(innerRect, startAngle[i] * 16, spanAngle[i] * 16);m_lastSelect = m_selectedSector;}else {painter.setPen(colors[i].darker());painter.setBrush(Qt::NoBrush);}//painter.drawPie(rect, startAngle[i] * 16, spanAngle[i] * 16);}if (!m_init && (m_selectedSector == -1)){//保留之前的选择painter.setPen(colors[m_lastSelect]);painter.setBrush(Qt::NoBrush);painter.drawPie(rect, startAngle[m_lastSelect] * 16, spanAngle[m_lastSelect] * 16);// Draw concentric circlepainter.setPen(Qt::NoPen);painter.setBrush(QColor(255, 255, 255));painter.drawEllipse(x, y, w, h);painter.setPen(colors[m_lastSelect]);painter.drawArc(innerRect, startAngle[m_lastSelect] * 16, spanAngle[m_lastSelect] * 16);}m_init = false;}//void mouseMoveEvent(QMouseEvent* event) override//{//	int x = event->x();//	int y = event->y();//	int sector = getSector(x, y);//	if (sector != m_hoveredSector) {//		m_hoveredSector = sector;//		update();//		if (sector >= 0 && sector < 3) {//			QColor color;//			switch (sector) {//			case 0: color = Qt::red; break;//			case 1: color = Qt::green; break;//			case 2: color = Qt::blue; break;//			}//			qDebug() << "Hovering over sector" << sector << ", color is" << color.name();//		}//	}//}//void leaveEvent(QEvent*) override//{//	m_hoveredSector = -1;//	update();//}void mousePressEvent(QMouseEvent* event) override{int x = event->x();int y = event->y();int sector = getSector(x, y);if (sector != m_selectedSector) {m_selectedSector = sector;update();if (sector >= 0 && sector < 3) {QColor color;switch (sector) {case 0: color = Qt::red; break;case 1: color = Qt::green; break;case 2: color = Qt::blue; break;}qDebug() << "Selected sector" << sector << ", color is" << color.name();}}}private:int getSector(int x, int y){int dx = x - 100;int dy = y - 100;int r = qSqrt(dx * dx + dy * dy);if (r < 90) {qreal angle = qAtan2(-dy, dx) * 180 / M_PI;if (angle < 90) angle += 360;int sector = static_cast<int>((angle - 90) / 120);return sector;}return -1;}int m_hoveredSector = -1;int m_selectedSector = -1;bool m_init = true;int m_lastSelect = -1;
};int main(int argc, char* argv[])
{QApplication a(argc, argv);ColorWheel w;w.show();return a.exec();
}

1.4 新的扇形画法*GraphicItem

可以通过QPainterPath和QRegion的方式来绘制。QPatinterPath含有substrate方法,然后通过QPainter绘制。同时QRegion也有对应的直接使用QPainter绘制的方法。setClipRegion可以设置当前可绘画的区域。

void Widget::paintEvent(QPaintEvent *event)
{Q_UNUSED(event);QPainter painter(this);QPainterPath path; // 定义QPainterPath对象int x = width() / 2;  // 获取widget的宽度int y = height() / 2; // 获取widget的高度int radius = qMin(x, y); // 确定半径QRectF rect(x - radius, y - radius, radius * 2, radius * 2); // 定义外接矩形path.moveTo(x, y); // 将起点移动到圆心path.arcTo(rect, 90, -120); // 添加90到210度的椭圆弧线,注意这里的角度单位是以1/16度来表示的path.lineTo(x, y); // 将路径连接回中心点int smallRadius = radius / 2; // 定义小扇形的半径QRectF smallRect(x - smallRadius, y - smallRadius, smallRadius * 2, smallRadius * 2); // 定义小扇形的外接矩形QPainterPath smallPath; // 定义小扇形的路径smallPath.moveTo(x, y); // 将起点移动到圆心smallPath.arcTo(smallRect, 90, -120); // 添加90到210度的椭圆弧线,注意这里的角度单位是以1/16度来表示的QRegion bigRegion(path.toFillPolygon().toPolygon()); // 定义大扇形的QRegionQRegion smallRegion(smallPath.toFillPolygon().toPolygon()); // 定义小扇形的QRegionbigRegion = bigRegion.subtracted(smallRegion); // 大扇形减去小扇形QBrush brush(Qt::NoBrush); // 创建空画刷painter.setBrush(brush); // 设置画刷为空,即不填充图形QPen pen(Qt::black); // 定义画笔,颜色为黑色pen.setWidth(2); // 设置画笔宽度painter.setPen(pen); // 设置画笔painter.setClipRegion(bigRegion); // 设置绘制区域painter.drawPath(path); // 绘制大扇形的路径轮廓painter.setClipping(false); // 取消原来的绘制区域painter.setClipRegion(smallRegion); // 设置绘制区域为小扇形的QRegionpainter.drawPath(smallPath); // 绘制小扇形的路径轮廓
}

2、训练过程

  这里给出了训练过程,目前中文语料比较少,因此得到的有效信息不充足。所以每次都是中文翻译为英语后去问答,出乎意料的是代码基本修改下都能跑起来。
在这里插入图片描述

3、错误原因

  如果指出ChatGPT的错误,它会给出部分错误原因,虽然有时候和给出的错误原因不太符合代码,但在后续自己Debug的过程中能发现很多有用的信息。如在计算角度使用QAtan2 时应取-dy。

In this modified code, a new m_selectedSector variable has been added to track which sector is currently selected by the user (i.e. the one the user clicked on). The paintEvent() method has also been updated to fill in the color of the selected sector even when the mouse is not moving. This is done by checking whether m_selectedSector is equal to the current sector being painted (i), and if so, filling in the sector with its color.In addition, a new mousePressEvent() method has been added to handle the case where the user clicks on a sector. When this happens, m_selectedSector is updated, and the widget is repainted with the selected sector filled in with its color. The code also outputs the color of the selected sector to the console using qDebug().Finally, the leaveEvent() method has been updated to reset both m_hoveredSector and m_selectedSector to -1 when the mouse leaves the widget, which causes all of the sectors to be drawn with no fill color.

在此修改后的代码中,添加了一个新的m_selectedSector变量来跟踪用户当前选择的扇区(即用户单击的扇区)。paintEvent() 方法也已更新,即使在鼠标不移动时也能填充所选扇区的颜色。这是通过检查m_selectedSector是否等于当前正在绘制的扇区 (i) 来完成的,如果是,则用其颜色填充扇区。 此外,还添加了一个新的 mousePressEvent() 方法来处理用户单击扇区的情况。发生这种情况时,m_selectedSector将更新,并且小部件将重新绘制,并用其颜色填充所选扇区。该代码还使用 qDebug() 将所选扇区的颜色输出到控制台。 最后,当鼠标离开小部件时,leaveEvent() 方法已更新为将 m_hoveredSector 和 m_selectedSector 重置为 -1,这会导致绘制所有扇区时没有填充颜色。

The error was caused by a mistake in the calculation of the angle variable. Instead of using +dy, it should be -dy, since the y-axis is inverted in the coordinate system used by QPainter (i.e. positive y is downwards). This causes the angle to be calculated correctly, which in turn allows the correct sector to be determined based on the angle.I hope this corrected method works better for you. Please let me know if you have any further questions or issues.

该错误是由角度变量计算错误引起的。它不应该使用 +dy,而应该是 -dy,因为 y 轴在 QPainter 使用的坐标系中是反转的(即正 y 向下)。这会导致正确计算角度,从而允许根据角度确定正确的扇区。 我希望这种更正后的方法对您更有效。如果您有任何其他问题或问题,请告诉我。

The issue with the previous implementation was that it incorrectly assumed that sector 1 starts at 120 degrees and sector 2 starts at 240 degrees, which causes the two sectors to be calculated inversely. The corrected implementation addresses this issue by correctly identifying sector 1 as the sector starting at 30 degrees, and sector 2 as the sector starting at 150 degrees.I apologize for any confusion caused by my earlier responses, and I hope this updated implementation resolves the issue. Please let me know if you have any further questions or concerns.

先前实现的问题在于,它错误地假定扇区 1 从 120 度开始,扇区 2 从 240 度开始,这会导致两个扇区的计算相反。更正后的实现通过正确标识扇区 1 作为从 30 度开始的扇区,将扇区 2 标识为从 150 度开始的扇区来解决此问题。 对于我之前的回复造成的任何混乱,我深表歉意,我希望这个更新的实现可以解决这个问题。如果您有任何其他问题或疑虑,请告诉我。

4、涉及知识点

------待更新-------------------------------------------------

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/10648.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

五分钟零基础开发chatgpt+Midjourney工具赢得被动收入

首先感谢laf提供免费使用Midjourney API接口和云函数&#xff0c;需要详细了解的可以访问他们的官网论坛。 感谢论坛前面几位的分享&#xff0c;我做了参考。都有参考就不列啦哈&#xff01;&#xff01;&#xff01; 直接开始&#xff1a; 第一步 复制MJ-SEND云函数到laf云…

chatgpt赋能python:Python短信通知:简单高效的实现方式

Python 短信通知&#xff1a;简单高效的实现方式 现在&#xff0c;随着移动互联网的飞速发展&#xff0c;越来越多的企业和个人开始利用短信来进行通知、推广等操作。Python 作为一门广泛应用于 Web 和数据领域的编程语言&#xff0c;也可以通过一些简单的 API 接口&#xff0…

chatgpt赋能python:Python如何接收短信?——详细介绍,并提供实用代码

Python如何接收短信&#xff1f;——详细介绍&#xff0c;并提供实用代码 短信已经成为了我们日常生活中不可或缺的一部分。在很多行业中&#xff0c;短信通知也被广泛应用&#xff0c;如金融、教育、医疗等等。那么&#xff0c;如何在Python中实现接收短信呢&#xff1f;在本…

人工智能之读懂CNN卷积神经网络

通过往期文章的分享,我们了解了神经网络的结构,一般分为输入层,隐藏层,输出层 TensorFlow神经网络 那什么是卷积神经网络那,这就要我们追溯一下人类识别图像的原理 人类的视觉原理如下:从原始信号摄入开始(瞳孔摄入像素 Pixels),接着做初步处理(大脑皮层某些细胞发现…

人工智能CNN 卷积神经网络结构(tensorflow代码实现)

MNIST是一个简单的视觉计算数据集,它是像下面这样手写的数字图片: MNIST 通过上期的分享,我们了解了手写数字识别的基本原理以及CNN卷积神经网络的基本原理,本期我们结合MNIST数据集,来用代码来实现CNN。(手写数字识别是TensorFlow人工智能最基础的案例,这个跟学习编程…

基于深度学习的图像分类:使用卷积神经网络实现猫狗分类器

摘要&#xff1a; 深度学习在计算机视觉领域中具有广泛的应用。本文将介绍如何使用卷积神经网络&#xff08;CNN&#xff09;实现一个猫狗分类器。我们将使用Python和TensorFlow框架搭建一个简单的卷积神经网络模型&#xff0c;并利用猫狗图像数据集进行训练和测试。通过本文&a…

6种卷积神经网络压缩方法

点击上方“AI遇见机器学习”&#xff0c;选择“星标”公众号 第一时间获取价值内容 来源&#xff1a;机器学习杂货店 本文约5200字&#xff0c;建议阅读10分钟 我们知道&#xff0c;在一定程度上&#xff0c;网络越深&#xff0c;参数越多&#xff0c;模型越复杂&#xff0c;其…

超简单的卷积和加法融合,伪代码版

原创文章请勿随意转载&#xff0c;如有需要&#xff0c;请于作者联系。 前几天写了一个卷积神经网络&#xff08;CNN&#xff09;中&#xff0c;卷积和加法融合的文章。有同学问&#xff0c;希望写一个带代码版本的&#xff0c;方便更好的理解。 我的第一反应是&#xff0c;代…

【深度学习NLP】基于卷积神经网络(CNN)实现中文文本情感分析(分类)附代码以及数据集链接

【注】&#xff1a;本文所述的实验的完整实现代码包括数据集的仓库链接会在文末给出(建议读者自行配置GPU来加速TensorFlow的相关模型&#xff0c;运行起来会快非常多) 目录 一、研究的背景和目的 二、文本数据集描述 1、数据集来源以及使用目的 2、数据规模、以及如何划分…

Stability AI 创始人:大模型不应该只属于巨头

作者 | 凌梓郡 编辑 | 靖宇 追溯 ChatGPT 引发的 AI 军备竞赛&#xff0c;可以回到去年 7 月&#xff0c;图像生成模型 Stability Diffusion 开源&#xff08;下文称 SD&#xff09;。这个在 Open AI 的绘画模型 DALL- E2 之后发布的模型&#xff0c;因其源代码开源&#xff0c…

谷歌员工担心自家 AI 敌不过 ChatGPT,高管回应:其过快发展可能损害公司

来源&#xff1a;AI前线 整理&#xff1a;冬梅、核子可乐 谷歌的 Jeff Dean 表示&#xff0c;一旦提供错误信息、大企业所面临的“声誉风险”要比小公司更严重&#xff0c;所以谷歌自然“比小型初创公司更加保守”。 自 11 月底以来&#xff0c;AI 聊天机器人 ChatGPT 正式向公…

我让Chat GPT准备了几份SAP 顾问英文面试自我介绍的模板,大家感受一下

有个朋友说有个面试要用英文来做自我介绍&#xff0c;我灵机一动&#xff0c;不如让Chat GPT准备了几份SAP 顾问英文面试自我介绍的模板&#xff0c;大家感受一下。我看下来感觉写的还是中规中矩&#xff0c;可以一用&#xff0c;。 模板1 Sure, I can help you with that! Her…

从语言模型到ChatGPT:大型语言模型的发展和应用

前言 为获取最佳阅读格式体验&#xff0c;建议访问个人博客&#xff1a;从语言模型到ChatGPT&#xff1a;大型语言模型的发展和应用 | JMX Blog 大型语言模型&#xff08;LLM&#xff09;是指能够处理大量自然语言数据的深度学习模型&#xff0c;它已经在自然语言处理、文本生…

OpenAI2022年亏损5.4亿美元;GPT-4等大模型容易导致侵权和社会偏见问题;学而思研发大模型MathGPT丨每日大事件...

‍ ‍数据智能产业创新服务媒体 ——聚焦数智 改变商业 企业动态 携程集团与亚马逊云科技成立联合创新实验室 日前&#xff0c;亚马逊云科技宣布与携程集团共同成立“联合创新实验室”&#xff0c;双方表示联合创新实验室将探索运用云计算、大数据、人工智能和机器学习等前沿技…

云原生周刊 | 使用 ChatGPT 协助解决 Prometheus 告警

开源项目推荐 kubernetes-chatgpt-bot 这是一个适用于 Slack 的 ChatGPT 机器人&#xff0c;只要有监控告警发送到 Slack 频道中&#xff0c;你就可以通过机器人向 ChatGPT 咨询如何解决这个告警&#xff0c;ChatGPT 将会给出一个较为详细的解决方案。 Copacetic Copacetic …

ChatGPT 引发AI服务器霸屏?AI服务器和普通服务器不同在哪?

​  近阶段&#xff0c;由于 ChatGPT 的横空问世&#xff0c;引发 AI 服务器再一次热潮来袭。随之而来的是&#xff0c;越来越多的企业和机构开始关注 AI 服务器和普通服务器之间的区别和对比。那么AI服务器到底是什么意思&#xff0c;它与普通服务器相比又有哪些差异呢? AI…

最全方案:升级成Plus会员,无法进入支付页面问题排查与解决

目录 问题复现 解决方案 更多内容 问题复现 当你帐号注册好了&#xff0c;想要升级成Plus的时候&#xff0c;却发现怎么也进不去支付页面&#xff1a;The payments page encountered an error. Please try again. If the problem continues, please email supportopenai.co…

利用催眠技巧绕开OpenAI的内容政策限制(仅供研究使用)

fork的仓库&#xff1a;https://github.com/JanYork/chatgpt-chinese-prompt-hack 声明&#xff1a;请仅作研究之用&#xff0c;不要违规使用&#xff01; 在hack成功后,通过屏蔽moderetions的api请求,可以绕过OpenAI对于输出内容的审查. 地址为:https://chat.openai.com/back…

WeTab新标签页:一款可以使用的chatGPT的浏览器主页插件

AI工具 如果你还没有体验过chatGPT&#xff0c;那么Wetab新标签页应该是最方便快捷的一个方式了。Wetab新标签页整合了chatGPT的功能&#xff0c;自带6个源可以切换&#xff0c;日常使用完全够了。可以为你解答包括但不限于历史、科学、文化、社会等方面的问题。 你只需要在扩…

ChatGPT插件与Web网络浏览功能大揭秘!

ChatGPT自身进化速度之快让人常常感觉到惊叹&#xff0c;还在感慨GPT4的强大之时&#xff0c;插件以及web浏览功能已经正式发布。以前&#xff0c;它只能使用它在 2021 年之前学到的信息&#xff0c;但现在&#xff0c;OpenAI 开放了插件功能&#xff0c;让 ChatGPT 可以探索整…