Qt窗?的學習(一)

????????Qt窗?是通過QMainWindow類來實現的。 QMainWindow是?個為??提供主窗?程序的類,繼承?QWidget類,并且提供了?個預定義的 布局。QMainWindow包含?個菜單欄(menubar)、多個?具欄(toolbars)、多個浮動窗?(鉚 接部件)(dockwidgets)、?個狀態欄(statusbar)和?個中?部件(centralwidget),它是許多應 ?程序的基礎,如?本編輯器,圖?編輯器等。如下圖為QMainwindow中各組件所處的位置:

?1. 菜單欄

????????Qt 中的菜單欄是通過QMenuBar這個類來實現的。?個主窗?最多只有?個菜單欄。位于主窗?頂部、主窗?標題欄下?。 菜單欄中包含菜單.菜單中包含菜單項

?菜單欄(QMenuBar)->菜單(QMenu)->菜單項(QAction)

1.1使用代碼創建菜單結構:

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);// 1. 先創建一個菜單欄//釋放窗口時,該對象也會被釋放QMenuBar* menuBar = new QMenuBar();this->setMenuBar(menuBar);// 2. 創建菜單QMenu* menu1 = new QMenu("文件");QMenu* menu2 = new QMenu("編輯");QMenu* menu3 = new QMenu("視圖");menuBar->addMenu(menu1);menuBar->addMenu(menu2);menuBar->addMenu(menu3);// 3. 給菜單添加菜單項QAction* action1 = new QAction("新建");QAction* action2 = new QAction("打開");QAction* action3 = new QAction("保存");QAction* action4 = new QAction("另存為");QAction* action5 = new QAction("退出");menu1->addAction(action1);menu1->addAction(action2);menu1->addAction(action3);menu1->addAction(action4);menu1->addAction(action5);// 4. 給 action 添加信號槽//點擊菜單的時候,會處理響應connect(action1, &QAction::triggered, this, &MainWindow::handle);connect(action5, &QAction::triggered, this, &MainWindow::close);
}MainWindow::~MainWindow()
{delete ui;
}void MainWindow::handle()
{qDebug() << "觸發新建操作!";
}

執行效果如下:

1.2 給菜單配置快捷鍵

????????給菜單和菜單項設置快捷鍵,設置好的快捷鍵就可以搭配alt來進行使用了。

(文件(&F));通過給文本中添加&F這樣的操作,就是添加了快捷鍵alt+F

#include "mainwindow.h"
#include "ui_mainwindow.h"MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);// 創建菜單欄QMenuBar* menuBar = new QMenuBar();this->setMenuBar(menuBar);// 創建菜單QMenu* menu1 = new QMenu("文件 (&F)");QMenu* menu2 = new QMenu("編輯 (&E)");QMenu* menu3 = new QMenu("視圖 (&V)");QMenu* menu4 = new QMenu("關于 (&A)");menuBar->addMenu(menu1);menuBar->addMenu(menu2);menuBar->addMenu(menu3);menuBar->addMenu(menu4);// 創建菜單項QAction* action1 = new QAction("菜單項1");QAction* action2 = new QAction("菜單項2");QAction* action3 = new QAction("菜單項3");QAction* action4 = new QAction("菜單項4");menu1->addAction(action1);menu2->addAction(action2);menu3->addAction(action3);menu4->addAction(action4);
}MainWindow::~MainWindow()
{delete ui;
}

?

1.3 給qaction創建快捷鍵

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);QMenuBar* menuBar = new QMenuBar();this->setMenuBar(menuBar);QMenu* menu1 = new QMenu("文件(&F)");QMenu* menu2 = new QMenu("視圖(&V)");menuBar->addMenu(menu1);menuBar->addMenu(menu2);// 創建四個菜單項QAction* action1 = new QAction("action1 (&Q)");QAction* action2 = new QAction("action2 (&W)");QAction* action3 = new QAction("action3 (&E)");QAction* action4 = new QAction("action4 (&R)");menu1->addAction(action1);menu1->addAction(action2);menu2->addAction(action3);menu2->addAction(action4);// 不綁定槽函數, 通過快捷鍵選中也沒啥反應~~connect(action1, &QAction::triggered, this, &MainWindow::handle1);connect(action2, &QAction::triggered, this, &MainWindow::handle2);connect(action3, &QAction::triggered, this, &MainWindow::handle3);connect(action4, &QAction::triggered, this, &MainWindow::handle4);
}MainWindow::~MainWindow()
{delete ui;
}void MainWindow::handle1()
{qDebug() << "handle1";
}void MainWindow::handle2()
{qDebug() << "handle2";
}void MainWindow::handle3()
{qDebug() << "handle3";
}void MainWindow::handle4()
{qDebug() << "handle4";
}

