【qt】CAD下

news2024/11/18 20:01:24

目录

  • 一.前言
  • 二.缩放
    • 1.逻辑
    • 2.获取图形项选中的个数
    • 3.获取图形项并放大
    • 4.视图缩放
    • 5.完整代码
    • 6.效果展示
    • 7.缩小完整代码
  • 三.旋转
    • 1.图形项进行旋转
    • 2.视图的旋转
    • 3.完整代码
    • 4.效果展示
    • 5.右转代码
  • 四.恢复
    • 1.图形项复原
    • 2.视图复原
    • 3.完整代码
    • 4.效果展示
  • 五.前后置
    • 1.设置z轴的值
    • 2.后置代码
  • 六.组合和拆分
    • 1.逻辑
    • 2.创建图形项组
    • 3.图形项添加到组
    • 4.设置组的标识
    • 5.完整代码
    • 6.效果演示
    • 7.拆分代码
    • 8.效果展示
  • 七.删除
    • 1.删除代码
  • 八.双击编辑图形项颜色
    • 1.逻辑
    • 2.获取图形项的类型
    • 3.画刷模版函数
    • 4.图形项类型的判断
    • 5.画笔模版函数
    • 6.线条图形项
    • 7.文本图形项
    • 8.效果展示
  • 九.按键微移
    • 1.逻辑
    • 2.删除图形项
    • 3.旋转图形项
    • 4.放大,放小
    • 5.上下左右
    • 6.完整代码
  • 十.鼠标移动
    • 1.逻辑
    • 2.状态栏添加标签
    • 3.设置视图,场景坐标
    • 4.效果展示
  • 十一.鼠标单击
    • 1.逻辑
    • 2.通过场景坐标获取图形项
    • 3.场景坐标转换成图形项坐标
    • 4.设置图形项的信息
    • 5.完整代码
    • 6.效果展示![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/1acd1a3fe0fb42248b72bd9c4d9e48dd.png)
  • 十二.总结

一.前言

我的发,好久没有更新了,忙着考试去了,只剩下最后一科英语了,我赶紧来更新,哈哈,上节课我们的CAD项目还没有做完呢,OK,那就来咯!
我们上节课的成果:
在这里插入图片描述
上节课我们只实现了左边工具栏的功能,但是我们上面的工具栏的功能还没有进行实现,所以我们现在话不多说,直接开干!

二.缩放

1.逻辑

我们可以选择一个或者多个图形项
为了演示功能,我们如果选择的一个就对图形项进行缩放
如果选择的多个就对视图进行缩放

2.获取图形项选中的个数

void MainWindow::on_actionBig_triggered()
{
    int count=scene->selectedItems().count();
}

看不懂?不存在的,看我的
在这里插入图片描述
**selectedItems()返回的一个装图形项指针的列表,所以我们可以用count()**来统计个数,哈哈.

3.获取图形项并放大

if(count==1)
    {
        auto item=scene->selectedItems().at(0);
        item->setScale(item->scale()+0.1);
    }

如果选中的个数为1,那么是对图形项进行操作!
刚刚说了**selectedItems()返回的是一个列表,所以可以用at()**来获取到图形项.
**setScale()**见名知意,这个就是用来缩放图形项的,此处是在原有的基础上进行缩放.
在这里插入图片描述

4.视图缩放

其他的情况我们就用视图的缩放

else
    {
        ui->graphicsView->scale(1.1,1.1);
    }

可以直接设置,不用像图形项一样获取原来的,因为看下图的翻译
在这里插入图片描述

5.完整代码

void MainWindow::on_actionBig_triggered()
{
    int count=scene->selectedItems().count();
    if(count==1)
    {
        auto item=scene->selectedItems().at(0);
        item->setScale(item->scale()+0.1);
    }
    else
    {
        ui->graphicsView->scale(1.1,1.1);
    }
}

6.效果展示

在这里插入图片描述
这个是放大了的,可惜暂时还不会给你录动态图进行展示,哈哈.

7.缩小完整代码

解:由上同理可得,哈哈,想起了我的初中数学.

void MainWindow::on_actionSmall_triggered()
{
    int count=scene->selectedItems().count();
    if(count==1)
    {
        auto item=scene->selectedItems().at(0);
        item->setScale(item->scale()-0.1);
    }
    else
    {
        ui->graphicsView->scale(0.9,0.9);
    }
}

