【QT入门】 QScrollArea实际运用之滑动Widget设计

【Qt笔记】QScrollArea控件详解 QScrollArea 是 Qt 框架中用于提供一个滚动条区域,允许用户滚动查看比当前可视区域更大的内容的控件。 阅读详情
AI摘要

本文详细介绍了QT中的QListWidget和QScrollArea在实际应用中的列表模式、图标模式和滑动Widget设计,以及如何实现导航栏与可滚动内容的联动,通过实例展示了如何使用QScrollArea创建可滚动视图以容纳多个自定义小部件。

往期回顾:

【QT入门】 QListWidget各种常见用法详解之列表模式-优快云博客

【QT入门】 QListWidget各种常见用法详解之图标模式-优快云博客

【QT入门】 QScrollArea实际运用之导航栏设计-优快云博客

 【QT入门】 QScrollArea实际运用之滑动Widget设计

我们通过一个实例来讲解QScrollArea的具体方法,并通过纯手写代码实现该实例。

本文承接上文导航栏设计,开始考虑右边的滑动Widget设计。

一、QScrollArea

1、简单介绍

QScrollArea是Qt中用于实现滚动区域的小部件类,它提供了一个可滚动的视图区域,用于显示超出可见区域的内容。通过将其他小部件放置在QScrollArea中,可以实现在需要时自动启用滚动条来查看内容。

2、主要特点和用法

滚动内容:QScrollArea 可以容纳其他小部件作为其子部件,并在内容超出显示区域时启用滚动条,允许用户滚动查看内容。

自适应大小:

QScrollArea 可以根据其子部件的大小自动调整大小,以确保内容可以正确显示,并在需要时启用滚动条。
设置滚动条策略:可以通过设置 QScrollArea 的滚动条策略来指定何时显示滚动条,包括垂直滚动条、水平滚动条或两者都显示。
内边距:可以设置内边距以控制内容与滚动区域边缘之间的间距。
放大缩小:QScrollArea 还支持放大和缩小内容,以便用户可以调整内容的大小以适应视图区域。

二、最终效果

 由于QScrollArea能够提供了一个可滚动的视图区域,用于显示超出可见区域的内容,我们模仿迅雷去做一个界面,左边用QListWidget实现不同tab页面,右边用QScrollArea实现可以进行滚动的效果。

 三、思路

1、左边导航栏实现 

【QT入门】 QScrollArea实际运用之导航栏设计-优快云博客

2、 右边滑动Widget设计

右边用了QScrollArea来做滑动往下的,里面是一个个widget,每个widget里面再做相应的基本界面设计。在这些widget里做了三个不同类型的,我们一个一个看:

1、完全自己手敲实现的一个widget界面
2、直接粘贴图片资源
3、先创建类用QPixmap放图片,做自适应最后放widget里
2.1、纯手敲实现 
2.1.1新建类

在当前项目新建一个类,在这个类里面实现(右键单击项目->添加->类)

2.1.2类初始化

初始化该类,添加构造函数、析构函数等

#pragma once
#include <QWidget>

class CBaseSetWidget: public QWidget
{
public:
 CBaseSetWidget(QWidget* parent = Q_NULLPTR);
 ~CBaseSetWidget();
};    

 布局设计习惯以后做这样一个界面应该不是一件很难的事情了,就是要注意把逻辑梳理出来,免得写着写着就懵了。

2.1.3布局逻辑梳理

 总共都是6个水平布局,2个竖直布局,另外就是注意下每个模块之间的间距等,这个代码简单但冗长,源代码放在这,记不住了就回来看看。