1.4 菜單欄中添加子菜單

????????菜單欄->菜單->子菜單->子菜單->菜單項

? ? ? ? 通過Qmenu提供的addMenu給某個菜單添加子菜單;

#include "mainwindow.h"
#include "ui_mainwindow.h"MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);QMenuBar* menuBar = new QMenuBar();this->setMenuBar(menuBar);QMenu* menuParent = new QMenu("父菜單");QMenu* menuChild = new QMenu("子菜單1");menuBar->addMenu(menuParent);menuParent->addMenu(menuChild);QAction* action1 = new QAction("菜單項1");QAction* action2 = new QAction("菜單項2");menuChild->addAction(action1);menuChild->addAction(action2);QMenu* menuChild2 = new QMenu("子菜單2");menuChild->addMenu(menuChild2);
}MainWindow::~MainWindow()
{delete ui;
}

執行效果如下所示:

1.5 添加分割線

?菜單里菜單項特別多,就可以通過分割線,進行分組,QMenu中提供了addseparator這樣的函數。

MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);QMenuBar* menuBar = new QMenuBar();this->setMenuBar(menuBar);QMenu* menu = new QMenu("菜單");menuBar->addMenu(menu);QAction* action1 = new QAction("菜單項1");QAction* action2 = new QAction("菜單項2");menu->addAction(action1);menu->addSeparator();menu->addAction(action2);
}

1.6 添加圖標

? ? ? ? 使用qrc文件引入icon圖片:

#include "mainwindow.h"
#include "ui_mainwindow.h"MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);// QMenuBar* menuBar = new QMenuBar();QMenuBar* menuBar = this->menuBar();this->setMenuBar(menuBar);QMenu* menu = new QMenu("菜單");menu->setIcon(QIcon(":/open.png"));menuBar->addMenu(menu);QAction* action1 = new QAction("菜單項1");action1->setIcon(QIcon(":/open.png"));QAction* action2 = new QAction("菜單項2");action2->setIcon(QIcon(":/save.png"));menu->addAction(action1);menu->addAction(action2);
}MainWindow::~MainWindow()
{delete ui;
}

????????如果給QMenu設置圖標,當前QMenu是長在QMenuBar上的,此時文本就不顯示圖標覆蓋了文本。

????????QMenu是子菜單,圖標和文本是都能顯示的

1.7 內存泄漏問題


// QMenuBar* menuBar = new QMenuBar();
如果咱們創建的項目,沒有勾選自動生成ui文件,此時上述代碼是ok的
如果勾選了自動生成ui文件,上述代碼則會引起內存泄露
因為Qt已經給你生成了一個QMenuBar了;之前程序自己已經創建好了一個QMenuBar
當設置新的QMenuBar進來的時候,就會導致舊的
QMenuBar脫離了Qt的對象樹了.意味著后續就無法對這個對象進行釋放了;上述程序如果窗口關閉,對象樹釋放,此時進程也就結束了.
進程結束,自然所有內存都回收給系統,上述內存泄露也不會造成影響
但是如果這樣的代碼是出現在一個多窗口的程序中:
如果涉及到窗口的頻繁跳轉切換(窗口的頻繁創建銷毀),上述內存泄露就會更嚴重一些所以為了防止內存泄漏,修改為如下代碼:
QMenuBar* menuBar = this->menuBar();
1.如果QMenuBar已經存在,直接獲取并返回
2.如果QMenuBar不存在,就先創建一個新的,再返回
如果是獲取到已經存在的QMenuBar,這里的設置就是自己替換自己,
仍然在對象樹上

2.??具欄

????????更用QTooBar表示工具欄對象,一個窗口可以有多個工具欄,也可以沒有。工具欄往往也可以手動移動位置。

?Action如果出現在工具欄上,也會產生圖標覆蓋文本這樣的情況。

如果一個QAction既是QMenu的子元素,又是QToolBar的子元素,釋放的時候,只會釋放一次,不會重復delete。

