欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

PyQt5利用Qt Designer實(shí)現(xiàn)簡(jiǎn)單界面交互

 更新時(shí)間:2025年03月13日 09:58:43   作者:擺爛老大  
本文主要介紹了PyQt5利用Qt Designer實(shí)現(xiàn)簡(jiǎn)單界面交互,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

準(zhǔn)備工作:配置好PyQt5相關(guān)的庫(kù)、QtDesigner、pyuic

1 QtDesigner簡(jiǎn)單界面設(shè)計(jì)

點(diǎn)擊“工具"——>“外部工具(External Tools)”——>“QtDesigner”。

進(jìn)入程序之后,點(diǎn)擊“創(chuàng)建”,創(chuàng)建一個(gè)新的ui文件。

在這里插入圖片描述

進(jìn)入設(shè)計(jì)界面之后,將“按鈕”控件拖放到主窗口的合適位置。
(用于響應(yīng)用戶的交互動(dòng)作,比如點(diǎn)擊、按下或釋放)

在這里插入圖片描述

將“單行文本”控件拖放到主窗口的合適位置。
(用于單行文本輸入的控件,它允許用戶在界面上輸入和編輯文本)

在這里插入圖片描述

將“多行文本編輯器”控件拖放到主窗口的合適位置。
(與 QLineEdit 控件不同,它允許用戶輸入和編輯多行文本內(nèi)容)

在這里插入圖片描述

將“窗口(這里用于繪圖)”控件拖放到主窗口的合適位置。
(用于繪制、事件處理和布局管理,提供了基本的 GUI 功能。)

在這里插入圖片描述

將控件進(jìn)一步添加如下圖所示,添加“按鈕”和“標(biāo)簽”,并改變文本內(nèi)容。

在這里插入圖片描述

在右側(cè)的“對(duì)象查看器”中可以看到當(dāng)前所添加的所有控件的名稱和相應(yīng)的屬性內(nèi)容。

在這里插入圖片描述

將ui文件保存到文件夾中(后續(xù)代碼文件也放在這個(gè)文件夾里)

2 代碼部分

2.1 ui文件轉(zhuǎn)py文件

轉(zhuǎn)換方法有兩種,一種是用External Tools轉(zhuǎn)換,一種是用專門的代碼去轉(zhuǎn)換。(兩種方法的前提是要配置好pyuic)

  • 方法一(External Tools外部工具欄)
    (1)在Pycharm左側(cè)項(xiàng)目欄中找到剛剛存放ui文件的文件夾,打開文件夾后,將ui文件拖放到右側(cè)打開。
    (2)點(diǎn)擊“工具"——>“外部工具(External Tools)”——>“PyUIC”。

在這里插入圖片描述

點(diǎn)擊之后可以看到左側(cè)文件夾中生成了相應(yīng)的py文件,轉(zhuǎn)換成功!

在這里插入圖片描述

  • 方法二(ui轉(zhuǎn)py專用代碼)
    需要注意的是,在運(yùn)行代碼之前,需要把該專用代碼放到和ui文件所在的同一個(gè)文件夾里。

在這里插入圖片描述

我讓ChatGPT寫了一個(gè)ui轉(zhuǎn)換py專用的代碼,自己轉(zhuǎn)換了一遍,經(jīng)驗(yàn)證放心可用,代碼如下:

import os
import subprocess

def ui_to_py(ui_file):
    """Converts a Qt Designer .ui file to a Python .py file in the same directory."""
    # Get the base name without extension
    base_name = os.path.splitext(ui_file)[0]
    # Construct the output .py file name
    py_file = base_name + '.py'

    # Construct the command
    command = f'pyuic5 -o {py_file} {ui_file}'

    try:
        # Run the command
        subprocess.run(command, check=True, shell=True)
        print(f'Successfully converted {ui_file} to {py_file}')
    except subprocess.CalledProcessError as e:
        print(f'Failed to convert {ui_file} to {py_file}: {e}')