运行结果就你们自己去试了!

三.旋转

1.图形项进行旋转

讲过的地方我就不讲了.

int count=scene->selectedItems().count();
    if(count==1)
    {
        auto item=scene->selectedItems().at(0);
        item->setRotation(item->rotation()-30);
    }

还是在原有的基础上进行旋转.
在这里插入图片描述

2.视图的旋转

 else
    {
        ui->graphicsView->rotate(-30);
    }

负号是逆时针进行旋转哦.
在这里插入图片描述

3.完整代码

void MainWindow::on_actionLeft_triggered()
{
    int count=scene->selectedItems().count();
    if(count==1)
    {
        auto item=scene->selectedItems().at(0);
        item->setRotation(item->rotation()-30);
    }
    else
    {
        ui->graphicsView->rotate(-30);
    }
}

4.效果展示

在这里插入图片描述

5.右转代码

void MainWindow::on_actionRight_triggered()
{
    int count=scene->selectedItems().count();
    if(count==1)
    {
        auto item=scene->selectedItems().at(0);
        item->setRotation(item->rotation()+30);
    }
    else
    {
        ui->graphicsView->rotate(+30);
    }
}

四.恢复

1.图形项复原

int count=scene->selectedItems().count();
    if(count==1)
    {
        auto item=scene->selectedItems().at(0);
        item->setRotation(0);
        item->setScale(1.0);
    }

只需要将缩放倍数设置为1,旋转设置为0即可

2.视图复原

else
    {
        ui->graphicsView->resetTransform();
    }

在这里插入图片描述

3.完整代码

void MainWindow::on_actionHuifu_triggered()
{
    int count=scene->selectedItems().count();
    if(count==1)
    {
        auto item=scene->selectedItems().at(0);
        item->setRotation(0);
        item->setScale(1.0);
    }
    else
    {
        ui->graphicsView->resetTransform();
    }
}

4.效果展示

在这里插入图片描述
自己去玩完.

五.前后置

1.设置z轴的值

void MainWindow::on_actionTop_triggered()
{
    int count=scene->selectedItems().count();
    if(count==1)
    {
        auto item=scene->selectedItems().at(0);
        item->setZValue(item->zValue()+1);
    }
}

在原来的基础上对,z的值进行加1层!
在这里插入图片描述

2.后置代码

void MainWindow::on_actionButton_triggered()
{
    int count=scene->selectedItems().count();
    if(count==1)
    {
        auto item=scene->selectedItems().at(0);
        item->setZValue(item->zValue()-1);
    }
}

自己去运行效果,我这里运行了,截图你们也看不出来!

六.组合和拆分

1.逻辑

我们将选中的多个图形项,放在一个图形项组中,相当于一个新的图像项.

2.创建图形项组

QGraphicsItemGroup* group=new QGraphicsItemGroup;
scene->addItem(group);

因为组可以视为当个项,所有我们可以添加到场景.
在这里插入图片描述

3.图形项添加到组

 for(int i=0;i<count;i++)
        {
            auto item=scene->selectedItems().at(0);
            item->setSelected(false);
            item->clearFocus();
            group->addToGroup(item);
        }

当我们添加到组以后,原来的图像项的选中和聚焦状态都取消.
在这里插入图片描述

4.设置组的标识

group->setFlags(QGraphicsItem::ItemIsMovable|
                QGraphicsItem::ItemIsSelectable|
                QGraphicsItem::ItemIsFocusable);
        group->setZValue(ZVaule++);
        scene->clearSelection();
        group->setSelected(true);

设置成可选中,可移动,可聚焦,同时设置z轴的值.
并将其设置为新的选中.

5.完整代码

void MainWindow::on_actionZuhe_triggered()
{
    int count=scene->selectedItems().count();
    if(count>1)
    {
        QGraphicsItemGroup* group=new QGraphicsItemGroup;
        scene->addItem(group);
        for(int i=0;i<count;i++)
        {
            auto item=scene->selectedItems().at(0);
            item->setSelected(false);
            item->clearFocus();
            group->addToGroup(item);
        }
        
        group->setFlags(QGraphicsItem::ItemIsMovable|
                        QGraphicsItem::ItemIsSelectable|
                        QGraphicsItem::ItemIsFocusable);
        group->setZValue(ZVaule++);
        scene->clearSelection();
        group->setSelected(true);
    }
    
}

