【C++ Qt】快速上手 顯?類控件(Label、LCDNumber、ProcessBar、CalendarWidget)


每日激勵:“不設限和自我肯定的心態:I can do all things。 — Stephen Curry”

緒論?:
本文圍繞Qt中常用的顯示類控件展開,重點講解了 QLabel(文本/圖片顯示)、QLCDNumber(數字顯示)、QProgressBar(進度條) 和 QCalendarWidget(日歷控件) 的核心屬性、使用場景及代碼實例,幫助快速上手Qt界面開發中的基礎顯示功能。
————————
早關注不迷路,話不多說安全帶系好,發車啦(建議電腦觀看)。

在這里插入圖片描述

顯示類控件

Label

QLabel 可以?來顯??本和圖?

屬性說明
textQLabel 中的?本
textFormat?本的格式
Qt::PlainText 純?本(最普通的文本)
Qt::RichText 富?本(?持 html 標簽、內容更豐富的文本、就類似word工具)
Qt::MarkdownText markdown 格式 (提供各種特殊符號表示各種的樣式 / 格式)
Qt::AutoText 根據?本內容?動決定?本格式
pixmapQLabel 內部包含的圖?.
scaledContents設為 true 表?內容?動拉伸填充 QLabel 、設為 false 則不會?動拉伸(讓圖片自動填充滿)
alignment對??式。可以設置?平和垂直?向如何對?(靠左/靠右/居中…)
wordWrap設為 true 內部的?本會?動換?. 設為 false 則內部?本不會?動換?
indent設置?本縮進?平和垂直?向都?效.
margin內部?本和邊框之間的邊距。不同于于 indent, 但是是上下左右四個?向都同時有效. ? indent 最多只是兩個?向有效(具體哪兩個?向有效取決于 alignment )
openExternalLinks是否允許打開?個外部的鏈接. (當 QLabel ?本內容包含 url 的時候涉及到)
buddy給 QLabel 關聯?個 “伙伴” , 這樣點擊 QLabel 時就能激活對應的伙伴
例如:伙伴如果是?個 QCheckBox, 那么該 QCheckBox 就會被選中

代碼實例

設置文本格式:

  1. ui文件中拖拽三個 label 控件
  2. 構造函數中設置label的文本格式(textFormat)
    1. 第一個:純文本(setTextFormat)、setText:這是一段純文本
    2. 第二個:富文本…、使用<b>xxxxx</b>加粗標簽
    3. 第三個:markdown、使用 # 設置標題

比較簡單源碼就不放了(如下)
在這里插入圖片描述

設置圖片QPixmap

  1. 拖拽label、使用qrc機制,添加圖片
  2. 將QLabel設置和窗口一樣大,并且把QLabel左上角設置到窗口的左上角這里
    1. 將label的geometry的x y設置成 0 0 并且獲取窗口的寬高給到label(直接this->width、… 即可)
    2. 直接寫死某個數值,稱為 “硬編碼”(要保證數值不改變)
    3. label添加圖片:創建QPixmap對象構造圖片路徑
    4. 將該對圖片象設置(setpixmap)到label中、其中可能還會填不滿因為要保證圖片大小足夠大
    5. 若不夠大可以通過scaledContents進行拉伸填充

源碼如下:

#include "widget.h"
#include "ui_widget.h"
#include <QLabel>
Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);QLabel* label = new QLabel(this);label->setGeometry(0,0,this->width(),this->height());//獲取窗口的寬和高給到labellabel->setScaledContents(true);QPixmap pixmap(":/1.jpg");label->setPixmap(pixmap);
}Widget::~Widget()
{delete ui;
}

在這里插入圖片描述

但可能還會有點問題,因為是在構造函數中設置的尺寸,所以這個尺寸設置是一次性的,若窗口再次發生改變(修改窗口大小)QLabel中的圖片就不會變化了

解決辦法
在這里插入圖片描述

  1. 首先了解概念:Qt中的操作會有兩類概念:信號、事件
  2. 當用戶拖拽修改窗口大小的時候,就會觸發resize事件(resizeEvent)、從A拖到B的過程的他是 連續的一系列的觸發 resizeEvent 事件
  3. 可以讓 Widget 窗口類,重寫父類QWidget的resizeEvent虛函數,該函數在鼠標拖動窗口尺寸時會被返回調用執行,所以重寫該函數,當父類調用該函數時就會調用到子類中的重寫的該函數(多態~)
  4. 重寫(聲明+定義)void resizeEvent(QResizeEvent* event)
    1. 此時的event就會窗口的實時大小
    2. 所以對于label的大小就能通過event對象獲取高度和寬度動態的改變