if __name__ == "__main__":
    # Get the current directory
    current_directory = os.getcwd()

    # Loop through all files in the current directory
    for file_name in os.listdir(current_directory):
        # Check if the file is a .ui file
        if file_name.endswith('.ui'):
            # Convert the .ui file to .py file
            ui_to_py(file_name)

運(yùn)行上述之后可以看到左側(cè)文件夾中生成了相應(yīng)的py文件,轉(zhuǎn)換成功!

在這里插入圖片描述

2.2 界面文件代碼

下面是轉(zhuǎn)換后的py文件,為了方便,我們后面都叫它界面文件。界面文件中有控件的具體信息,比如控件尺寸大小、位置、名稱、顯示內(nèi)容等信息。此外,我們還要記住它的類名,以便后續(xù)主文件的類進(jìn)行繼承。
轉(zhuǎn)換后的完整py文件代碼如下:

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file '0622test.ui'
#
# Created by: PyQt5 UI code generator 5.15.4
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again.  Do not edit this file unless you know what you are doing.


from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(791, 593) #主窗口大小
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget") #主窗口名稱
        self.pushButton = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton.setGeometry(QtCore.QRect(80, 90, 89, 27)) #按鈕大小和在主窗口中的位置
        self.pushButton.setObjectName("pushButton") #按鈕名稱
        self.lineEdit = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEdit.setGeometry(QtCore.QRect(210, 90, 113, 20)) #......
        self.lineEdit.setObjectName("lineEdit")
        self.textEdit = QtWidgets.QTextEdit(self.centralwidget)
        self.textEdit.setGeometry(QtCore.QRect(210, 140, 211, 141))
        self.textEdit.setObjectName("textEdit")
        self.widget = QtWidgets.QWidget(self.centralwidget)
        self.widget.setGeometry(QtCore.QRect(210, 300, 401, 201))
        self.widget.setObjectName("widget")
        self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_2.setGeometry(QtCore.QRect(80, 190, 89, 27))
        self.pushButton_2.setObjectName("pushButton_2")
        self.pushButton_3 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_3.setGeometry(QtCore.QRect(80, 350, 89, 27))
        self.pushButton_3.setObjectName("pushButton_3")
        self.label = QtWidgets.QLabel(self.centralwidget)
        self.label.setGeometry(QtCore.QRect(360, 90, 63, 14))
        self.label.setObjectName("label")
        self.label_2 = QtWidgets.QLabel(self.centralwidget)
        self.label_2.setGeometry(QtCore.QRect(450, 200, 63, 14))
        self.label_2.setObjectName("label_2")
        self.label_3 = QtWidgets.QLabel(self.centralwidget)
        self.label_3.setGeometry(QtCore.QRect(640, 390, 63, 14))
        self.label_3.setObjectName("label_3")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 791, 26))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow")) # 顯示的文本內(nèi)容
        self.pushButton.setText(_translate("MainWindow", "按鈕1")) #顯示的文本內(nèi)容
        self.pushButton_2.setText(_translate("MainWindow", "按鈕2")) #......
        self.pushButton_3.setText(_translate("MainWindow", "按鈕3"))
        self.label.setText(_translate("MainWindow", "單行文本"))
        self.label_2.setText(_translate("MainWindow", "多行文本"))
        self.label_3.setText(_translate("MainWindow", "繪圖"))

2.3 主文件代碼

2.3.1 主體框架代碼

我們先來介紹主體的框架,這是一部分是個(gè)模板,套用的時(shí)候需要需改一下細(xì)節(jié)信息,廢話不多說,先上代碼:
(先前的轉(zhuǎn)換后的py代碼命名不符合規(guī)范,我重命名為了f0622test.py)

import sys
from PyQt5.QtWidgets import *
from PyQt5.Qt import *
from PyQt5.QtCore import *
from PyQt5.QtWidgets import QApplication,QMainWindow,QDesktopWidget,QLineEdit
from f0622test import * 
#導(dǎo)入轉(zhuǎn)換后的py文件,要用自己的轉(zhuǎn)換后的py文件的名字,我這里是f0622test.py