代碼如下:

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QToolBar>
#include <QDebug>MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);// 創建菜單欄QMenuBar* menuBar = this->menuBar();this->setMenuBar(menuBar);// 創建菜單QMenu* menu = new QMenu("文件");menuBar->addMenu(menu);// 工具欄是需要手動創建出來的. 自身不會自動創建.QToolBar* toolBar = new QToolBar();this->addToolBar(toolBar);// 創建兩個菜單項QAction* action1 = new QAction("保存");QAction* action2 = new QAction("打開");// action1->setToolTip("點擊這里保存文件");action1->setIcon(QIcon(":/save.png"));action2->setIcon(QIcon(":/open.png"));// 菜單項還可以放到菜單中menu->addAction(action1);menu->addAction(action2);// 菜單項放到工具欄中toolBar->addAction(action1);toolBar->addAction(action2);connect(action1, &QAction::triggered, this, &MainWindow::handle1);connect(action2, &QAction::triggered, this, &MainWindow::handle2);
}MainWindow::~MainWindow()
{delete ui;
}void MainWindow::handle1()
{qDebug() << "handle1";
}void MainWindow::handle2()
{qDebug() << "handle2";
}

3.狀態欄

????????狀態欄是應?程序中輸出簡要信息的區域。。?般位于主窗?的最底部,?個窗?中最多只能有?個狀 態欄。

代碼如下:

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QLabel>
#include <QProgressBar>
#include <QPushButton>MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);// 存在就獲取, 不存在就創建QStatusBar* statusBar = this->statusBar();// 如果狀態欄沒有被創建, 這樣的設置是必要的.// 如果狀態欄已經在窗口中存在, 這樣的設置其實意義不大, 但是也沒副作用. 仍然保留.this->setStatusBar(statusBar);// 顯示一個臨時的信息.// statusBar->showMessage("這是一個狀態消息");// 給狀態欄中添加子控件QLabel* label = new QLabel("這是一個 QLabel");statusBar->addWidget(label);//    QLabel* label2 = new QLabel("這個是另一個 QLabel");
//    statusBar->addWidget(label2, 2);QProgressBar* progressBar = new QProgressBar();//這是進度條progressBar->setRange(0, 100);progressBar->setValue(50);statusBar->addWidget(progressBar);QPushButton* button = new QPushButton("按鈕");statusBar->addPermanentWidget(button);
}MainWindow::~MainWindow()
{delete ui;
}

4. 浮動窗口

????????在Qt中是使用QDockWidget來實現的。

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDockWidget>
#include <QLabel>
#include <QPushButton>
#include <QVBoxLayout>MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);// 給主窗口添加一個子窗口.QDockWidget* dockWidget = new QDockWidget();// 使用 addDockWidget 方法, 把浮動窗口加入到子窗口中.this->addDockWidget(Qt::LeftDockWidgetArea, dockWidget);// 浮動窗口也是可以設置標題的.dockWidget->setWindowTitle("這是浮動窗口");// 給浮動窗口內部, 添加一些其他的控件.// 不能直接給這個浮動窗口添加子控件, 而是需要創建出一個單獨的 QWidget, 把要添加的控件加入到 QWidget 中.// 然后再把這個 QWidget 設置到 dockWidget 中.QWidget* container = new QWidget();dockWidget->setWidget(container);// 創建布局管理器, 把布局管理器設置到 QWidget 中QVBoxLayout* layout = new QVBoxLayout;container->setLayout(layout);// 創建其他控件添加到 layout 中.QLabel* label = new QLabel("這是一個 QLabel");QPushButton* button = new QPushButton("這是按鈕");layout->addWidget(label);layout->addWidget(button);// 設置浮動窗口允許停靠的位置dockWidget->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::TopDockWidgetArea);
}MainWindow::~MainWindow()
{delete ui;
}

執行效果如下:

5. 對話框

????????Qt中使用QDialog類表示對話框,。Qt常 ?的內置對話框有:QFiledialog(?件對話框)、QColorDialog(顏?對話框)、QFontDialog (字體對話框)、QInputDialog(輸?對話框)和QMessageBox(消息框)。

????????基于QDialog作為父類創建出來的程序窗口和之前通過QWidget創建出來的非常相似的。

????????實際開發中,往往不是直接在創建項目的時候繼承自QDialog.而是在代碼中,創建額外的類,讓額外的類繼承自QDialog。

????????主窗口,一般不會作為一個對話框。主窗口可以再產生出一些其他的對話框。