附:其中QResizeEvent不能直接使用,需要添加頭文件 # include <QResizeEvent>

源碼如下:

#include "widget.h"
#include "ui_widget.h"
#include <QLabel>
#include <QDebug>
#include <QResizeEvent>
Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);ui->label->setGeometry(0,0,this->width(),this->height());ui->label->setScaledContents(true);//設置自動拉伸QPixmap pixmap(":/1.jpg");ui->label->setPixmap(pixmap);//設置圖片
}Widget::~Widget()
{delete ui;
}void Widget::resizeEvent(QResizeEvent * event)
{qDebug() << event->size();//打印查看當前窗口大小ui->label->setGeometry(0,0,event->size().width(),event->size().height());//ui->label->setGeometry(0,0,this->width(),this->height());
}

在這里插入圖片描述

?本對?, ?動換?, 縮進, 邊距

在這里插入圖片描述

  1. 構建幾個label,設置邊框:QFrame

    1. 通過設置邊框 frameShape:Box
  2. 構造函數中設置 label 的不同屬性
    在這里插入圖片描述

    1. Text:“這是一段文本”

    2. Alignment:
      在這里插入圖片描述

      1. Qt::AlignHCenter(水平居中)
      2. Qt::AlignVCenter(垂直居中)
      3. AlignRight(靠右對齊)
      4. AlignTop(靠上對齊)…
        在這里插入圖片描述
    3. 自動換行(WordWrap):

      1. 自動換行:
        在這里插入圖片描述

      2. 不換行:
        在這里插入圖片描述

    4. 設置縮進

      1. Text:文本

      2. Indent:50(單位:像素)
        在這里插入圖片描述

      3. 注意:此處的縮進即使文本換行了,后面的也仍然會縮進,而非首行縮進

      4. 若要實現首行縮進可以使用:CSS(QSS)中 text-indent 屬性實現首行縮進
        在這里插入圖片描述

    5. 設置邊距

      1. Margin:邊距(單位:像素)
      2. 其中上下左右都會設置到,其中當邊距過大可能會導致文本無法顯示(如下圖,并且還保持縮進)
        在這里插入圖片描述
    6. QLabel 伙伴
      在這里插入圖片描述

      1. ui文件中拖拽兩個 RadioButuon:選項1/2 、和兩個label 快捷鍵
      2. 并設置快捷鍵:設置方法在文本后面添加 (&A),A代表某個鍵位的值 如上&T
      3. 將label通過Buddy進行設置和RadioButuon的關聯
      4. QLabel中的文本可以指定快捷鍵
      5. 但功能較弱,必須 在文本中使用 & 跟上字符來表示快捷鍵(不過加上括號會更好理解點!)
        在這里插入圖片描述

LCD Number

QLCdNumber是一個專門用來顯示數字的控件,類似“老式計算機”的效果
在這里插入圖片描述

屬性說明
intValueQLCDNumber 顯?的數字值(int).
valueQLCDNumber 顯?的數字值(double) 和 intValue 是聯動的.
例如給 value 設為 1.5, intValue 的值就是 2
另外, 設置 value 和 intValue 的?法名字為 display , ?不是 setValue 或者 setIntValue .
digitCount顯??位數字
mode數字顯?形式.
1.QLCDNumber::Dec :?進制模式,顯?常規的?進制數字。
2. QLCDNumber::Hex :?六進制模式,以?六進制格式顯?數字。
3. QLCDNumber::Bin :?進制模式,以?進制格式顯?數字。
4. QLCDNumber::Oct :?進制模式,以?進制格式顯?數字。 只有?進制的時候才能顯??數點后的內容.
segmentStyle設置顯??格.
1. QLCDNumber::Flat :平?的顯??格,數字呈現在?個平坦的表?上。
2. QLCDNumber::Outline :輪廓顯??格,數字具有清晰的輪廓和陰影效果。
3. QLCDNumber::Filled :填充顯??格,數字被填充顏?并與背景區分開。
smallDecimalPoint設置?較?的 ?數點.

其中注意在設置value和intValue的方法名字display,而不是setValue/setIntValue(這種設計是不太好的所以自己設計時就盡量保持一致)