class MyWindows(QMainWindow,Ui_MainWindow): 
    #繼承自兩個(gè)父類,一個(gè)是QMainWindow,一個(gè)是轉(zhuǎn)換后的py文件的類,這里是Ui_MainWindow

    def __init__(self):
        super(MyWindows,self).__init__()
        self.setupUi(self)
#......

if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    window = MyWindows()
    window.show()
    sys.exit(app.exec_())

下面對(duì)它們進(jìn)行解釋:

  • import sys
    sys 模塊提供了一系列與 Python 解釋器進(jìn)行交互的功能,包括命令行參數(shù)、標(biāo)準(zhǔn)輸入輸出、錯(cuò)誤流等。

  • from PyQt5.QtWidgets import *
    PyQt5.QtWidgets 模塊包含了所有用于創(chuàng)建圖形用戶界面(GUI)的基本控件,如按鈕、標(biāo)簽、文本框等。

  • from PyQt5.Qt import *
    PyQt5.Qt 模塊提供了 PyQt 中常用的基本類,包括信號(hào)與槽機(jī)制、事件處理等。

  • from PyQt5.QtCore import *
    PyQt5.QtCore 模塊包含了核心的非 GUI 功能,包括事件循環(huán)、信號(hào)與槽、時(shí)間和日期、文件和目錄操作等。

  • from PyQt5.QtWidgets import QApplication, QMainWindow, QDesktopWidget, QLineEdit
    這些特定的導(dǎo)入用于創(chuàng)建應(yīng)用程序、主窗口、桌面控件和單行文本輸入框。

  • from XAJ1 import *
    導(dǎo)入自定義模塊 XAJ1 中的所有內(nèi)容,這通常包含定義的類、函數(shù)和變量。XAJ1 是你項(xiàng)目中的一個(gè)模塊,它可能包含一些特定功能的實(shí)現(xiàn)。

  • 類和初始化函數(shù)

class MyWindows(QMainWindow, Ui_MainWindow):

def __init__(self):
    super(MyWindows, self).__init__()
    self.setupUi(self)

①定義一個(gè)名為 MyWindows 的類,繼承了 QMainWindow 和 Ui_MainWindow。
②在創(chuàng)建 MyWindows 對(duì)象時(shí),調(diào)用父類的構(gòu)造函數(shù)進(jìn)行初始化。
③調(diào)用 Ui_MainWindow 的 setupUi 方法,設(shè)置用戶界面,將所有設(shè)計(jì)好的控件和布局添加到當(dāng)前窗口實(shí)例中。

  • 結(jié)尾代碼:判斷當(dāng)前模塊是否被直接執(zhí)行
if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    window = MyWindows()
    window.show()
    sys.exit(app.exec_())

①檢查腳本是否被直接運(yùn)行。
②初始化一個(gè) QApplication 對(duì)象。
③創(chuàng)建并初始化主窗口對(duì)象。
⑤顯示主窗口。
⑥啟動(dòng)主事件循環(huán)并運(yùn)行應(yīng)用程序,直到用戶退出。
這些步驟是創(chuàng)建和運(yùn)行任何 PyQt5 應(yīng)用程序所必需的標(biāo)準(zhǔn)流程。其中第一行的代碼經(jīng)常會(huì)用到,這里詳細(xì)解釋:

if __name__ == '__main__':

這行代碼檢查當(dāng)前模塊是否是作為主程序運(yùn)行。name 是一個(gè)特殊變量,當(dāng)模塊被直接運(yùn)行時(shí),其值為 main。如果模塊是被導(dǎo)入的,其值將是模塊的名稱。因此,這行代碼的意思是:只有當(dāng)該腳本被直接運(yùn)行時(shí),下面的代碼塊才會(huì)被執(zhí)行。

2.3.2 實(shí)現(xiàn)交互代碼

下面介紹實(shí)現(xiàn)交互的代碼,首先我們要知道先前我們布置的控件的名稱,有兩個(gè)途徑:①用QtDesigner打開ui文件,在右側(cè)對(duì)象查看器查看。②在轉(zhuǎn)換后的py文件中查看。我們來舉個(gè)例子,比如要知道“按鈕1”的名稱,經(jīng)查看,名稱是pushButton:

途徑①

在這里插入圖片描述