一個簡單的例子:
????????主窗口中,通過點擊按鈕,彈出一個新的對話框。
????????QDialog其實也是QWidget的子類.QWidget的各種屬性方法,QDialog也能使用。不同于界面上的其他控件.此處QDialog每次按下按鈕,都會創建一個新的QDialog對象,并進行顯示。每次點擊都會創建新的對話框對象。
?????????一個程序運行過程中,可以無數次點擊這個按鈕,進一步的就產生出無數個這樣的對象了=>內存泄露

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDialog>MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);
}MainWindow::~MainWindow()
{delete ui;
}void MainWindow::on_pushButton_clicked()
{QDialog* dialog = new QDialog(this);dialog->setWindowTitle("對話框的標題");// 設置對話框的尺寸dialog->resize(400, 300);// 通過 show 方法就可以顯示出對話框.dialog->show();// delete dialog;// 正確做法應該是把 delete 和關閉按鈕的點擊信號關聯起來.// 在用戶點擊關閉的時候, 觸發 delete.// Qt 為了讓咱們寫的方便, 直接給 QDialog 設置了一個屬性, 可以通過設置屬性, 完成上述效果.dialog->setAttribute(Qt::WA_DeleteOnClose);//通過設置屬性,在進行關閉對話框操作的時候處罰delete內存的操作
}

5.1 自定義對話框

????????要想自定義對話框,就需要繼承自QDialog創建類:
1)純代碼的方式來自定義QDialog界面
2)通過圖形化的方式

5.2 model(bool)

模態 / 非模態

????????模態:彈出對話框的時候,此時用戶無法操作父窗口.必須得完成對話框內部出的操作,關閉對話框之后。exec

????????非模態:彈出對話框的時候,用戶可以操作父窗口。show

5.3?Qt內置對話框

????????Qt提供了多種可復?的對話框類型,即Qt標準對話框。Qt標準對話框全部繼承于QDialog類。常? 標準對話框如下:

消息對話框QMessageBox:

????????用來顯示一個消息給用戶,并且讓用戶進行一個簡單的選擇;

? ? ? ? 借助靜態函數構造消息對話框

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QMessageBox>
#include <QDebug>MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);
}MainWindow::~MainWindow()
{delete ui;
}void MainWindow::on_pushButton_clicked()
{int result = QMessageBox::information(this, "對話框標題", "對話框文本", QMessageBox::Ok | QMessageBox::Cancel);if (result == QMessageBox::Ok) {qDebug() << "Ok";} else if (result == QMessageBox::Cancel) {qDebug() << "Cancel";}
}

5.4?顏?對話框QColorDialog

????????顏?對話框的功能是允許??選擇顏?。繼承?QDialog類。

void MainWindow::on_pushButton_clicked()
{
//    QColorDialog* dialog = new QColorDialog(this);
//    dialog->exec();
//    delete dialog;// 函數的返回值就是用戶選擇的顏色.QColor color = QColorDialog::getColor(QColor(0, 255, 0), this, "選擇顏色");qDebug() << color;
//    getColor() 這個函數就能夠彈出一個模態對話框.用戶選擇顏色之后,點擊確定,
//    對話框關閉getcolor返回的值就是用戶選擇的顏色值!!
//    靜態函數static.QMessageBoxwarning不必創建對話框對象,就可以直接使用// 可以基于用戶選擇的顏色, 修改窗口的背景色.// 可以通過 QSS 的方式設置背景色.
//    QString style = "background-color: rgb(" + QString::number(color.red()) + ", " + QString::number(color.green())
//            + ", " + QString::number(color.blue()) + ");";char style[1024] = { 0 };sprintf(style, "background-color: rgb(%d, %d, %d);", color.red(), color.green(), color.blue());this->setStyleSheet(style);
}

上述是對顏色框樣式的設置。

5.5 ?件對話框QFileDialog

????????通過QFileDialog可以選擇一個文件.能夠獲取到這個文件的路徑打開文件/保存文件

void MainWindow::on_pushButton_clicked()
{QString filePath = QFileDialog::getOpenFileName(this);qDebug() << filePath;
}void MainWindow::on_pushButton_2_clicked()
{QString filePath = QFileDialog::getSaveFileName(this);qDebug() << filePath;
}

5.6 字體對話框QFontDialog

 bool ok = false;QFont font = QFontDialog::getFont(&ok);qDebug() << "ok = " << ok;// qDebug() << font;qDebug() << font.family();qDebug() << font.pointSize();qDebug() << font.bold();qDebug() << font.italic();ui->pushButton->setFont(font);

5,7?輸?對話框QInputDialog

????????讓用戶輸入一個具體的數據,可以是整數,可以是浮點數,還可以是字符串.(以類似于下拉框)