6.效果演示

在这里插入图片描述
嘿嘿嘿,自己就可以组合成任何的图像,哈哈哈.

7.拆分代码

获取的图形项,强转类型转换为图形项组然后进行拆分.

void MainWindow::on_actionChaifen_triggered()
{
    int count=scene->selectedItems().count();
    if(count==1)
    {
        auto group=(QGraphicsItemGroup*)scene->selectedItems().at(0);
        scene->destroyItemGroup(group);
    }
}

在这里插入图片描述

8.效果展示

在这里插入图片描述

七.删除

1.删除代码

void MainWindow::on_actionDel_triggered()
{
    int count=scene->selectedItems().count();
    if(count>0)
    {
        for(int i=0;i<count;i++)
        {
            auto item=scene->selectedItems().at(0);
            scene->removeItem(item);
        }
    }
}

在这里插入图片描述

八.双击编辑图形项颜色

1.逻辑

因为每个图形项的设置颜色方式,不一定相同
有的设置画刷,有的设置画笔,所以我们要对图形项的类型进行判断
因为有很多不同的图形项,所以我们可以用一个模板函数来传参来进行处理.

2.获取图形项的类型

void MainWindow::on_graphicsView_mouseDoubleClick(QPoint point)
{
    int count =scene->selectedItems().count();
    if(count==0)
    {
        return;
    }

    auto item=scene->selectedItems().at(0);
    switch (item->type()) {
    }

type()返回的一个整数,可以用switch来进行判断!
在这里插入图片描述

3.画刷模版函数

template <class T>
void setBrushColor(T *item)
{
    QColor color=item->brush().color();
    color=QColorDialog::getColor(color,NULL,"选择填充颜色");
    if(color.isValid())
    {
        item->setBrush(QBrush(color));
    }
}

4.图形项类型的判断

switch (item->type()) {
    case QGraphicsRectItem::Type:
    {
        auto item2=qgraphicsitem_cast<QGraphicsRectItem*>(item);
        setBrushColor(item2);
        break;
    }
    case QGraphicsEllipseItem::Type:
    {
        auto item2=qgraphicsitem_cast<QGraphicsEllipseItem*>(item);
        setBrushColor(item2);
        break;
    }
    case QGraphicsPolygonItem::Type:
    {
        auto item2=qgraphicsitem_cast<QGraphicsPolygonItem*>(item);
        setBrushColor(item2);
        break;
    }
    }

这个几个都是一种类型的,调用模版函数设置画刷的颜色就可以!

5.画笔模版函数

template <class T>
void setPenColor(T*item)
{
    QPen pen;
    QColor color=item->pen().color();
    color=QColorDialog::getColor(color,NULL,"选择填充颜色");
    if(color.isValid())
    {
        pen.setColor(color);
        item->setPen(pen);
    }
}

6.线条图形项

因为不是用画刷进行填充颜色的,所以我们用画笔.

case QGraphicsLineItem::Type:
    {
        auto item2=qgraphicsitem_cast<QGraphicsLineItem*>(item);
        setPenColor(item2);
        break;
    }

7.文本图形项

case QGraphicsTextItem::Type:
    {
        auto item2=qgraphicsitem_cast<QGraphicsTextItem*>(item);
        QFont font;
        font=item2->font();
        bool ok=false;
        font=QFontDialog::getFont(&ok,font,this,"选择字体");
        if(ok)
        {
            item2->setFont(font);
        }
        break;
    }

用了一个字体对话框.

8.效果展示

在这里插入图片描述
在这里插入图片描述
非常的银杏.

九.按键微移

1.逻辑

我们上节课不写写了一个键盘事件嘛
现在我们可以根据键盘来对图形项进行操作

2.删除图形项

if(scene->selectedItems().count()!=1)
    {
        return;
    }
    
    auto item=scene->selectedItems().at(0);
    
    if(event->key()==Qt::Key_Delete)
    {
        scene->removeItem(item);
    }

就是键盘上的Delete键

3.旋转图形项

else if(event->key()==Qt::Key_Space)
    {
        item->setRotation(item->rotation()+10);
    }

Key_Space就是空格键.

4.放大,放小

else if(event->key()==Qt::Key_PageUp)
    {
        item->setScale(item->scale()+0.1);
    }
    else if(event->key()==Qt::Key_PageDown)
    {
        item->setScale(item->scale()-0.1);
    }

5.上下左右

else if(event->key()==Qt::Key_Left)
    {
        item->setX(item->x()-1);
    }
    else if(event->key()==Qt::Key_Right)
    {
        item->setX(item->x()+1);
    }
    else if(event->key()==Qt::Key_Up)
    {
        item->setY(item->y()-1);
    }
    else if(event->key()==Qt::Key_Down)
    {
        item->setY(item->y()+1);
    }

6.完整代码

void MainWindow::on_graphicsView_keyPress(QKeyEvent *event)
{
    if(scene->selectedItems().count()!=1)
    {
        return;
    }

    auto item=scene->selectedItems().at(0);

    if(event->key()==Qt::Key_Delete)
    {
        scene->removeItem(item);
    }
    else if(event->key()==Qt::Key_Space)
    {
        item->setRotation(item->rotation()+10);
    }
    else if(event->key()==Qt::Key_PageUp)
    {
        item->setScale(item->scale()+0.1);
    }
    else if(event->key()==Qt::Key_PageDown)
    {
        item->setScale(item->scale()-0.1);
    }
    else if(event->key()==Qt::Key_Left)
    {
        item->setX(item->x()-1);
    }
    else if(event->key()==Qt::Key_Right)
    {
        item->setX(item->x()+1);
    }
    else if(event->key()==Qt::Key_Up)
    {
        item->setY(item->y()-1);
    }
    else if(event->key()==Qt::Key_Down)
    {
        item->setY(item->y()+1);
    }
}

效果自己去用键盘玩哦!

十.鼠标移动

1.逻辑

当我们的鼠标进行移动的时候,我们就显示视图坐标和场景的坐标.
可通过视图坐标转到场景坐标.
同时,我们希望在状态栏中进行显示,所以我们需要在状态栏中,添加标签.

2.状态栏添加标签

我们原来讲过,状态栏添加组件,只能通过代码.
头文件中进行创建:
在这里插入图片描述
构造函数中,进行实现:

    labView=new QLabel("视图坐标:");
    labScene=new QLabel("场景坐标:");
    labItem=new QLabel("图形项坐标:");
    labInfo=new QLabel("图形项信息:");
    labView->setMinimumWidth(150);
    labScene->setMinimumWidth(150);
    labItem->setMinimumWidth(150);
    labInfo->setMinimumWidth(150);
    this->statusBar()->addWidget(labView);
    this->statusBar()->addWidget(labScene);
    this->statusBar()->addWidget(labItem);
    this->statusBar()->addWidget(labInfo);

运行结果:
在这里插入图片描述

3.设置视图,场景坐标

void MainWindow::on_graphicsView_mouseMove(QPoint point)
{
    labView->setText(QString::asprintf("视图坐标:%d,%d",point.x(),point.y()));
    QPointF pointScene=ui->graphicsView->mapToScene(point);
    labScene->setText(QString::asprintf("场景坐标:%.0f,%.0f",pointScene.x(),pointScene.y()));
}

返回的浮点坐标.
在这里插入图片描述

4.效果展示

在这里插入图片描述
会随着我的鼠标移动而变化!

十一.鼠标单击

1.逻辑

当我们单击一个图形项的时候,就显示图形项坐标和图形项的信息.

2.通过场景坐标获取图形项

QPointF pointScene=ui->graphicsView->mapToScene(point);
auto item=scene->itemAt(pointScene,ui->graphicsView->transform());

通过场景坐标得到场景中的项
在这里插入图片描述

3.场景坐标转换成图形项坐标

QPointF pointItem=item->mapFromScene(pointScene);//场景坐标转图形项坐标
labItem->setText(QString::asprintf("图形项坐标:%.0f,%.0f",pointItem.x(),pointItem.y()));

在这里插入图片描述

4.设置图形项的信息

还记得我们原理自己定义的数据嘛,就是setDate()
现在我们就可以拿出来用了.

labInfo->setText(item->data(ITEMINFO).toString()+"ITEMID:"+
                         item->data(ITEMID).toString());

在这里插入图片描述
在这里插入图片描述
这就是当年我们自定义数据的地方
在这里插入图片描述
现在就可以根据键来获取到,当时我们设置的图像名称和ID.

5.完整代码

void MainWindow::on_graphicsView_mousePress(QPoint point)
{
    QPointF pointScene=ui->graphicsView->mapToScene(point);
    auto item=scene->itemAt(pointScene,ui->graphicsView->transform());
    
    if(item)
    {
        QPointF pointItem=item->mapFromScene(pointScene);//场景坐标转图形项坐标
        labItem->setText(QString::asprintf("图形项坐标:%.0f,%.0f",pointItem.x(),pointItem.y()));
        labInfo->setText(item->data(ITEMINFO).toString()+" ID:"+
                         item->data(ITEMID).toString());
    }
}

6.效果展示在这里插入图片描述

OK,到这里,咱们这个项目就完结撒花啦,期待与你一起进步!

十二.总结

这就是基于QGraphicsView架构做的CAD项目,当然啦,还可以有更多的创意,你也试试看吧!

播下一颗种子…

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

InVEST实践及在生态系统服务供需、固碳、城市热岛、论文写作等实际项目中应用

白老师&#xff08;研究员&#xff09;&#xff1a;长期从事生态系统结构-格局-过程-功能-服务的变化与响应关系等研究工作,重点围绕生物多样性、生态系统服务与价值等&#xff0c;构建生物地球化学模型和评价指标体系&#xff0c;为城市、区域和自然保护区的可持续发展和生态环…

4K高清全屏壁纸免费下载网站

在当今这个视觉效果至上的时代&#xff0c;高清壁纸已经成为许多人装饰桌面的重要选择。特别是4K高清壁纸&#xff0c;以其超高的分辨率和细腻的画面质感&#xff0c;深受广大用户的喜爱。如果你正在寻找一个可靠的4K高清全屏壁纸免费下载网站&#xff0c;不妨来看看以下几个推…

保护眼睛的台灯什么牌子好?保护眼睛的台灯排行榜分享

​在当前的社会环境中&#xff0c;儿童近视的情况愈发严重&#xff0c;很大程度上是由于学习的压力和长时间用眼所导致的。这无疑增加了孩子们面临的近视风险&#xff0c;因此&#xff0c;保护孩子们宝贵的视力健康&#xff0c;挑选一款优质的护眼台灯显得尤为迫切。市面上的灯…

重磅!超级码科技股份董事长顾惠波正式入选浙江省科技型企业家人才库

近日&#xff0c;由浙江省科学技术协会、浙江省工商业联合会等五单位联合发布的“浙江省科技型企业家选树计划”迎来首批入选者&#xff0c;这是国内首次在省级层面为科技型企业家制定推举和培养计划&#xff0c;是一个值得期待的创举。 通过“专家提名渠道推荐”“评审”的方…

模拟面试之外卖点单系统(高频面试题目mark带答案)

昨天跟大家分享一个大家简历中常见的项目-《外卖点单系统》&#xff0c;这是一个很经典的项目&#xff0c;有很多可以考察的知识点和技能点&#xff0c;但大多数同学都是学期项目&#xff0c;没有实际落地&#xff0c;对面试问题准备不充分&#xff0c;回答时抓不到重点&#x…

C语言 | Leetcode C语言题解之第189题轮转数组

题目&#xff1a; 题解&#xff1a; void swap(int* a, int* b) {int t *a;*a *b, *b t; }void reverse(int* nums, int start, int end) {while (start < end) {swap(&nums[start], &nums[end]);start 1;end - 1;} }void rotate(int* nums, int numsSize, int…

ORA-6544[pevm_peruws_callback-1][604] is caused (Doc ID 2638095.1)

ORA-6544[pevm_peruws_callback-1][604] is caused (Doc ID 2638095.1)​编辑To Bottom In this Document Symptoms Cause Solution References Applies to: Oracle Database - Enterprise Edition - Version 12.2.0.1 and later Information in this document applies to an…

低代码平台如何重塑项目管理:效率与创新的新边界

引言 随着数字化转型的加速和技术创新的推动&#xff0c;低代码开发平台在近年来逐渐崭露头角&#xff0c;成为企业和组织加速应用开发和创新的重要工具。低代码平台通过提供可视化的开发环境和预构建的组件&#xff0c;极大地简化了应用程序的开发过程&#xff0c;使非专业开发…

惊!两个样本的简单分组实验登上了园艺学顶级期刊

在真核细胞中&#xff0c;基因组DNA被包装成高度组织化的核蛋白复合体&#xff0c;称为染色质。染色质的基本单元是核小体&#xff0c;它由一个核心组蛋白八聚体&#xff08;组蛋白H2A、H2B、H3和H4各两个&#xff09;组成&#xff0c;其周围缠绕着大约146个碱基对的DNA。这些组…

Java导出excel合并行功能

导出的excel需要上下行相同的数据进行行合并的功能。如图显示 这里我使用的是项目框架自带的导出模板代码&#xff0c;是在这套模板基础之上做的修改。 // 我主要演示的就是mergeRows方法的操作&#xff0c;dataList是导出数据的集合。 workbook ExcelTools.expData(workbook…

jenkins构建allure报java.io.IOException: Can‘t find allure commandline <null>

jenkins构建allure报错 java.io.IOException: Can’t find allure commandline 配置allure commandline&#xff0c;注意将地址放在bin上一层

华为仓颉编程语言正式发布,仓颉编程教程

目录 前言 基本概念 标识符 变量 类型 基础数据类型 表达式 if 表达式 while 表达式 for-in 表达式 程序结构 函数 定义函数 调用函数 lambda表达式 应用实例&#xff08;遍历目录&#xff09; 枚举 定义与实例化 成员访问规则 match表达式 应用实例&…

【Arduino】实验使用ESP32单片机点亮OLED屏幕(图文)

一般我们使用单片机开发多数都是使用的lcd屏幕&#xff0c;由于lcd屏幕体积较大&#xff0c;并且显示的分辨率较低&#xff0c;显示效果并不是很好&#xff0c;今天小飞鱼就实验了使用ESP32连接oled屏幕进行显示&#xff0c;oled屏幕具有分辨率高、体积小、显示色彩丰富的特点&…

Kompas AI数据分析与预测功能对比

一、引言 在现代商业环境中&#xff0c;数据分析与预测是企业制定战略决策的关键工具。通过对大量数据的分析&#xff0c;企业能够识别趋势、预测未来变化&#xff0c;并做出更为明智的决策。本文将对比Kompas AI与其他主要AI产品在数据分析与预测方面的能力&#xff0c;展示K…

专利、论文免费检索

数字资源 - 资源导航 - 深圳图书馆 (szlib.org.cn)https://www.szlib.org.cn/digitalResource/index.html

uniapp - 微信小程序 - 自定义底部tabbar

废话不多说&#xff0c;直接行源码 这里需要的底部tabbar的图片在这里 我的资源里面呢 图片是这样的 先看成品吧 首先 - BaseApp\components\Tabbar.vue <script setup>import {ref,nextTick,watch} from "vue"// 核心 - 隐藏uniapp自带的底部tabbaruni.hi…

聚星文社AI工具

聚星文社AI工具是一种基于人工智能技术开发的工具&#xff0c;旨在辅助作者和写作人员提升创作效率和质量。 点击下载 该工具可以提供多项功能&#xff0c;包括语法纠错、智能推荐、文章自动摘要等。 通过使用聚星文社AI工具&#xff0c;用户可以在写作过程中得到即时的纠错建…

上海慢病管理app开发的意义及功能

近年来&#xff0c;随着经济与科技的不断发展&#xff0c;人们对慢性疾病的重视程度也不断提高。大家不再满足于周期较长的定期检查&#xff0c;而是渴求能够进行短期、实时的病情预防与监测&#xff0c;为了满足人们的需求&#xff0c;帮助大家更好的干预病情&#xff0c;上海…

说出这11种API接口性能优化,面试官一定会对你刮目相看

前言 接口性能优化是后端开发人员经常碰到的一道面试题&#xff0c;因为它是一个跟开发语言无关的公共问题。 这个问题既可以很简单&#xff0c;也可以相当复杂。 有时候&#xff0c;只需要添加一个索引就能解决。 有时候&#xff0c;代码需要进行重构。 有时候&#xff0c;必…

今年哪两个行业可能有贝塔?

银行和综合板块存在比较明显的行业贝塔&#xff0c;背后原因是&#xff1a;银行板块中&#xff0c;最小的几家银行市值也不小&#xff1b;综合板块中&#xff0c;最大的几家市值也不大。 一、今年哪两个行业可能有贝塔&#xff1f; 我们一直强调今年市场呈现出【行业弱beta、风…