實例:倒計時 QTimer的使用

  1. ui文件中拖拽上 LCD Number
  2. 設置顯示初始值:10,然后要實現每秒鐘 -1 的效果
  1. C++標準庫中沒有提供定時器的實現,boost里面提供了對應的功能
  2. Qt中也封裝了對應的定時器(結合信號槽機制)
  3. QTimer 這個類對象,就會自動不斷 產生 timeout 信號
  • 可以通過start方式來開啟定時器
  • 并且參數中設定觸發timeout信號的周期,
  • 結合connect,把這個 timeout 信號綁定到槽函數中
  • 就可以執行持續觸發槽函數,從而修改LCDNumber中的數字的邏輯
  1. 將QTimer對象寫成 類成員變量,并構造到對象樹中
  2. 把 QTimer 的 timeout 信號和咱們自己的槽函數(handle)進行連接
  3. 啟動定時器,參數是觸發timeout的周期,單位是 ms
  4. 編寫handle槽函數(定義在Widget的類函數)
    1. 先拿到LCDNumber中的數字,通過ui找到lcdNumber在獲取數字(intvalue)
    2. 判斷value是否小于0
      1. 若小于則調用stop,停止定時器
    3. 每次將lcdNumber的value中的值設置(display) - 1

在這里插入圖片描述
在這里插入圖片描述

源碼:
在這里插入圖片描述