ps:謝謝觀看!!!

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

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

相關文章

C++ 面試題常用總結 詳解(滿足c++ 崗位必備,不定時更新)

&#x1f4da; 本文主要總結了一些常見的C面試題&#xff0c;主要涉及到語法基礎、STL標準庫、內存相關、類相關和其他輔助技能&#xff0c;掌握這些內容&#xff0c;基本上就滿足C的崗位技能&#xff08;紅色標記為重點內容&#xff09;&#xff0c;歡迎大家前來學習指正&…

git提交的腳本無執行權限怎么辦

問題描述 自己寫的小項目&#xff0c;沒有在服務器安裝 Jenkins 進行項目部署&#xff0c;為了圖方便&#xff0c;在項目中編寫了一個 deploy.sh 腳本文件用來執行項目部署。但是在服務器上 pull 下來之后發現腳本文件沒有執行權限&#xff0c;通過 chmod 命令進行賦權&#x…

004.chromium編譯進階-啟動時傳入cookies

一、目標&#xff1a; 實現傳入參數--set-cookies[{"domain":"https://baidu.com","name":"AAAA","value":"111"},{"domain":"https://baidu.com","name":"BBB","…

【數據庫復習】

數據庫復習題 一、填空題1&#xff0e;數據庫系統一般由&#xff08;數據庫&#xff09;、應用系統、&#xff08;數據庫管理系統&#xff09;、&#xff08;數據庫管理員&#xff09;和用戶構成。2&#xff0e;數據模型通常由&#xff08;數據結構&#xff09;、&#xff08;數…

微信小程序:選擇頁面單選實現(多頁面均可選擇)

一、效果展示 1、主頁面 展示了兩個選擇行 2、選擇頁面 根據傳遞的參數決定員工展示的數據,并且單選,可將數據傳遞給主頁面 二、主頁面實現 1、視圖層 寫入了采購員和庫管員的行選擇信息 <view class="item flex flex-between"><view class="i…

使用docker-compose搭建redis-cluster集群

前言 如果你也因為centos的gcc版本落后導致redis編譯安裝不通過而煩惱&#xff0c;大可以試一試用docker去搭建redis集群。本文以單節點搭建redis-cluster三主三從為例。 ip&#xff1a;192.168.0.10redis信息&#xff1a; 客戶端連接端口&#xff1a;7001 -7006集群間通信端…

【LLaMA-Factory 實戰系列】二、WebUI 篇 - Qwen2.5-VL 多模態模型 LoRA 微調保姆級教程

【LLaMA-Factory 實戰系列】二、WebUI 篇 - Qwen2.5-VL 多模態模型 LoRA 微調保姆級教程 1. 引言1.1 為什么選擇 Qwen2.5-VL-3B-Instruct&#xff1f;1.2 環境要求 2. 環境搭建2.1 安裝 LLaMA-Factory2.2 驗證安裝 3. 數據集準備與配置3.1 數據集結構3.2 數據格式3.3 數據集聲明…

風險矩陣與灰色綜合評價

一、風險矩陣&#xff08;Risk Matrix&#xff09; 1. 定義與原理 定義&#xff1a;風險矩陣是一種通過二維網格&#xff08;可能性 vs. 后果嚴重程度&#xff09;可視化展示風險等級的工具&#xff0c;用于優先級排序和決策支持。核心要素&#xff1a; 橫軸&#xff08;X軸&…

谷歌瀏覽器電腦版官方下載- Google Chrome官方網頁版入口

谷歌瀏覽器&#xff08;Google Chrome&#xff09;是一款由谷歌公司開發的免費網頁瀏覽器&#xff0c;自2008年首次發布以來&#xff0c;迅速成為全球最受歡迎的瀏覽器之一。它以簡潔的界面設計、快速的瀏覽速度和強大的安全性能而聞名。谷歌瀏覽器支持多種操作系統&#xff0c…

垂直電商供應鏈平臺:重構產業生態,驅動數字化增長

垂直電商供應鏈平臺&#xff1a;重構產業生態&#xff0c;驅動數字化增長 在電商行業競爭日益激烈的當下&#xff0c;垂直電商供應鏈平臺憑借對細分領域的深度聚焦與數字化能力&#xff0c;成為產業升級的關鍵引擎。本文圍繞垂直電商供應鏈平臺的架構、價值及生態構建展開&…

VSCode 插件 Remote - SSH:開啟高效遠程開發之旅