2.1.4示例代码
CBaseSetWidget::CBaseSetWidget(QWidget* parent)
    :QWidget(parent)
{
	setWindowFlags(Qt::FramelessWindowHint);
	setAttribute(Qt::WA_StyledBackground);
	this->setStyleSheet("background-color:rgb(51, 51, 51);color:rgb(200,200,200);");

	QLabel* pBasesetLabel = new QLabel(this);
	pBasesetLabel->setText(u8"基本设置");

	QCheckBox* pCheckKaijiqidong = new QCheckBox(this);
	pCheckKaijiqidong->setText(u8"开机启动");

	QCheckBox* pCheckMiandarao = new QCheckBox(this);
	pCheckMiandarao->setFixedWidth(140);
	pCheckMiandarao->setText(u8"开启免打扰模式");

	QLabel* p1 = new QLabel(this);
	p1->setText("?");

	QCheckBox* pCheckBosskey = new QCheckBox(this);
	pCheckBosskey->setFixedWidth(105);
	pCheckBosskey->setText(u8"开启老板键");

	QLineEdit* pLineEdit = new QLineEdit(this);
	pLineEdit->setFixedWidth(100);
	pLineEdit->setStyleSheet("border-style:solid;border-width:1px;border-color:rgb(79,79,79);");
	QLabel* p2 = new QLabel(this);
	p2->setText("?");

	QCheckBox* pCheckNewShowMainUI = new QCheckBox(this);
	pCheckNewShowMainUI->setText(u8"新建时显示主界面");

	QLabel* pXiazaimoshi = new QLabel(this);
	pXiazaimoshi->setText(u8"下载模式");

	QRadioButton* pQuansuxiazai = new QRadioButton(this);
	pQuansuxiazai->setText(u8"全速下载");

	QRadioButton* pXiansuxiazai = new QRadioButton(this);
	pXiansuxiazai->setText(u8"限速下载");
	pXiansuxiazai->setFixedWidth(90);

	QPushButton* pBtnModify = new QPushButton(this);
	pBtnModify->setText(u8"修改设置");
	pBtnModify->setStyleSheet("background-color:#1A1A1A;color:#5F5F5F");

	QLabel* label_cfginfo = new QLabel(this);
	label_cfginfo->setText(u8"限制时间段: 00:00-23:59 最大下载速度:不限速");

	QVBoxLayout* pMainVlay = new QVBoxLayout(this);
	pMainVlay->addWidget(pBasesetLabel);
	pMainVlay->addSpacing(20);

	QHBoxLayout* pHlay1 = new QHBoxLayout(this);
	pHlay1->addSpacing(35);

	QVBoxLayout* pVlay1 = new QVBoxLayout(this);
	pVlay1->addWidget(pCheckKaijiqidong);
	pVlay1->addSpacing(20);

	QHBoxLayout* pHlay2 = new QHBoxLayout;
	pHlay2->addWidget(pCheckMiandarao);
	pHlay2->addWidget(p1);

	pVlay1->addLayout(pHlay2);  // 添加免打扰的水平布局
	pVlay1->addSpacing(20);

	QHBoxLayout* pHlay3 = new QHBoxLayout;
	pHlay3->addWidget(pCheckBosskey);
	pHlay3->addWidget(pLineEdit);
	pHlay3->addWidget(p2);

	pVlay1->addLayout(pHlay3);
	pVlay1->addSpacing(20);

	pVlay1->addWidget(pCheckNewShowMainUI);
	pVlay1->addSpacing(20);

	pVlay1->addWidget(pXiazaimoshi);  // 下载模式
	pVlay1->addSpacing(20);

	QHBoxLayout* pHlay4 = new QHBoxLayout;  //  下载模式下面的水平布局
	pHlay4->addSpacing(30);

	QVBoxLayout* pVlay2 = new QVBoxLayout(this);

	QHBoxLayout* pHlay5 = new QHBoxLayout;
	pHlay5->addWidget(pQuansuxiazai);
	pHlay5->addWidget(p2);
	pVlay2->addLayout(pHlay5);
	pVlay2->addSpacing(20);

	// 限速下载
	QHBoxLayout* pHlay6 = new QHBoxLayout;
	pHlay6->addWidget(pXiansuxiazai);
	pHlay6->addWidget(pBtnModify);
	pHlay6->addWidget(label_cfginfo);
	pHlay6->addStretch();

	pVlay2->addLayout(pHlay6);

	pHlay4->addLayout(pVlay2);

	pVlay1->addLayout(pHlay4);
	pHlay1->addLayout(pVlay1);

	pMainVlay->addLayout(pHlay1);
	pMainVlay->setContentsMargins(20, 20, 20, 20);
}
2.2、直接资源加载 

这个很简单,把资源图片添加进来,直接new 一个Widget,设置样式就是

m_pYunpanSetWidget->setStyleSheet("background-image:url(:/QScrollArea_01/resources/YunPanSet.png);background-repeat: no-repeat;background-color:rgb(51, 51, 51)");
2.3、自建类加载图片 
2.3.1新建类

在当前项目新建一个类,在这个类里面实现(右键单击项目->添加->类)

2.3.2类初始化

同样的初始化该类,添加构造函数、析构函数等

#pragma once

#include <QWidget>