widget.cpp
#include "widget.h"
#include "ui_widget.h"
#include <QTimer>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);ui->lcdNumber->display(10);//注意是displaytimer = new QTimer(this);//注意不要使用成 QTimetimer->start(1000);//發送信號的時間 10000connect(timer,&QTimer::timeout,this,&Widget::handle);}Widget::~Widget()
{delete ui;
}void Widget::handle(){int v = ui->lcdNumber->intValue();if(v > 0){ui->lcdNumber->display(v - 1);//注意是display}else{timer->stop();//暫定}
}

不使用Qtime來實現:

  1. 拖拽LCDNumber
  2. 獲取 lcd 對象中的 intvalue(整形)
  3. 循環判斷value值(若小于0則直接退出)
    1. 內部使用C++11的 std::this_thread::sleep_for(std::chrono::seconds(1)) 進行休眠1s
    2. 每次設置value-1
  4. 但寫在 widget 構造函數中并沒有效果,因為顯示在構造后面(具體如下圖)
    在這里插入圖片描述

所需要需要修改:

  1. 使用thread(這是操作系統提供的api)
    1. 內部使用lambda表達式
    2. 實現和上面一樣
    3. 但這樣寫也會出現錯誤,因為界面有一個專門的線程負責維護更新(主線程、main函數所在的線程),對于GUI來說,內部包含了許多隱藏狀態,Qt為了保證修改界面的過程中,線程是不會收到影響的,Qt禁止了其他線程直接修改界面
      在這里插入圖片描述

因為:

  1. 對于一個圖形化界面會有許多的變量,進很容易出現線程安全,所以就要求所有對界面的修改操作必須在主線程中完成!!
  2. 對于Qt的槽函數來說,默認情況下,槽函數都是由主線程調用的,所以使用槽函數修改界面是沒問題的
  3. a.exec 就會時主線程進入“事件循環”,一直循環,每執行一次循環,都會有固定的事情要操作(其中的槽函數調用就是通過這里完成)

ProgressBar進度條

使? QProgressBar 表??個進度條

一些核心屬性:

屬性說明
minimum進度條最?值
maximum進度條最?值
value進度條當前值
alignment?本在進度條中的對??式:
Qt::AlignLeft : 左對?
Qt::AlignRight : 右對?
Qt::AlignCenter : 居中對?
Qt::AlignJustify : 兩端對?
textVisible進度條的數字是否可?.
orientation進度條的?向是?平還是垂直
invertAppearance是否是朝反?向增?進度
textDirection?本的朝向.
format展?的數字格式.
%p :表?進度的百分?(0-100) 、
%v :表?進度的數值(0-100)、
%m :表?剩余時間(以毫秒為單位) 、
%t :表?總時間(以毫秒為單位)

實例:進度條

讓個這個進度條的進度跟隨時間增長(每隔100ms 進度條數值增長1)

  1. 拖拽ProgressBar到界面上
  2. 創建Qtimer 成員變量 timer
  3. 構造函數中:
    1. new上空間并且掛上對象樹
    2. 連接connect連接槽函數
      1. 將 timer 對象和 handle 進行連接,通過 Qtimer::timeout 信號進行觸發
      2. 創建handle成員函數
    3. 注意啟動timer定時器(100ms)
  4. handle函數:
    1. 獲取當前進度條的當前數值,通過ObjectName調用value獲取
    2. 判斷若value >= 100
      1. 代表進度條滿了就可以停止定時器了
      2. 并直接返回
    3. 每次 讓value值增加1

源碼:
在這里插入圖片描述

#include "widget.h"
#include "ui_widget.h"
#include <QTimer>
Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);timer = new QTimer();timer->start(100);//設置100ms周期的持續發送timeout信號//設置槽函數,讓其實現ProcessBar的遞增connect(timer,&QTimer::timeout,this,&Widget::handle);
}Widget::~Widget()
{delete ui;
}void Widget::handle(){//1. 獲取process的值int value = ui->progressBar->value();ui->progressBar->setValue(value+1);//每次進來都讓其+1if(value >= ui->progressBar->maximum()){//若夠了或者timer->stop();//停止信號}}

在這里插入圖片描述


其中在widget.h中用到了QTimer,卻可以不用該文件中聲明頭文件,是因為在其他文件中聲明,所以就能使用(在.h中不添加、在.cpp中添加)

  • 因為在Qt內部提供了體術技巧:Qt中有一個專門的頭文件,這個頭文件包含了Qt中所有類的前置聲明
  • 這個頭文件,一般不會直接接觸到,但是包含了其他Qt的頭文件,都會間接包含到這個頭文件中,當然這并不代表你可以不寫頭文件,你必須在某個文件中添加頭文件

為啥要提供這種技巧?
主要是解決編譯速度的問題~

  1. 因為C/C++代碼編譯速度是較慢的
  2. 因為include頭文件的文本替換是比較慢的~
  3. 因此盡可能減少頭文件的個數,就能有效編譯時間,Qt 使用 class 前置聲明的方式盡量減少頭文件的包含(這樣某個文件中定義了該頭文件其他文件就不需要再包含了)

一些互聯網大廠,甚至會有專門的“編譯集群”(分布式編譯)

使用QSS將進度條改成紅色的

QSS機制可以使用 styleSheet 通過樣式來修改進度條的顏?.

  1. 實現方法點擊processBar控件右側屬性找到 styleSheet / 右擊控件選擇 “編輯樣式表”
  2. 內部樣式設置
    QProgressBar::chunk {background-color: #FF0000;}
    1. QProgressBar::chunk:代表指定控件,選擇器針對那個控件生效
    2. {} 內部填寫樣式
    

其中注意的是:進度條具體的進度設置一般是根據時間任務類型靈活設置的(這里就簡單的實現了)
例如:要讀取某個文件,就可以先獲取該文件的總大小,每讀取一部分數據(就可以算出讀了多少數據段)進行更新進度條的數值

Calendar Widget

核?屬性

屬性說明
selectDate當前選中的?期
minimumDate最??期
maximumDate最??期
firstDayOfWeek每周的第?天(也就是?歷的第?列) 是周?
gridVisible是否顯?表格的邊框
selectionMode是否允許選擇?期
navigationBarVisible?歷上?標題是否顯?
horizontalHeaderFormat?歷上?標題顯?的?期格式
verticalHeaderFormat?歷第?列顯?的內容格式
dateEditEnabled是否允許?期被編輯

重要信號

信號說明
selectionChanged(const QDate&)當選中的?期發?改變時發出
activated(const QDate&)當雙擊?個有效的?期或者按下回?鍵時發出,形參是?個QDate類型,保存了選中的?期
currentPageChanged(int, int)當年份?份改變時發出,形參表?改變后的新年份和?份

實例

  1. ui文件中拖拽 calendar Widget、label
  2. 通過label中顯示選擇的日期
  3. 通過selectionChanged信號進行獲取用戶選中的日期,創建信號槽函數
  4. 槽函數編寫:
    1. 獲取選中日期 (selectDate)放到QDate對象中
    2. 將label中的文本修改為了 date 時間(需要配合QDate::toString轉換成字符串)
void Widget::on_calendarWidget_selectionChanged()
{
//    qDebug() << ui->calendarWidget->selectedDate();QDate date = ui->calendarWidget->selectedDate();ui->label->setText(date.toString());
}

在這里插入圖片描述


本章完。預知后事如何,暫聽下回分解。

如果有任何問題歡迎討論哈!

如果覺得這篇文章對你有所幫助的話點點贊吧!

持續更新大量C++ Qt細致內容,早關注不迷路。

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/78769.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/78769.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/78769.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

從困局到破局的AI+數據分析

從困局到破局的AI數據分析 困局&#xff1a;數據分析的四道高墻破局&#xff1a;AI賦能全流程數據分析遠見&#xff1a;AI數據分析的革命性意義 數據是新時代的石油&#xff0c;人工智能是煉油廠。當兩者強強聯合&#xff0c;一場數據分析的革命正悄然發生。 多少次你面對Excel…

IGH 匯川SV660N調試

EoE 目前的方式是將eoe 關閉, 這需要重新配置編譯ec_master sudo ./configure --disable-8139too --enable-generic --enable-r8169 --disable-eoe --enable-coe[426163.348589] EtherCAT 0: Master thread exited. [426163.348592] EtherCAT 0: Stopping EoE thread. [426163.…

Java基礎361問第16問——枚舉為什么導致空指針?

我們看一段代碼 public enum Color {RED, BLUE, YELLOW;public static Color parse(String color) {return null;} }public static void main() {Color color Color.parse("");// 極具迷惑性&#xff0c;大家日常開發肯定這么寫過switch (color) {case RED:break;c…

10.Excel:快速定位目標值

一 批量刪除 1.如何使用 快捷鍵 CTRLG 補充&#xff1a;直接選擇定位條件。 2.作用 1.批量刪除工作表中的圖片 補充&#xff1a;無法通過框選的方式選中這些圖片進行刪除。 這樣只框選了表格&#xff0c;無法框選圖片。因為圖片在excel中被認為是一個對象&#xff0c;對象無法通…

快樂數(雙指針解法)

題目鏈接202. 快樂數 - 力扣&#xff08;LeetCode&#xff09; 題目拆解 1 取一個正整數每一位的平方和為&#xff0c;如果為1那么直接可以判定為快樂數&#xff0c;如果不為1&#xff0c;就重復這個過程&#xff0c;直到出現1 2 實際上&#xff0c;這道題只有兩種情況&#xf…

進程控制的學習

進程控制&#xff08;Process Control&#xff09;是指操作系統對進程的創建、執行、暫停、恢復、終止等一系列狀態變化進行管理和協調的過程。 簡單說&#xff0c;就是系統讓各個程序能有序地運行&#xff0c;合理地使用CPU和資源&#xff0c;而不會互相沖突或者出錯。 主要包…

818協議知識筆記

一、概念 Fibre CHannel-Audio Vedio standard;FC-AV FC-FS:Fibre channel framing and signaling interface; FC-PI:fibre channel physical interfaces 二、術語 VGA,SVGA,XGA,WXGA,SXGA,SXGA,WSXGA,UXGA,1440P; ICD:interface control document接口控制文檔 CRC對幀頭和數據…

AI大模型學習十二:?嘗鮮ubuntu 25.04 桌面版私有化sealos cloud + devbox+minio對象存儲測試和漫長修改之路

一、說明 前面已經安裝完成&#xff0c;這里我們測試對象存儲 AI大模型學習十一&#xff1a;?嘗鮮ubuntu 25.04 桌面版私有化sealos cloud devboxminio&#xff0c;實戰運行成功-CSDN博客https://blog.csdn.net/jiangkp/article/details/147424823?spm1011.2415.3001.5331 二…

SpringBoot的自動掃描特性-筆記

1.Spring Boot 的自動掃描特性介紹 Spring Boot 的自動掃描&#xff08;Component Scanning&#xff09;是其核心特性之一。通過注解SpringBootApplication 簡化了 Bean 的管理&#xff0c;允許框架自動發現并注冊帶有特定注解的類為 Spring 容器中的 Bean&#xff08;特定注解…

基于nodeJS代碼的通過爬蟲方式實現tiktok發布視頻(2025年4月)

1、將真實的tiktokstudio平臺的cookie填到代碼里的cookie變量里,修改python代碼里的ticket,ts, privateKey,以及videoPath,timing等變量的值,最后運行python腳本即可; 2、運行之前根據import提示安裝一些常見依賴,比如node-fetch等; 3、運行時候可能系統需要科學上網…

數據一致性問題剖析與實踐(四)——競態條件競爭導致的一致性問題

一、前言 之前我們討論了幾種場景的一致性問題 冗余數據存儲中的一致性問題分布式共識中的一致性問題單機事務中的一致性問題分布式事務中的一致性問題 本文將圍繞競態條件競爭中的一致性問題展開討論分析。 二、 問題定義 競態條件&#xff08;Race Condition&#xff09…

PCL點云處理之基于FPFH特征的SAC-IA全局配準算法 (二百四十六)

提示: 有相關點云需求的可以私信 PCL 點云處理之基于 FPFH 特征的 SAC - IA 全局配準算法 一、前言二、相關概念介紹2.1 點云2.2 FPFH 特征2.3 SAC - IA 算法三、SAC - IA 全局配準算法原理3.1 FPFH 特征提取3.2 SAC - IA 配準過程四、代碼實現與分析4.1 完整代碼4.2 代碼分析…

JavaScript性能優化實戰:從瓶頸定位到極致提速

JavaScript作為現代Web應用的核心&#xff0c;其性能直接影響用戶體驗。本文將從性能瓶頸定位、高頻優化場景、現代API利用三個維度&#xff0c;結合代碼示例和Chrome DevTools實戰&#xff0c;為你構建完整的性能優化體系。 一、性能分析&#xff1a;精準定位瓶頸 1.1 Chrome…

JavaScript 頁面刷新:從傳統到現代的全面解析

在 Web 開發中&#xff0c;"刷新"是一個基礎但極其重要的功能。本文將全面探討頁面刷新的實現方式&#xff0c;從傳統方法到現代最佳實踐&#xff0c;深入解析每一種方案的原理和適用場景&#xff0c;并給出實用代碼示例。 一、理解頁面刷新的本質 在 Web 開發中&am…

NLP高頻面試題(五十五)——DeepSeek系列概覽與發展背景

大型模型浪潮背景 近年來,大型語言模型(Large Language Model, LLM)領域發展迅猛,從GPT-3等超大規模模型的崛起到ChatGPT的橫空出世,再到GPT-4的問世,模型參數規模和訓練數據量呈指數級增長。以GPT-3為例,參數高達1750億,在570GB文本數據上訓練,顯示出模型規模、數據…

鴻蒙系統應用開發全棧指南

一、開發環境搭建與工具鏈配置 1. DevEco Studio深度解析 作為鴻蒙生態的官方IDE&#xff0c;DevEco Studio 4.2版本已集成ArkTS 3.0編譯器與AI代碼助手功能。安裝過程需注意&#xff1a; 系統要求&#xff1a;Windows 10 21H2或macOS Monterey以上環境依賴&#xff1a;Node…

iOS18 MSSBrowse閃退

iOS18 MSSBrowse閃退 問題方案結果 問題 最近升級了電腦系統(15.4.1)&#xff0c;并且也升級了xcode(16.3)開發工具。之后打包公司很早之前開發的項目。 上線之后發現在蘋果手機系統18以上&#xff0c;出現了閃退問題。 涉及到的是第三方MSSBrowse&#xff0c;在選擇圖片放大的…

鴻蒙-使用Charles抓包

目錄 前言鴻蒙應用中的網絡請求rcp 抓包http 抓包 以下是排查過程&#xff0c;沒啥參考價值發送文件http 抓包報錯 前言 抓包&#xff0c;對于各位開發者應該不陌生&#xff0c;各種抓包工具應該的都聽說過&#xff0c;像 charles、fiddler、Wireshark?等。在 Android 和 iOS…

回顧|Apache Cloudberry? (Incubating) Meetup·2025 杭州站

2025 年 4 月 19 日&#xff0c;由酷克數據與中啟乘數聯合舉辦的 Apache Cloudberry? (Incubating) Meetup 杭州站在浙江省杭州市濱江區濱江會展中心成功舉辦。本次活動邀請了 Cloudberry PPMC 團隊成員、活躍內核貢獻者以及中興 EBASE-A、阿里云 ADB-PG、網易、中啟乘數等多…

Linux網絡編程 深入Linux網絡棧:原始套接字鏈路層實戰解析

之前我們編程都是在應用層&#xff0c;只需在地址結構體中傳 地址與端口號。然后協議棧在傳輸層&#xff0c;與網絡層幫我們進行數據的封裝。但這里我們要學的是在鏈路層進行編程 這里我想說一下&#xff0c;當數據到達鏈路層&#xff0c;有三個分支&#xff1a;ARP&#xff0c…