QObject

from PyQt5.QtCore import QObject
设置属性:
QObject.__subclasses__() 返回所有子类
obj.setObjectName('ppp') 设置ObjectName
obj.objectName() 返回名称
obj.setProperty('lm',51) #给控件设置自定义属性和属性值
print(obj.property('lm')) #返回属性值
print(obj.dynamicPropertyNames()) #返回所有的属性
父子关系:
obj0 = QObject()
obj1=QObject()
obj1.setParent(obj0) #给obj1设置父对象
obj1.setParent(None) #释放父对象
print(obj1.parent()) #返回父对象地址。<PyQt5.QtCore.QObject object at 0x000000E3702D0168>
print(obj0.children()) #返回子对象地址
print(obj0.findChild(QObject)) #返回指定类型的第一个子对象或孙对象
#参数1 类型或类型元组
print(obj0.findChild(QObject,'2')) #返回指定类型,objectName为2的第一个子对象或孙对象
#参数2 objectName属性
#没找到 返回 None
print(obj0.findChild(QObject, '3',Qt.FindDirectChildrenOnly))
#参数3:
#Qt.FindChildrenRecursively=0x1 查找object的所有孩子(递归搜索)也是默认
#Qt.FindDirectChildrenOnly=0x0 查找object的直接孩子
#需要 from PyQt5.QtCore import *
print(obj0.findChildren(QObject)) #查找指定类型的所有子对象和孙对象
del self.obj1 #删除对象
【删除栈中的对象名,而堆中实际空间没有删除,堆中的实际空间还可以被其它对象引用比如父子关系】
obj.deleteLater() 删除对象,堆中的实际空间也释放了
不会马上删除,它发出一个删除event,主循环接收到删除event后才删除
父对象被销毁后,子对象也就销毁了
print(i.isWidgetType()) #判断对象是不是控件
print(i.inherits('QWidget')) #判断对象i是不是继承于QWidget类;是返回True
信号:
obj2.destroyed.connect(lambda :print('obj2被销毁')) 在对象obj2被销毁之前立即发出,不能被阻止
会向槽函数传递一个对象参数【不知道是哪个对象???】
obj2.objectNameChanged.connect() #在objectName发生变化时发出信号
会向槽函数传递一个字符串参数,就是刚刚修改的objectName的名称
obj2.objectNameChanged.disconnect() #取消信号与槽函数的连接
obj2.blockSignals(True) #临时阻断信号与槽函数的连接
False 恢复连接
bool=obj2.signalsBlocked() #判断信号是否被临时阻断;Ture被阻断
s=obj2.receivers(obj2.objectNameChanged) #返回指定对象指定信号连接了几个槽函数
重写消息分发函数:
from PyQt5.QtWidgets import QApplication, QWidget,QLabel,QPushButton
from PyQt5.QtCore import *
import sys class win(QWidget): #创建一个类,为了集成控件
def __init__(self):
super(win, self).__init__()
self.setWindowTitle('窗口标题')
self.resize(200,200)
self.setup_ui()#控件布局函数 def setup_ui(self): #控件布局
#label = QLabel('标签控件', self)
button = QPushButton('按钮', self)
#label.move(10, 10)
button.move(70, 150)
button.pressed.connect(self.a) def a(self):
print('按钮被点击了') class App(QApplication):
def notify(self, rec, evt) : #重写消息分发函数。参数rec保存消息接收对象,参数evt保存消息事件
if rec.inherits('QPushButton') and evt.type()==QEvent.MouseButtonPress:
#rec.inherits('QPushButton') rec继承于QPushButton
print(rec, evt) return super().notify(rec, evt) #执行父类QApplication的消息分发函数 if __name__=='__main__': app=App(sys.argv) #创建应用 window=win() window.show() sys.exit(app.exec_())
QEvent参考:https://www.cnblogs.com/findumars/p/8076247.html
重写按钮事件函数:
from PyQt5.QtWidgets import QApplication, QWidget,QLabel,QPushButton
from PyQt5.QtCore import *
import sys class Btn(QPushButton):
def event(self, evt): #重写按钮事件函数
if evt.type()==QEvent.MouseButtonPress:
print(evt)
return super().event(evt)
def mousePressEvent(self, evt): #重写按钮的鼠标按下事件
print('鼠标按下了。。。。。。')
return super().mousePressEvent(evt) class win(QWidget): #创建一个类,为了集成控件
def __init__(self):
super(win, self).__init__()
self.setWindowTitle('窗口标题')
self.resize(200,200)
self.setup_ui()#控件布局函数 def setup_ui(self): #控件布局
#label = QLabel('标签控件', self)
button = Btn('按钮', self)
#label.move(10, 10)
button.move(70, 150)
button.pressed.connect(self.a) def a(self):
print('按钮被点击了') if __name__=='__main__':
app=QApplication(sys.argv) #创建应用
window=win()
window.show()
sys.exit(app.exec_())