class GaojiSetWidget : public QWidget
{
 Q_OBJECT

public:
 GaojiSetWidget(QWidget* parent = Q_NULLPTR);
 ~GaojiSetWidget();

private:

};
2.3.3创建QPixmap对象

创建QPixmap对象添加进去并自适应,这一步更是熟悉, 回忆之前的图片查看软件。

QLabel* pLabel1 = new QLabel(this);
 pLabel1->setFixedSize(1000, 541);
 QPixmap* pixmap = new QPixmap(":/QScrollArea_01/resources/GaojiSet_1.png");
 pixmap->scaled(pLabel1->size(), Qt::KeepAspectRatio);
 pLabel1->setScaledContents(true);
 pLabel1->setPixmap(*pixmap);

 QLabel* pLabel2 = new QLabel(this);
 pLabel2->setFixedSize(1000, 685);
 pixmap = new QPixmap(":/QScrollArea_01/resources/GaojiSet_2.png");
 pixmap->scaled(pLabel2->size(), Qt::KeepAspectRatio);
 pLabel2->setScaledContents(true);
 pLabel2->setPixmap(*pixmap);

 QVBoxLayout* pVLay = new QVBoxLayout(this);
 pVLay->addWidget(pLabel1);
 pVLay->setSpacing(0);
 pVLay->addWidget(pLabel2);
 pVLay->setContentsMargins(0, 0, 0, 0);

没什么特别需要注意,看多了写多了自然就是很熟悉的了。

3、整合实现最终效果

 最后就是把所有的widget全部合起来,实现滑动效果,样式优化,点击左边的listWidget跳转到ScrollArea里相应的widget。

3.1、整合Widget到QScrollArea

整合前面三个类型的Widget界面到QScrollArea上去

 3.1.1定义指针和模板

首先在.h文件里定义每个widget的指针和一个QWidget类型的vector模板

    CBaseSetWidget* m_pBaseSetWidget;
    QWidget* m_pYunpanSetWidget;
    QWidget* m_pDownloadWidget;
    QWidget* m_pJieguanWidget;
    QWidget* m_pRenwuWidget;
    QWidget* m_pTixingWidget;
    QWidget* m_pXuanfuWidget;
    GaojiSetWidget* m_pGaojiWidget;

    vector<QWidget*> m_vecWidget;

因为上面那么多widget都是继承于QWidget,放到vector里实现全部添加滑动的效果。

3.1.2添加widget到vector

每一个widget,new出来以后,都push_back到vector里面去 。

 纯手写的
 m_pBaseSetWidget = new CBaseSetWidget;
 m_vecWidget.push_back(m_pBaseSetWidget);
直接添加资源的
m_pYunpanSetWidget = new QWidget;                         
m_pYunpanSetWidget->setStyleSheet("background-image:url(:/QScrollArea_01/resources/YunPanSet.png);background-repeat: no-repeat;background-color:rgb(51, 51, 51)");
 m_pYunpanSetWidget->setFixedSize(1000, 478);
 m_vecWidget.push_back(m_pYunpanSetWidget);
Qpixmap自适应的
m_pGaojiWidget = new GaojiSetWidget;
 m_vecWidget.push_back(m_pGaojiWidget);
3.1.3遍历vector

最后,我们创建一个大的widget,遍历vector,把所有的widget放到大widget里,最后放到QScrollArea里面去 

 QWidget* widget = new QWidget;

 QVBoxLayout* pVLay = new QVBoxLayout(widget);

 //将所有设置的“widget”全部添加进去
 for (auto w : m_vecWidget)
 {
  pVLay->addWidget(w);
  pVLay->addSpacing(15);
 }

 pVLay->setContentsMargins(0, 5, 0, 5);

 pScrollArea->setWidget(widget);
 3.2实现页面跳转

点击listWidget上的item,实现旁边的页面跳转.

这一段代码还是需要一定熟练度的,只能说路还很长。

3.2.1知识点分析

slotItemClicked槽函数:

当QListWidget中的项被点击时,会触发该槽函数。在该槽函数中,首先将标记signFlag设为true,然后获取被点击项的文本内容,并根据该内容确定相应的QPoint位置。最后,通过设置QScrollArea的垂直滚动条值来使被点击项对应的位置显示在可视区域内。

slotValueChanged槽函数:

当QScrollArea的垂直滚动条值发生变化时,会触发该槽函数。在该槽函数中,首先判断标记signFlag是否为false,如果是,则遍历m_vecWidget中的部件,根据部件的可见性设置相应的QListWidgetItem为选中状态或非选中状态。最后,将标记signFlag设为false。