途徑②

在這里插入圖片描述

然后我們才能開始對(duì)控件的交互功能進(jìn)行實(shí)現(xiàn)。

下面對(duì)三個(gè)輸出控件(單行文本、多行文本、繪圖窗口)設(shè)置三個(gè)函數(shù),描述其功能:

(1)函數(shù)1
對(duì)應(yīng)LineEdit控件

    def function_1 (self):
        #按鈕1點(diǎn)擊事件
        self.lineEdit.setText("2024")
        #執(zhí)行該函數(shù)時(shí),會(huì)將名稱為lineEdit的控件文本內(nèi)容設(shè)置為2024

(2)函數(shù)2
對(duì)應(yīng)TextEdit控件

    def function_2 (self):
        # 按鈕2點(diǎn)擊事件
        a=self.lineEdit.text() # 獲取lineEdit的文本內(nèi)容
        a=int(a) # 由于獲取的lineEdit的文本內(nèi)容是字符串,所以要轉(zhuǎn)換為整數(shù)
        if a == 2024:
            self.textEdit.setText("Hello World")
            # 如果lineEdit的文本內(nèi)容為2024,則將textEdit的文本內(nèi)容設(shè)置為Hello World

            self.textEdit.append("今年是:")
            # 在textEdit中追加文本,會(huì)在下一行顯示
            self.textEdit.append(f"{a}年")
            # 在textEdit中追加文本,會(huì)在下一行顯示,由于a是整數(shù),所以要轉(zhuǎn)換為字符串

(3)函數(shù)3
對(duì)應(yīng)Widget控件
我們要先在文件開頭導(dǎo)入畫圖相關(guān)的包

from matplotlib.figure import Figure
#用來創(chuàng)建圖形,相當(dāng)于畫布
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
#用來將matplotlib的圖形嵌入到PyQt5的窗口中
import matplotlib.pyplot as plt
#一般用來繪圖,這里用來調(diào)整中文字體,因?yàn)橐呀?jīng)有了畫圖的FigureCanvas

而后進(jìn)行函數(shù)3的編寫

    def function_3 (self):
        #按鈕3點(diǎn)擊事件
        # 創(chuàng)建 FigureCanvas 并嵌入到 QWidget 中
        figure = Figure()
        canvas = FigureCanvas(figure)
        layout = QVBoxLayout(self.widget)
        # 我的繪圖窗口名稱叫widget,所以這里是self.widget。
        # QVBoxLayout是垂直布局,布局管理器用于管理widget中的控件,這里是FigureCanvas
        layout.addWidget(canvas) # 將FigureCanvas添加到布局管理器中

        # 設(shè)置 matplotlib 使用的字體
        plt.rcParams['font.sans-serif'] = ['SimSun', 'Microsoft YaHei']  # 使用宋體和微軟雅黑
        plt.rcParams['axes.unicode_minus'] = False  # 解決負(fù)號(hào)顯示問題

        # 繪制折線圖
        x = [1, 2, 3, 4, 5]
        y = [1, 4, 9, 16, 25]
        ax = figure.add_subplot(111)
        ax.plot(x, y, marker='o')
        ax.set_title("樣例圖")
        ax.set_xlabel("X軸")
        ax.set_ylabel("Y軸")
        ax.grid(True)
        canvas.draw()

下面進(jìn)行按鈕與相應(yīng)函數(shù)功能的連接:初始化函數(shù)中添加以下內(nèi)容

		self.pushButton.clicked.connect(self.function_1)
        # 按鈕1點(diǎn)擊事件,連接到function_1函數(shù)
        self.pushButton_2.clicked.connect(self.function_2)
        self.pushButton_3.clicked.connect(self.function_3)

完整主文件代碼如下:

import sys
from PyQt5.QtWidgets import *
from PyQt5.Qt import *
from PyQt5.QtCore import *
from PyQt5.QtWidgets import QApplication,QMainWindow,QDesktopWidget,QLineEdit
from f0622test import *
#導(dǎo)入轉(zhuǎn)換后的py文件,要用自己的轉(zhuǎn)換后的py文件的名字,我這里是f0622test.py
from matplotlib.figure import Figure
#用來創(chuàng)建圖形,相當(dāng)于畫布
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
#用來將matplotlib的圖形嵌入到PyQt5的窗口中
import matplotlib.pyplot as plt
#一般用來繪圖,這里用來調(diào)整中文字體,因?yàn)橐呀?jīng)有了畫圖的FigureCanvas



class MyWindows(QMainWindow,Ui_MainWindow):
    #繼承自兩個(gè)父類,一個(gè)是QMainWindow,一個(gè)是轉(zhuǎn)換后的py文件的類,這里是Ui_MainWindow

    def __init__(self):
        super(MyWindows,self).__init__()
        self.setupUi(self)
        self.pushButton.clicked.connect(self.function_1)
        # 按鈕1點(diǎn)擊事件,連接到function_1函數(shù)
        self.pushButton_2.clicked.connect(self.function_2)
        self.pushButton_3.clicked.connect(self.function_3)
#......
    def function_1 (self):
        #按鈕1點(diǎn)擊事件
        self.lineEdit.setText("2024")
        #執(zhí)行該函數(shù)時(shí),會(huì)將名稱為lineEdit的控件文本內(nèi)容設(shè)置為2024
    def function_2 (self):
        # 按鈕2點(diǎn)擊事件
        a=self.lineEdit.text() # 獲取lineEdit的文本內(nèi)容
        a=int(a) # 由于獲取的lineEdit的文本內(nèi)容是字符串,所以要轉(zhuǎn)換為整數(shù)
        if a == 2024:
            self.textEdit.setText("Hello World")
            # 如果lineEdit的文本內(nèi)容為2024,則將textEdit的文本內(nèi)容設(shè)置為Hello World

            self.textEdit.append("今年是:")
            # 在textEdit中追加文本,會(huì)在下一行顯示
            self.textEdit.append(f"{a}年")
            # 在textEdit中追加文本,會(huì)在下一行顯示,由于a是整數(shù),所以要轉(zhuǎn)換為字符串
        else:
            self.textEdit.setText("你好世界")
            # 如果lineEdit的文本內(nèi)容不是2024,則將textEdit的文本內(nèi)容設(shè)置為輸入錯(cuò)誤
    def function_3 (self):
        #按鈕3點(diǎn)擊事件
        # 創(chuàng)建 FigureCanvas 并嵌入到 QWidget 中
        figure = Figure()
        canvas = FigureCanvas(figure)
        layout = QVBoxLayout(self.widget)
        # 我的繪圖窗口名稱叫widget,所以這里是self.widget。
        # QVBoxLayout是垂直布局,布局管理器用于管理widget中的控件,這里是FigureCanvas
        layout.addWidget(canvas) # 將FigureCanvas添加到布局管理器中

        # 設(shè)置 matplotlib 使用的字體
        plt.rcParams['font.sans-serif'] = ['SimSun', 'Microsoft YaHei']  # 使用宋體和微軟雅黑
        plt.rcParams['axes.unicode_minus'] = False  # 解決負(fù)號(hào)顯示問題

        # 繪制折線圖
        x = [1, 2, 3, 4, 5]
        y = [1, 4, 9, 16, 25]
        ax = figure.add_subplot(111)
        ax.plot(x, y, marker='o')
        ax.set_title("樣例圖")
        ax.set_xlabel("X軸")
        ax.set_ylabel("Y軸")
        ax.grid(True)
        canvas.draw()

if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    window = MyWindows()
    window.show()
    sys.exit(app.exec_())


運(yùn)行主文件代碼,點(diǎn)擊相應(yīng)按鈕即可實(shí)現(xiàn)相應(yīng)功能。

3結(jié)果展示