QObject的更多相关文章
- Qt - 错误总结 - QObject::connect: Cannot queue arguments of type 'PVCI_CAN_OBJ' (Make sure 'PVCI_CAN_OBJ' is registered using qRegisterMetaType().)
背景:一个线程通过signal-slot发送PVCI_CAN_OBJ类型的值到主线程中, 错误提示: QObject::connect: Cannot queue arguments of type ...
- Qt::QObject类
QObject 类是Qt 所有类的基类. QObject是Qt对象模型的核心.这个模型的中心要素就是一种强大的叫做信号与槽无缝对象沟通机制.你可以用 connect()函数来把一个信号连接到槽,也可以 ...
- Qt:QObject translate
qobject类是qt所有对象的基类. QObject是Qt的核心对象模型.中心在这个模型是一个非常强大的无缝沟通对象称为信号与槽机制.你可以连接一个信号槽连接()和破坏的连接与断开连接().为了避免 ...
- Qt QObject
[1]Qt的QObject 1.测试代码如下: #include<QApplication> #include<QPushButton> #include<QDebug& ...
- QObject::deleteLater()并没有将对象立即销毁,而是向主消息循环发送了一个event,下一次主消息循环收到这个event之后才会销毁对象 good
程序编译运行过程很顺利,测试的时候也没发现什么问题.但后来我随手上传了一个1G大小的文件,发现每次文件上传到70%左右的时候程序就崩溃了,小文件就没这个问题.急忙打开任务管理器,这才发现上传文件的时候 ...
- Qt使用一个事件队列对所有发出的事件进行维护(QObject的event()函数相当于dispatch函数),用EventLabel 继承QLabel作为例子(简单明了) good
事件(event)是由系统或者 Qt 本身在不同的时刻发出的.当用户按下鼠标.敲下键盘,或者是窗口需要重新绘制的时候,都会发出一个相应的事件.一些事件在对用户操作做出响应时发出,如键盘事件等:另一些事 ...
- 深入了解Qt(一)之QObject
深入了解Qt主要内容来源于Inside Qt系列,本文做了部分删改,以便于理解.在此向原作者表示感谢! QObject这个 class 是 QT 对象模型的核心,关于对象模型可以阅读C++对象模型详解 ...
- 利用QObject反射实现jsonrpc
1.jsonrpc请求中的params数组生成签名 static QString signatureFromJsonArray(const QJsonArray &array) { QStri ...
- Qt源码分析之QObject
原文:http://blog.csdn.net/oowgsoo/article/details/1529284 我感觉oowgsoo兄弟写的分析相当透彻,赞! 1.试验代码: #include < ...
- Qt 静态函数QMetaObject::connectSlotsByName(QObject * object)按命名规则自动connect,不需要手动connect
看别人代码看到void on_MyWidget_slotTest(); 就郁闷了,没看到他代码里有connect 却能把信号和槽可以连接起来. 今日回顾书本发现该函所的nb之处. QMetaObjec ...
随机推荐
- Dockerfile技巧
换镜像源 Ubuntu RUN sed -i 's/archive.ubuntu.com/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list A ...
- 纪中2018暑假培训day1提高b组改题记录
收到意见,认为每天的程序和随笔放在一起写的博客太长了,于是分开整理 day1 模拟赛,看了看提高a组t1的样例就不太想写,于是转而写b组 t1: Description 给定一个n个点m条边的有向图, ...
- A1144. The Missing Number
Given N integers, you are supposed to find the smallest positive integer that is NOT in the given li ...
- [bzoj1563][诗人小g]
bzoj1563 思路 首先考虑\(n^2\)的暴力dp,用sum[i]表示前i句话的长度总和.f[i]表示前i句话最小的不协调度之和.转移的时候考虑枚举前面的每个点,找到转移的最优秀的那个点. 然后 ...
- 登录rabbitmq报错User can only log in via localhost
在访问管理界面使用guest用户登录时出现login failed错误. 到服务器上查询日志显示出现错误的原因是:HTTP access denied: user ‘guest’ - User can ...
- Django 子程序
在Web应用中,通常有一些业务功能模块是在不同的项目中都可以复用的,故在开发中通常将工程项目拆分为不同的子功能模块,各功能模块间可以保持相对的独立,在其他工程项目中需要用到某个特定功能模块时,可以将该 ...
- 浅谈 WebDriver如何应对不同浏览器
selenium2 基于对象的测试,在selenium2中一共支持以下浏览器: Firefox(FirefoxDriver) IE(InternetExplorerDriver) Chrome(Chr ...
- POJ-1077 HDU 1043 HDU 3567 Eight (BFS预处理+康拓展开)
思路: 这三个题是一个比一个令人纠结呀. POJ-1077 爆搜可以过,94ms,注意不能用map就是了. #include<iostream> #include<stack> ...
- Httpclient超时timeout设置
一:连接超时:connectionTimeout 1:指的是连接一个url的连接等待时间. 二:读取数据超时:soTimeout 1:指的是连接上一个url,获取response的返回等待时间. Fo ...
- fork()、vfork()、clone()的区别
因为生活的复杂,这是一个并行的世界,在同一时刻,会发生很多奇妙的事情,北方下雪,南方下雨,这里在吃饭,那边在睡觉,有人在学习,有人在运动,所以这时一个多彩多姿的世界,每天都发生着很多事情,所以要想很好 ...