在當今的軟件開發領域&#xff0c;遠程開發已經成為了一種越來越流行的工作方式。無論是分布式團隊協作&#xff0c;還是需要在不同環境中進行開發&#xff0c;遠程開發都能為開發者帶來極大的便利。而 VSCode 的 Remote - SSH 插件&#xff0c;就是一款能夠幫助開發者實現高效…

亞矩陣云手機+Whatnot:直播電商的自動化增長引擎

在直播電商蓬勃發展的今天&#xff0c;Whatnot作為北美領先的收藏品和潮流商品拍賣平臺&#xff0c;吸引了大量賣家和收藏愛好者。然而&#xff0c;高效運營多個賬號、管理直播場次、優化出價策略等挑戰&#xff0c;讓許多商家難以規模化經營。??亞矩陣云手機??與??Whatn…

關于vue.mixin與vue.use的用法分析

背景。源碼不會讀&#xff0c;不清楚的問大模型。特別是對平常開發太會用到的情形。 vue.mixin。是將每一個頁面注入mixin的內容。會對頁面中注入$uStore而不是方便獲取狀態信息。 vue.use。按裝的插件。用于封裝完整的功能&#xff0c;如UI庫&#xff0c;路由攔截器等&…

MySQL 8.x配置MGR高可用+ProxySQL讀寫分離(二):ProxySQL配置MySQL代理及讀寫分離

#作者&#xff1a;stackofumbrella 文章目錄 ProxySQL簡介ProxySQL架構ProxySQL的安裝與配置在不同層次間移動配置 ProxySQL簡介 ProxySQL是基于MySQL的一款開源的中間件的產品&#xff0c;是一個靈活的MySQL代理層&#xff0c;可以實現讀寫分離&#xff0c;支持Query路由功能…

基于 Python Flask 的 B/S 架構項目的軟件設計思路

文章目錄 基于 Python Flask 的 B/S 架構項目的軟件設計思路1. 引言2. B/S架構概述2.1 什么是B/S架構2.2 B/S架構的組成層次2.3 B/S vs C/S架構對比2.4 現代B/S架構的發展趨勢 3. Flask在B/S架構中的定位3.1 Flask作為B/S架構的后端框架3.2 Flask的架構優勢3.3 Flask在不同B/S架…

AntV F2入門教程

以下教程將系統地介紹 AntV?F2&#xff08;移動端可視化引擎&#xff09;的核心 組件 API&#xff0c;包含安裝與引入、畫布與圖表、數據映射、幾何標記、坐標軸、圖例、提示、標注和滾動條等&#xff0c;每個 API 都附帶完整示例代碼&#xff0c;幫助你快速掌握 F2 用法。 一…

退休時醫療保險補繳的基數影響什么

退休時醫療保險的補繳基數主要影響補繳金額、醫保個人賬戶劃入待遇、終身醫保待遇的享受條件等關鍵方面。以下是具體分析&#xff1a; 1. 影響補繳金額的多少 補繳基數通常以退休時上年度全省/市職工月平均工資或本人退休前繳費基數為基準&#xff08;各地政策不同&#xff09…

conda導出環境文件requirements.txt

conda導出的幾種方式 方式一&#xff1a;使用pip freeze&#xff08;推薦&#xff09; 如果你主要使用 pip 安裝包&#xff0c;且環境中的包都兼容 PyPI&#xff0c;可以直接用 pip 導出&#xff1a; conda activate your_env_name # 激活環境&#xff08;若未激活&#xf…

華為云 Flexus+DeepSeek 征文|增值稅發票智能提取小工具:基于大模型的自動化信息解析實踐

華為云 FlexusDeepSeek 征文&#xff5c;增值稅發票智能提取小工具&#xff1a;基于大模型的自動化信息解析實踐 前言背景 企業財務處理中&#xff0c;增值稅發票信息手動提取存在效率低、易出錯等痛點&#xff0c;華為云 Flexus 彈性算力聯合 DeepSeek 大模型&#xff0c;通過…

亞馬遜選品 家具或藝術?指紋技術重構兩者

58%毛利&#xff01;生物識別首飾盒代理 奢侈品零售的隱藏金礦&#xff1a;安防產品的毛利是普通家居的3倍&#xff01; 核心數據 零售價 4,900 | 代理價 1,990 → 毛利58% 零庫存風險&#xff1a;90天寄售周期 72小時售罄&#xff1a;貝弗利山莊快閃店賣出47臺 首批10家特權…