这样实现了根据QListWidget中的项点击来控制QScrollArea的滚动位置,并根据QScrollArea的滚动位置来更新QListWidget中的项的选中状态。这种交互方式可以用于实现列表项与可滚动区域之间的联动效果。 

3.2.2示例代码
 // 通过connect函数将itemClicked信号与slotItemClicked槽函数连接起来
 connect(pListWidget, &QListWidget::itemClicked, this, &QScrollArea_01::slotItemClicked);

 // 将valueChanged信号与slotValueChanged槽函数连接起来
 connect(pScrollArea->verticalScrollBar(), &QScrollBar::valueChanged,
  this, &QScrollArea_01::slotValueChanged);
}

void QScrollArea_01::slotItemClicked(QListWidgetItem* item)
{
 signFlag = true;
 QString itemText = item->text();
 QPoint widgetPos;

 int size = pStringList.size();
 for (int i = 0; i < size; i++)
 {
  if (itemText == pStringList[i])
  {
   widgetPos = m_vecWidget[i]->pos();
  }
 }

 pScrollArea->verticalScrollBar()->setValue(widgetPos.y());
}

void QScrollArea_01::slotValueChanged(int value)
{
 if (!signFlag)
 {
  int itemSize = m_vecWidget.size();
  for (int i = 0; i < itemSize; i++)
  {
   if (!m_vecWidget[i]->visibleRegion().isEmpty())
   {
    pListWidget->item(i)->setSelected(true);
    return;
   }
   else
   {
    pListWidget->item(i)->setSelected(false);
   }
  }
 }
 signFlag = false;
}

整体思路就是这样,还是有点难度,多理解。

都看到这里了,点个赞再走呗朋友~

加油吧,预祝大家变得更强!

QT控件 — QScrollArea 滚动区域的内容,这样 QScrollArea::widget() 的 childWidget 就可以在视口内看到,通过 xmargin 和 ymargin 以像素为单位指定边缘。如果指定的点如果无法到达指定的点,则将内容滚动到最近的有效位置。它是可以自动调节它内部控件的对齐方式,对于大于它的控件或图片,可能没有效果。首先,是 ensureWidgetVisible 这个函数,添加个按键,转到槽函数,试下。将label控件拖进scrollArea这个容器中,点击运行,会发现,并没有效果。这两个函数不好理解。 阅读详情

相关推荐

QT入门Containers之QScrollArea

qt控件

Littlehero_121的博客 1801

QT的自动滚动区QScrollArea的用法,图文详解

QScrollArea属于控件容器类,可以直接在ui中拖出来。 对于QScrollArea,最难搞懂的就是:如何控制它,才能让它在我们想要出现滚动条的时候出现滚动条。 我们拖入一个QScrollArea,再向他里面拖入4个button,观察信息如下: 可以发现,4个button并不是直接位于QScrollArea中的,而是位于它的成员scorllAreaWidgetConten...

野生猿-群号1025127672 10万+

【QT进阶】 QScrollArea实战:构建可滑动配置面板的三种Widget实现方案

本文深入探讨了在QT开发中,利用QScrollArea构建可滑动配置面板的三种核心Widget实现方案:纯代码手写布局实现极致控制、直接加载图片资源快速原型、以及创建自适应图片类实现动静结合。文章详细分析了每种方案的适用场景、优缺点,并提供了与导航栏联动的整合方法及性能优化指南,帮助开发者高效打造流畅的桌面软件设置界面。

weixin_29281915的博客 133

【QT进阶】QScrollArea高效布局技巧:打造动态可滑动的Widget容器

本文深入解析QT框架中QScrollArea控件的使用技巧,帮助开发者高效构建动态可滑动的Widget容器。从基础概念到高级优化,涵盖自动滚动条管理、动态加载策略、平滑滚动动画等实用技术,特别适合需要实现类似迅雷设置界面滑动效果的开发者参考。

weixin_29300241的博客 656

【QT进阶】 QScrollArea实战:打造可滑动配置面板的三种Widget实现方案

本文详细介绍了在QT框架中使用QScrollArea实现可滑动配置面板的三种Widget方案,包括纯代码手写布局、直接加载图片资源和基于QPixmap的自适应实现。针对滑动设计和导航栏联动等常见问题,提供了实战解决方案,帮助开发者高效构建复杂的桌面应用界面。

weixin_30512089的博客 371

QT 基于QScrollArea的界面嵌套移动

