qt--(python版和visual studio版)

本文详细介绍了使用Python的PyQt和Visual Studio C++进行Qt开发的步骤,包括安装、UI设计、信号与槽、线程处理、资源文件、TCP服务器和客户端以及打包等关键环节,同时提供了相关函数的使用和转换技巧。
摘要由CSDN通过智能技术生成

#一、python版
转载自https://www.cnblogs.com/tkinter/p/5632245.html
##安装(python3.5下使用)

pip install pyqt5
pip install PyQt5-tools

##简单使用
###1、制作界面
a)打开qt designer(python安装目录下Lib\site-packages\pyqt5-tools\designer.exe)
这里写图片描述
b)新建一个界面
file ->new->mainwindow->OK
这里写图片描述
其中,区域1是UI界面制作导向,QtDesigner为我们提供了一些常用模块,非常方便;区域2是UI控件列表;区域3是控件属性列表;区域4是Action Editor编辑列表;区域5信号和槽的编辑列列表;区域6是资源处理窗口。
###2、信号和槽
Edit—>Edit Signals/Slots,然后光标移到按钮上点击拖拽,这时会弹出一个编辑框,编辑完信号和槽后,需要去文件中实现槽函数
i.信号绑定槽

self.pushButton.clicked.connect(self.firtPyQt5_button_click)

ii.信号绑定多个槽

self.pushButton.clicked.connect(self.firtPyQt5_button_click)
self.pushButton.clicked.connect(self.firtPyQt5_button_click_2)

iii.信号绑定信号

self.pushButton.clicked.connect(self.firtPyQt5_button_click)
self.pushButton1.clicked.connect(self.pushButton.clicked)

iv.信号与信号,信号与槽的解绑

self.pushButton1.clicked.disconnect(self.pushButton.clicked)
self.pushButton.clicked.disconnect(self.firtPyQt5_button_click_2)

v,自定义信号

PyQt5提供了QtCore.pyqtSignal函数来产生一个signal,之后就是熟悉的绑定操作了,看个实例就清楚了

class EmitSignal(QWidget):
    def __init__(self):
        super(EmitSignal,self).__init__()
        self.customSignal = pyqtSignal()

    def emitCustomSignal(self):
        self.customSignal.emit()

###3、资源文件
在QtDesigner引用资源文件之前,需要先准备一个qrc文件,它跟xml文件比较类似,用来制定资源文件的路径

<RCC version="1.0">
    <qresource>
        <file>qt.png</file>
        <file>penguin.jpg</file>
    </qresource>
</RCC>

然后引用
这里写图片描述
###4、将UI文件转为python代码

pyuic5 -o firstPyQt5.py firstPyQt5.ui

###5、编写main.py

import sys

from PyQt5.QtWidgets import QApplication , QMainWindow

from firstPyQt5 import *

if __name__ == '__main__':
    '''
    主函数
    '''

    app = QApplication(sys.argv)
    mainWindow = QMainWindow()
    ui = Ui_mainWindow()
    ui.setupUi(mainWindow)
    mainWindow.show()
    sys.exit(app.exec_())

g)运行程序
这里写图片描述
###6、pyqt线程
启动界面的线程暂称为UI线程。界面执行命令时都在自己的UI线程中。
如果在UI线程中执行网络连接和数据库操作等耗时的操作,界面会被卡住,Windows下有可能会出现“无响应”的警告。
阻塞UI线程会降低用户体验和应用稳定性。因此我们可以把耗时操作放在线程中去执行。
QThread代表一个线程,我们可以复写run函数来执行我们要的操作。
QThread可以使用 QtCore.pyqtSignal 来与界面交互和传输数据。
例子:

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

# Form implementation generated from reading ui file 'hh.ui'
#
# Created by: PyQt5 UI code generator 5.10.1
#
# WARNING! All changes made in this file will be lost!

from PyQt5 import QtCore, QtWidgets
class TimeThread(QtCore.QThread):
    signal_time = QtCore.pyqtSignal(str, int)  # 信号
    def __init__(self, parent=None):
        super(TimeThread, self).__init__(parent)
        self.working = False
        self.num = 0

    def start_timer(self):
        self.num = 0
        self.working = True

    def stop_timer(self):
        self.working=False

    def run(self):
        while self.working:
            self.signal_time.emit("Running time:", self.num)  # 发送信号
            self.num += 1
            self.sleep(1)
class Ui_MainWindow(object):
    def __init__(self):
        super(Ui_MainWindow, self).__init__()
        self.timer_t = TimeThread()
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(800, 600)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.pushButton = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton.setGeometry(QtCore.QRect(350, 170, 300, 23))
        self.pushButton.setObjectName("pushButton")
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值