到此這篇關(guān)于PyQt5利用Qt Designer實(shí)現(xiàn)簡(jiǎn)單界面交互的文章就介紹到這了,更多相關(guān)PyQt5界面交互內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vscode配置遠(yuǎn)程開發(fā)環(huán)境并遠(yuǎn)程調(diào)試運(yùn)行C++代碼的教程

    vscode配置遠(yuǎn)程開發(fā)環(huán)境并遠(yuǎn)程調(diào)試運(yùn)行C++代碼的教程

    這篇文章主要介紹了vscode配置遠(yuǎn)程開發(fā)環(huán)境并遠(yuǎn)程調(diào)試運(yùn)行C++代碼的教程,本文通過截圖實(shí)例相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-04-04
  • N叉樹的三種遍歷(層次遍歷、前序遍歷、后序遍歷)

    N叉樹的三種遍歷(層次遍歷、前序遍歷、后序遍歷)

    本文主要介紹了N叉樹的三種遍歷(層次遍歷、前序遍歷、后序遍歷),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04
  • C++深入淺出講解缺省參數(shù)

    C++深入淺出講解缺省參數(shù)

    所謂缺省參數(shù),顧名思義,就是在聲明函數(shù)的某個(gè)參數(shù)的時(shí)候?yàn)橹付ㄒ粋€(gè)默認(rèn)值,在調(diào)用該函數(shù)的時(shí)候如果采用該默認(rèn)值,你就無須指定該參數(shù)。缺省參數(shù)使用主要規(guī)則:調(diào)用時(shí)你只能從最后一個(gè)參數(shù)開始進(jìn)行省略,換句話說,如果你要省略一個(gè)參數(shù),你必須省略它后面所有的參數(shù)
    2022-07-07
  • C++使用文件實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)

    C++使用文件實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C++使用文件實(shí)現(xiàn)學(xué)生信息管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-01-01
  • C++實(shí)現(xiàn)字符串刪除字符后逆序輸出

    C++實(shí)現(xiàn)字符串刪除字符后逆序輸出

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)字符串刪除字符后逆序輸出,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-05-05
  • 淺談C#互操作的內(nèi)存溢出問題

    淺談C#互操作的內(nèi)存溢出問題

    以前了解過c++的棧內(nèi)存溢出,沒想到在c#里被我遇到了,問題看似不大,如何被恰好相鄰的四個(gè)字節(jié)是返回地址,說不定危害不小?。】磥韈#的互操作還是得小心為好
    2013-10-10
  • C語(yǔ)言模擬實(shí)現(xiàn)密碼輸入的示例代碼

    C語(yǔ)言模擬實(shí)現(xiàn)密碼輸入的示例代碼

    本文主要介紹了C語(yǔ)言模擬實(shí)現(xiàn)密碼輸入的示例代碼,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • 詳解C++設(shè)計(jì)模式編程中對(duì)訪問者模式的運(yùn)用

    詳解C++設(shè)計(jì)模式編程中對(duì)訪問者模式的運(yùn)用

    這篇文章主要介紹了C++設(shè)計(jì)模式編程中對(duì)訪問者模式的運(yùn)用,訪問者模式在不破壞類的前提下為類提供增加新的新操作,需要的朋友可以參考下
    2016-03-03
  • C++設(shè)計(jì)模式之抽象工廠模式

    C++設(shè)計(jì)模式之抽象工廠模式

    這篇文章主要介紹了C++設(shè)計(jì)模式之抽象工廠模式,本文要講的抽象工廠模式,就是工廠方法模式的擴(kuò)展和延伸,需要的朋友可以參考下
    2014-09-09
  • C語(yǔ)言詳解分析進(jìn)程控制中進(jìn)程終止的實(shí)現(xiàn)

    C語(yǔ)言詳解分析進(jìn)程控制中進(jìn)程終止的實(shí)現(xiàn)

    當(dāng)進(jìn)程完成執(zhí)行最后語(yǔ)句并且通過系統(tǒng)調(diào)用 exit() 請(qǐng)求操作系統(tǒng)刪除自身時(shí),進(jìn)程終止。這時(shí),進(jìn)程可以返回狀態(tài)值(通常為整數(shù))到父進(jìn)程(通過系統(tǒng)調(diào)用 wait())。所有進(jìn)程資源,如物理和虛擬內(nèi)存、打開文件和 I/O 緩沖區(qū)等,會(huì)由操作系統(tǒng)釋放
    2022-08-08

最新評(píng)論