在实际的应用场景中,经常会出现软件界面战场图大于实际窗体大小,利用QScrollArea可以为widget窗体添加滚动条,可以实现小窗体利用滚动条显示大界面需求。实现如下: View Code View Code View Code View Code工程源码下载路径:「ScrollArea」https://www.aliyundrive.com/s/QMf912nt86A 点击链接保存,或者复制本段内容,打开「阿里云盘」APP ,无需下载极速在线查看,视频原画倍速播放。...

虚幻私塾 661

Qt QScrollArea的基本用法 (小白使用QScrollArea无法滑动的解决办法)

因工作原因从来没有用过Qt的我最近也接触了一下Qt,在使用QScrollArea的时候发现UI添加进QScrollArea无法滑动,在网上找了很多教程也没发现一个编程新手,能给新手讲明白的教程。无奈之下只好自己琢磨,下面给大家分享下我使用QScrollArea的过程及其Demo。 两种方法: 1.直接从设计中生成的QScrollArea(为什么从这个方法开始讲是因为对新...

iMc980925的博客 1万+

QScrollArea滚动条区域

catalogQScrollArea QScrollArea QScrollArea,只是一个“窗口,井口,视角”,他的里面 有一个很大的“幕布” 非常大 你通过这个“井口”,可以看到 里面的 大大的 天空。 我们称,他里面的这个“幕布” 为:widget(其实就是个widget) 具体这个“井口 ScrollArea”,是否要展示出 “滚动条” ,这个要取决于: 他内部的这个widget的大小!!! 比如, 你的ScrollArea的大小是: (w1, h1), 他内部的“幕布widget“大小是:(

WChang的博客 1260

Qt实现Widget全屏滑动(事件)

/ 获取当前滚动条位置。// 设置新的滚动位置。// 为滚动区域安装事件过滤器,实现全屏滑动。// 其他事件交给基类处理。二、Page2.cpp。

weistar666的博客 258

【Qt实战】QScrollArea滚动条显示异常的排查与修复指南

本文针对Qt开发中QScrollArea滚动条不显示的常见问题,提供了从Qt Designer可视化操作到代码层排查的完整解决方案。核心在于理解QScrollArea的显示逻辑,并通过正确设置内部控件布局或调整滚动条策略来修复。文章详细讲解了如何利用布局管理器自动管理尺寸,以及如何通过代码动态控制,帮助开发者高效解决界面滚动异常。

weixin_28358083的博客 81

第一次面试经历:集创北方数字IC前端面试(崩)总结

时间:2020年8月11日上午10点 公司:集创北方,做LED、LCD、OLED、AMOLED等显示器芯片的公司,应该主要是做显示驱动、图像处理、电源管理等这一块。 岗位:数字IC前端设计 城市:北京 形式:线上面试。感觉我俩是两个社畜,他说摄像头开不开都可以,我说那语音OK吗他说OK,于是直接语音问答。 项目经历:基于FPGA的车牌识别 & 先导存储器集成工艺开发(课题组) & 基于FPGA的贪吃蛇小游戏 反正是凉凉的,这时候准备还不足,前面都在复习项目没怎么刷过题。 过程如下: 自我介绍

coin的博客 6678

Qt中QScrollArea的用法---滚动区

范例 //widget.h #ifndef WIDGET_H #define WIDGET_H #include <QWidget> #include <QScrollArea> class Widget : public QWidget { Q_OBJECT public: Widget(QWidget *parent = 0); ~Widge...

拒绝刘亦菲的博客 6086

避坑指南:ZYNQ MPSOC QSPI固化时MT25QU256闪存的特殊配置

本文针对Xilinx ZYNQ UltraScale+ MPSoC平台,详细解析了使用Vitis工具将BOOT.bin固化至Micron MT25QU256ABA QSPI NOR Flash时的特殊配置与避坑指南。重点阐述了Init文件的真实作用、电压与频率的精确匹配策略,以及针对该闪存型号的初始化序列,帮助工程师解决烧录失败、启动异常等常见问题,确保系统可靠启动。

weixin_29175469的博客 270

QT widget 添加滚动条

QVBoxLayout* vLayout = new QVBoxLayout(tasksDetailWidget); QLabel* taskNumLabel = new QLabel(QStringLiteral("), tasksDetailWidget); //先初始化widget 并设置好布局 taskListWidget = new QWidget; taskListLayout = new QVBoxLayout(taskListWidget); taskListLayout-&gt.

hiprogram的博客 8669

使用gsplat进行3D高斯泼溅的方案

gsplat 不是一个软件,而是一个深度优化CUDA的开源Python库。它的作者是 Nerfstudio 团队,这个团队最出名的项目是 Nerfstudio,是对 NeRFs 方法支持最好的一套框架。据其所述,出于对新一代技术的好奇,他们构建了 gsplat 这个库。它支持 Windows/Linux 两个系统,使用前必须准备好 Nvidia 显卡。跑这个项目真是特别费劲,官方的文档支持不够完善,以至于遇到问题,开发者们都只能在issue区里抱团取暖。

兴趣使然的创作者 2105

rk3576之imx415 4k@60fps

1;0;1;0;1;0;1;0;1;0;1;0;1;0;

darennet的专栏 705

新手 对QScrollArea滑动条不显示问题

QScrollArea滑动条不显示问题 问题 新手在第一次用ui设计界面投拖拽一个scrollArea控件不显示滚动条 解决 可以先往拖拽scrollArea几个大控件比如widget(注意:widget最好比scrollArea大,不然可能不会显示滚条)你可以多拖几个在里面 注意:先把scrollArea右下角的属性栏里找到WidgetResizable把这里的有√的去掉。 最后:你在随便点击下水平布局就行了 ...

make580的博客 1151

GitLab教程(四):分支(branch)和合并(merge)

命令进行合并时,Git具备一定的智能自动化处理能力:如果一个分支仅修改了文件A,而另一个分支独立地修改了文件B,Git能够无缝整合这些更改,自动完成合并过程——即最终的代码既包含了对A文件的修改也包含了对B文件的修改。同样地,若两个分支虽然都修改了同一个文件,但涉及的是文件中互不重叠的部分,比如一个改动发生在第一行,另一个则在第二行,Git同样能巧妙地自动合并这些非冲突性修改。获取了远程分支的最新变化,或者当你想要合并本地的一个分支到当前分支时,就会用到这个命令。,默认会尝试合并远程分支到当前分支。

TracyCoder的博客 7885

QT实现抽屉菜单

实现一个点击按钮后弹出下方更多选项或者文本内容的功能基础逻辑:创建一个QScrollArea,里面包含多个pushbutton和多个widget,然后通过点击pushbutton显隐widget即可。

2301_80523750的博客 669

全功能tgbot/Telegram机器人多功能有后台版源码

trx兑换 闪兑 关键字监控 群管 usdt监控 余额查询 推广分享 等几乎常见的tg机器人功能都有。全功能tgbot/telegram机器人多功能有后台版源码-打包好的可以直接上手。

百创科技 2701

LLM Wiki 的完整输入体系:LLM Wiki极简实战

LLM Wiki 的输入分为**四大类**,覆盖从"原始知识注入"到"系统行为控制"的全流程,所有输入都遵循"**原始资料不可变,规则可迭代,人类反馈闭环**"的核心原则。

ZhangJiqun&191cm&85kg 320

【QT入门】 设计实现无边框窗口拉伸的公用类

【QT入门】 设计实现无边框窗口拉伸的公用类

LF__plus的博客 986

Open3D点云算法与点云深度学习案例汇总(长期更新)

Open3D-python算法专栏文章汇总,长期更新算法原理与实战案例。

纵马踏花向自由 7467

ensureWidgetVisible:使控件总是在QScrollArea::widget()中显示

QScrollArea键盘操作上下时,保持某个控件总是显示

ShenY_的博客 663

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

PyQt5桌面开发实战:鼠标坐标、右键禁用与QScrollArea滚动区域

事件驱动编程是GUI开发的核心机制,通过事件对象捕获用户输入并触发相应处理逻辑。在PyQt5中,鼠标坐标获取依赖mouseMoveEvent与setMouseTracking的配合,右键菜单拦截则需理解contextMenuEvent与上下文菜单策略的差异。QScrollArea作为滚动容器,其视口与内容控件的尺寸管理直接影响界面布局的稳定性。掌握这些基础技术,能够快速构建具备实时交互、行为定制和内容滚动的桌面工具,广泛应用于绘图板、日志面板、参数配置界面等场景。本文围绕鼠标坐标获取、禁止右键功能、QScr

weixin_34342992的博客 425

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

上一篇: 【QT入门】 QScrollArea实际运用之导航栏设计
下一篇: 【QT入门】QWidget类的简单介绍
从一的
博客等级 码龄5年 1995粉丝 213原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值