Qt中QKeySequence的實現(xiàn)示例
一、揭開 QKeySequence 的神秘面紗
在 Qt 框架的龐大體系中,QKeySequence 是一個處理鍵盤快捷鍵序列的類,在構建交互友好的應用程序時扮演著舉足輕重的角色。它就像是一個智能的快捷鍵管家,為開發(fā)者提供了便捷解析、存儲和比較鍵盤快捷鍵的方式,這些快捷鍵如同通往應用程序特定操作或命令的快捷通道,極大地提升了用戶操作效率。
以日常使用的文本編輯軟件為例,當我們想要復制一段文字時,無需繁瑣地通過鼠標點擊菜單選項,只需輕松按下 Ctrl + C 組合鍵(在 Qt 中對應的標準鍵為 QKeySequence::Copy),就能快速完成復制操作;粘貼時,按下 Ctrl + V(QKeySequence::Paste)即可,整個過程一氣呵成,為用戶節(jié)省了大量時間 。QKeySequence 支持多種格式的快捷鍵表示,從簡單的單個按鍵,到復雜的按鍵組合,甚至是由多個按鍵組成的序列,它都能完美應對。
二、QKeySequence 的功能大揭秘
2.1 多樣化的快捷鍵表示
QKeySequence 支持多種快捷鍵表示形式,極大地滿足了不同場景和用戶習慣的需求 。最為簡單的是單個按鍵表示,比如按下字母 “A” 鍵,就可以使用QKeySequence(Qt::Key_A)來表示,在一些簡單的操作場景中,這種形式能夠快速觸發(fā)相應功能。
而在日常使用電腦時,我們經(jīng)常會用到各種按鍵組合,像復制操作的 Ctrl + C、粘貼操作的 Ctrl + V 等。在 QKeySequence 中,這種按鍵組合可以輕松表示,例如QKeySequence("Ctrl+C") ,它簡潔明了地定義了復制操作對應的快捷鍵。這里的 “Ctrl” 是修飾鍵,與字母 “C” 組合在一起,形成了一個特定的功能指令。
除此之外,QKeySequence 還支持按鍵序列,即多個按鍵按順序依次按下。假設在一個特定的繪圖應用程序中,要實現(xiàn)一個復雜的圖形繪制操作,可能需要用戶先按下 “Shift” 鍵,再按下 “D” 鍵,最后按下 “Enter” 鍵來確認繪制。那么這個按鍵序列就可以表示為QKeySequence("Shift+D, Enter"),這種方式能夠實現(xiàn)更為復雜的操作邏輯。通過支持多樣化的快捷鍵表示,QKeySequence 為開發(fā)者提供了豐富的選擇,使得應用程序的快捷鍵設置更加靈活和個性化,能夠更好地適配不同用戶的操作習慣和各種復雜的業(yè)務需求。
2.2 常用方法解析
構造函數(shù):
QKeySequence():創(chuàng)建一個空的快捷鍵序列,這在需要先聲明一個快捷鍵序列對象,后續(xù)再進行賦值或操作的場景中很有用。例如,在一個動態(tài)設置快捷鍵的功能模塊中,可能會先定義一個空的QKeySequence對象,然后根據(jù)用戶的選擇或系統(tǒng)配置來填充具體的快捷鍵內容。
QKeySequence(const QString &key):根據(jù)提供的字符串創(chuàng)建一個快捷鍵序列。這個字符串可以是像 “Ctrl+N” 這樣的單個按鍵組合,也可以是多個按鍵組合的復雜形式。比如在一個文本編輯應用的新建文件功能中,可以使用QKeySequence("Ctrl+N")來為新建文件操作設置快捷鍵,方便用戶快速創(chuàng)建新文檔。
fromString(const QString &str, SequenceFormat format = PortableText):這是一個靜態(tài)方法,用于從字符串中解析出快捷鍵序列。SequenceFormat參數(shù)指定了字符串的格式,默認是PortableText便攜文本格式,這種格式具有良好的跨平臺性。當我們從配置文件中讀取用戶自定義的快捷鍵設置時,就可以使用這個方法將讀取到的字符串解析為QKeySequence對象。假設配置文件中存儲的快捷鍵字符串為 “Ctrl+S”,通過QKeySequence::fromString("Ctrl+S")就可以將其轉換為對應的快捷鍵序列,以便在應用程序中使用。
toString(SequenceFormat format = PortableText):將快捷鍵序列轉換為字符串表示,與fromString方法相對應。在需要將快捷鍵序列顯示給用戶,或者保存到配置文件中時,就會用到這個方法。比如在應用程序的設置界面中,展示當前各個功能的快捷鍵設置時,就可以通過toString方法將QKeySequence對象轉換為字符串形式呈現(xiàn)給用戶,讓用戶清晰地了解每個功能對應的快捷鍵。
matches(const QKeySequence &seq):檢查當前快捷鍵序列是否與另一個快捷鍵序列匹配。在處理用戶輸入的快捷鍵事件時,經(jīng)常需要判斷用戶按下的快捷鍵是否與預先設置的某個功能的快捷鍵一致。例如,當用戶按下一組快捷鍵時,通過matches方法與各個功能的快捷鍵序列進行比較,就可以確定用戶想要觸發(fā)的功能。假設已經(jīng)為復制功能設置了快捷鍵QKeySequence("Ctrl+C"),當用戶按下快捷鍵后,使用currentKeySequence.matches(QKeySequence("Ctrl+C"))就可以判斷用戶是否想要執(zhí)行復制操作。
count():返回快捷鍵序列中按鍵的數(shù)量。在一些需要對快捷鍵進行復雜處理的場景中,比如統(tǒng)計用戶設置的快捷鍵組合中包含多少個按鍵,以便進行合理性檢查或根據(jù)按鍵數(shù)量提供不同的提示信息時,這個方法就派上用場了。如果一個應用程序限制用戶設置的快捷鍵最多只能包含 3 個按鍵,那么通過count方法就可以判斷用戶設置的快捷鍵是否符合要求。
2.3 不可或缺的枚舉類型
SequenceFormat:這個枚舉類型主要用于定義快捷鍵序列的文本格式,常見的有NativeText本地化文本格式和PortableText便攜文本格式。NativeText格式會根據(jù)操作系統(tǒng)的不同,以本地化的方式顯示快捷鍵文本,例如在 Windows 系統(tǒng)中,復制快捷鍵顯示為 “Ctrl + C”,而在 Mac 系統(tǒng)中則顯示為 “Command + C”,這種格式能夠讓用戶看到符合本地操作系統(tǒng)習慣的快捷鍵表示,提高用戶的熟悉度和操作體驗;PortableText格式則是一種統(tǒng)一的、跨平臺的文本格式,無論在哪個操作系統(tǒng)上,都以固定的格式表示快捷鍵,比如 “Ctrl+C”,這種格式在需要在不同操作系統(tǒng)間保持一致性,或者進行數(shù)據(jù)存儲、傳輸時非常有用,因為它不受操作系統(tǒng)的影響,保證了數(shù)據(jù)的穩(wěn)定性和兼容性。
StandardKey:該枚舉類型定義了一系列常見操作的標準快捷鍵,為開發(fā)者提供了方便的快捷方式設置選項。像QKeySequence::Copy表示復制操作的快捷鍵,通常對應 “Ctrl + C”(在 Mac 系統(tǒng)上是 “Command + C”);QKeySequence::Paste表示粘貼操作的快捷鍵,一般是 “Ctrl + V”(Mac 系統(tǒng)為 “Command + V”) ;QKeySequence::Undo對應撤銷操作,快捷鍵常為 “Ctrl + Z”(Mac 系統(tǒng) “Command + Z”) 。使用這些標準鍵,開發(fā)者無需手動為每個常見操作設置快捷鍵,既節(jié)省了開發(fā)時間,又保證了應用程序在不同平臺上的快捷鍵一致性,符合用戶的使用習慣,提升了應用程序的通用性和易用性。例如在一個文件管理應用中,對于文件的復制、粘貼、刪除等常見操作,直接使用StandardKey枚舉中的對應值來設置快捷鍵,就可以快速實現(xiàn)這些功能的快捷操作,并且用戶可以按照熟悉的快捷鍵方式進行操作,無需重新學習。
三、實戰(zhàn)演練:QKeySequence 的應用
3.1 在菜單和工具欄中設置快捷鍵
在 Qt 應用程序中,菜單和工具欄是用戶與程序交互的重要方式之一,而快捷鍵的設置能夠大大提高用戶操作的便捷性。接下來,我們通過一個簡單的文本編輯應用示例,展示如何在菜單和工具欄中利用 QKeySequence 設置快捷鍵。
假設我們要實現(xiàn)一個具有新建文件、打開文件、保存文件、復制文本、粘貼文本等功能的文本編輯應用。首先,我們需要創(chuàng)建相應的 QAction 對象,并為它們設置快捷鍵。
#include <QApplication>
#include <QMainWindow>
#include <QMenuBar>
#include <QMenu>
#include <QAction>
#include <QTextEdit>
#include <QKeySequence>
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr) : QMainWindow(parent)
{
// 創(chuàng)建文本編輯區(qū)域
QTextEdit *textEdit = new QTextEdit(this);
setCentralWidget(textEdit);
// 創(chuàng)建菜單欄
QMenuBar *menuBar = menuBar();
// 創(chuàng)建文件菜單
QMenu *fileMenu = menuBar->addMenu("&File");
// 創(chuàng)建新建文件動作,并設置快捷鍵Ctrl+N
QAction *newAction = new QAction("&New", this);
newAction->setShortcut(QKeySequence("Ctrl+N"));
connect(newAction, &QAction::triggered, [textEdit]() {
textEdit->clear();
});
fileMenu->addAction(newAction);
// 創(chuàng)建打開文件動作,并設置快捷鍵Ctrl+O
QAction *openAction = new QAction("&Open", this);
openAction->setShortcut(QKeySequence("Ctrl+O"));
connect(openAction, &QAction::triggered, []() {
// 這里添加打開文件的實際邏輯
});
fileMenu->addAction(openAction);
// 創(chuàng)建保存文件動作,并設置快捷鍵Ctrl+S
QAction *saveAction = new QAction("&Save", this);
saveAction->setShortcut(QKeySequence("Ctrl+S"));
connect(saveAction, &QAction::triggered, [textEdit]() {
// 這里添加保存文件的實際邏輯,例如將textEdit的內容保存到文件
});
fileMenu->addAction(saveAction);
// 創(chuàng)建編輯菜單
QMenu *editMenu = menuBar->addMenu("&Edit");
// 創(chuàng)建復制動作,并設置快捷鍵Ctrl+C
QAction *copyAction = new QAction("&Copy", this);
copyAction->setShortcut(QKeySequence::Copy);
connect(copyAction, &QAction::triggered, textEdit, &QTextEdit::copy);
editMenu->addAction(copyAction);
// 創(chuàng)建粘貼動作,并設置快捷鍵Ctrl+V
QAction *pasteAction = new QAction("&Paste", this);
pasteAction->setShortcut(QKeySequence::Paste);
connect(pasteAction, &QAction::triggered, textEdit, &QTextEdit::paste);
editMenu->addAction(pasteAction);
// 創(chuàng)建工具欄
QToolBar *toolBar = addToolBar("Main Toolbar");
// 將新建、打開、保存動作添加到工具欄
toolBar->addAction(newAction);
toolBar->addAction(openAction);
toolBar->addAction(saveAction);
// 將復制、粘貼動作添加到工具欄
toolBar->addAction(copyAction);
toolBar->addAction(pasteAction);
}
};在上述代碼中,我們創(chuàng)建了MainWindow類,繼承自QMainWindow。在構造函數(shù)中,首先創(chuàng)建了一個QTextEdit作為文本編輯區(qū)域,并將其設置為中心部件。然后創(chuàng)建了菜單欄和文件、編輯兩個菜單,以及相應的動作,如新建、打開、保存、復制、粘貼等,并為每個動作設置了對應的快捷鍵。最后,創(chuàng)建了工具欄,并將部分動作添加到工具欄中。這樣,用戶既可以通過菜單選擇操作,也可以使用快捷鍵快速觸發(fā)相應功能,還能通過工具欄上的圖標進行操作,大大提高了操作的便捷性和多樣性。
3.2 全局快捷鍵的實現(xiàn)
在某些場景下,我們希望應用程序能夠響應全局快捷鍵,即無論應用程序窗口是否處于激活狀態(tài),只要用戶按下特定的快捷鍵組合,就能觸發(fā)相應的操作。在 Qt 中,借助 QShortcut 類可以實現(xiàn)這一功能。QShortcut 類允許我們?yōu)閼贸绦虻奶囟ú考ㄈ绱翱?、控件等)設置快捷鍵,當設置為全局上下文時,就可以實現(xiàn)全局快捷鍵的效果 。
假設我們的文本編輯應用需要實現(xiàn)一個全局的 “查找” 功能快捷鍵,無論應用程序是否處于前臺,按下特定快捷鍵都能彈出查找對話框。
#include <QApplication>
#include <QMainWindow>
#include <QShortcut>
#include <QKeySequence>
#include <QMessageBox>
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr) : QMainWindow(parent)
{
// 創(chuàng)建全局查找快捷鍵Ctrl+F
QShortcut *findShortcut = new QShortcut(QKeySequence("Ctrl+F"), this);
findShortcut->setContext(Qt::ApplicationShortcut);
connect(findShortcut, &QShortcut::activated, this, &MainWindow::showFindDialog);
}
private slots:
void showFindDialog()
{
QMessageBox::information(this, "Find", "Show the find dialog here.");
// 這里添加實際的查找對話框顯示邏輯
}
};在上述代碼中,我們在MainWindow的構造函數(shù)中創(chuàng)建了一個QShortcut對象,設置其快捷鍵為 “Ctrl+F”,并將上下文設置為Qt::ApplicationShortcut,這表示該快捷鍵在整個應用程序范圍內有效,即全局快捷鍵。然后,將QShortcut的activated信號連接到showFindDialog槽函數(shù),當用戶按下 “Ctrl+F” 時,就會觸發(fā)showFindDialog函數(shù),在這個函數(shù)中可以實現(xiàn)顯示查找對話框的實際邏輯 。通過這種方式,我們?yōu)閼贸绦蛱砑恿巳挚旖萱I功能,提升了用戶操作的便捷性,使用戶在任何時候都能快速調用查找功能,無需先激活應用程序窗口再進行操作 。
四、QKeySequence 使用的高級技巧
4.1 動態(tài)設置與更新快捷鍵
在實際應用中,有時需要根據(jù)用戶的操作習慣或程序的運行狀態(tài)動態(tài)地設置和更新快捷鍵,這能為用戶提供更加個性化和靈活的使用體驗。比如在一個繪圖應用程序中,用戶可能希望根據(jù)自己的繪圖習慣,隨時更改某些繪圖工具的快捷鍵 。
#include <QApplication>
#include <QMainWindow>
#include <QMenuBar>
#include <QMenu>
#include <QAction>
#include <QKeySequence>
#include <QInputDialog>
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr) : QMainWindow(parent)
{
// 創(chuàng)建菜單欄
QMenuBar *menuBar = menuBar();
// 創(chuàng)建繪圖菜單
QMenu *drawingMenu = menuBar->addMenu("&Drawing");
// 創(chuàng)建畫直線動作
lineAction = new QAction("&Draw Line", this);
lineAction->setShortcut(QKeySequence("Ctrl+L"));
connect(lineAction, &QAction::triggered, this, &MainWindow::drawLine);
drawingMenu->addAction(lineAction);
// 創(chuàng)建更改快捷鍵動作
changeShortcutAction = new QAction("&Change Line Shortcut", this);
connect(changeShortcutAction, &QAction::triggered, this, &MainWindow::changeLineShortcut);
drawingMenu->addAction(changeShortcutAction);
}
private slots:
void drawLine()
{
// 實際的畫直線邏輯
}
void changeLineShortcut()
{
bool ok;
// 使用QInputDialog獲取用戶輸入的新快捷鍵
QString newShortcutStr = QInputDialog::getText(this, "Change Shortcut", "Enter new shortcut:", QLineEdit::Normal, "", &ok);
if (ok &&!newShortcutStr.isEmpty())
{
QKeySequence newShortcut(newShortcutStr);
lineAction->setShortcut(newShortcut);
}
}
private:
QAction *lineAction;
QAction *changeShortcutAction;
};在上述代碼中,我們創(chuàng)建了一個繪圖應用的主窗口,包含一個繪圖菜單,其中有畫直線動作和更改直線快捷鍵動作。當用戶點擊 “Change Line Shortcut” 時,會彈出一個輸入對話框,用戶可以輸入新的快捷鍵。輸入完成后,程序會將新的快捷鍵設置給畫直線動作,實現(xiàn)了快捷鍵的動態(tài)更新 。通過這種方式,用戶可以根據(jù)自己的需求隨時調整快捷鍵,提高了應用程序的靈活性和用戶滿意度。
4.2 從配置文件加載快捷鍵
為了方便用戶進行個性化設置,我們可以將快捷鍵設置存儲在配置文件中,程序在啟動時從配置文件加載快捷鍵。這樣,用戶在不同的使用環(huán)境下,都能保持自己習慣的快捷鍵設置 。常見的配置文件格式有 INI、JSON 等,這里我們以 INI 格式為例進行說明。
#include <QApplication>
#include <QMainWindow>
#include <QMenuBar>
#include <QMenu>
#include <QAction>
#include <QKeySequence>
#include <QSettings>
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr) : QMainWindow(parent)
{
// 創(chuàng)建菜單欄
QMenuBar *menuBar = menuBar();
// 創(chuàng)建文件菜單
QMenu *fileMenu = menuBar->addMenu("&File");
// 創(chuàng)建新建文件動作
newAction = new QAction("&New", this);
fileMenu->addAction(newAction);
// 從配置文件加載新建文件快捷鍵
loadShortcut(newAction, "File/New");
}
private:
void loadShortcut(QAction *action, const QString &key)
{
QSettings settings("MyApp", "Settings");
QString shortcutStr = settings.value(key).toString();
if (!shortcutStr.isEmpty())
{
QKeySequence shortcut(shortcutStr);
action->setShortcut(shortcut);
}
}
private:
QAction *newAction;
};在上述代碼中,我們在MainWindow的構造函數(shù)中創(chuàng)建了新建文件動作,并調用loadShortcut函數(shù)從配置文件中加載新建文件的快捷鍵。QSettings類提供了一種方便的方式來讀寫配置文件,這里我們使用QSettings("MyApp", "Settings")表示使用應用程序名為 “MyApp”,組織名為 “Settings” 的配置文件。loadShortcut函數(shù)中,通過settings.value(key).toString()獲取配置文件中指定鍵(如 “File/New”)對應的值,即快捷鍵字符串,然后將其轉換為QKeySequence并設置給相應的動作 。當用戶在應用程序中更改快捷鍵設置后,我們可以將新的快捷鍵保存到配置文件中,下次啟動應用程序時,就會加載用戶自定義的快捷鍵設置,實現(xiàn)了快捷鍵設置的持久化和個性化 。
4.3 檢查快捷鍵沖突
在設置快捷鍵時,檢查快捷鍵沖突是非常重要的,否則可能會導致用戶在操作時出現(xiàn)意想不到的結果,影響用戶體驗。比如在一個文本編輯應用中,如果 “保存” 和 “另存為” 的快捷鍵都被設置為 “Ctrl+S”,那么當用戶按下 “Ctrl+S” 時,就無法確定到底是執(zhí)行保存還是另存為操作 。
#include <QApplication>
#include <QMainWindow>
#include <QMenuBar>
#include <QMenu>
#include <QAction>
#include <QKeySequence>
#include <QMessageBox>
#include <QMap>
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr) : QMainWindow(parent)
{
// 創(chuàng)建菜單欄
QMenuBar *menuBar = menuBar();
// 創(chuàng)建文件菜單
QMenu *fileMenu = menuBar->addMenu("&File");
// 創(chuàng)建保存動作
saveAction = new QAction("&Save", this);
connect(saveAction, &QAction::triggered, this, &MainWindow::saveFile);
fileMenu->addAction(saveAction);
// 創(chuàng)建另存為動作
saveAsAction = new QAction("&Save As", this);
connect(saveAsAction, &QAction::triggered, this, &MainWindow::saveFileAs);
fileMenu->addAction(saveAsAction);
// 假設初始設置保存快捷鍵為Ctrl+S
setShortcut(saveAction, "Ctrl+S");
// 嘗試設置另存為快捷鍵為Ctrl+S,會檢測沖突
setShortcut(saveAsAction, "Ctrl+S");
}
private slots:
void saveFile()
{
// 實際的保存文件邏輯
}
void saveFileAs()
{
// 實際的另存為文件邏輯
}
private:
void setShortcut(QAction *action, const QString &shortcutStr)
{
QKeySequence shortcut(shortcutStr);
if (shortcutMap.contains(shortcut))
{
QAction *conflictingAction = shortcutMap[shortcut];
QMessageBox::warning(this, "Shortcut Conflict", QString("The shortcut %1 is already used by %2.").arg(shortcutStr).arg(conflictingAction->text()));
}
else
{
action->setShortcut(shortcut);
shortcutMap[shortcut] = action;
}
}
private:
QAction *saveAction;
QAction *saveAsAction;
QMap<QKeySequence, QAction*> shortcutMap;
};在上述代碼中,我們創(chuàng)建了一個文本編輯應用的主窗口,包含文件菜單以及保存和另存為動作。setShortcut函數(shù)用于設置快捷鍵,在設置前會檢查shortcutMap中是否已經(jīng)存在相同的快捷鍵,如果存在,則彈出警告框提示用戶快捷鍵沖突,并顯示沖突的動作;如果不存在,則設置快捷鍵并將動作添加到shortcutMap中 。通過這種方式,有效地避免了快捷鍵沖突,保證了用戶操作的準確性和應用程序的穩(wěn)定性。
五、總結與展望
QKeySequence 作為 Qt 框架中處理鍵盤快捷鍵序列的重要類,在提升用戶體驗和操作效率方面發(fā)揮著關鍵作用 。它支持多樣化的快捷鍵表示形式,涵蓋了單個按鍵、按鍵組合以及按鍵序列,滿足了不同用戶的操作習慣和各種復雜的業(yè)務場景需求 。通過豐富的常用方法,如構造函數(shù)、字符串解析與轉換方法、快捷鍵匹配方法等,為開發(fā)者提供了便捷操作快捷鍵的工具 。同時,其包含的枚舉類型,如SequenceFormat和StandardKey,進一步增強了快捷鍵設置的靈活性和通用性,使得應用程序能夠在不同平臺上保持一致的快捷鍵體驗。
在實際應用中,無論是在菜單和工具欄中設置快捷鍵,還是實現(xiàn)全局快捷鍵功能,QKeySequence 都展現(xiàn)出了強大的功能和易用性 。通過動態(tài)設置與更新快捷鍵、從配置文件加載快捷鍵以及檢查快捷鍵沖突等高級技巧,能夠進一步提升應用程序的個性化和穩(wěn)定性,為用戶帶來更加流暢和高效的使用體驗 。
隨著用戶對應用程序交互體驗要求的不斷提高,快捷鍵作為一種高效的交互方式,其重要性將日益凸顯 。未來,希望開發(fā)者們能夠更加深入地探索 QKeySequence 的潛力,靈活運用這些功能和技巧,創(chuàng)造出更加便捷、高效、用戶友好的應用程序,滿足用戶日益增長的需求 。無論是在辦公軟件、圖形設計工具,還是游戲等各類應用中,充分利用 QKeySequence 的優(yōu)勢,都將為用戶帶來更出色的操作體驗,提升應用程序的競爭力 。相信在開發(fā)者們的不斷努力下,基于 QKeySequence 構建的應用程序將在各個領域大放異彩,為用戶的生活和工作帶來更多便利 。
到此這篇關于Qt中QKeySequence的實現(xiàn)示例的文章就介紹到這了,更多相關Qt QKeySequence內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Java C++ 算法題解leetcode1582二進制矩陣特殊位置
這篇文章主要為大家介紹了Java C++ 算法題解leetcode1582二進制矩陣特殊位置示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-09-09
VS2019安裝配置MFC(安裝vs2019時沒有安裝mfc)
這篇文章主要介紹了VS2019安裝配置MFC(安裝vs2019時沒有安裝mfc),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-03-03

