QtCore.QMetaObject.connectSlotsByName:根据objectName和signal自动绑定slot
from PyQt5.QtWidgets import (QWidget
, QVBoxLayout , QHBoxLayout,
QLineEdit, QPushButton) from PyQt5.QtCore import pyqtSignal
from PyQt5 import QtCore
############################################## # 参考大丸子的博客
#http://jimmykuu.sinaapp.com/blog/11 class LoginView(QWidget): ## 登录界面时发送 关闭信号
quitSignal = pyqtSignal()
loginSignal = pyqtSignal(list)
# server端没有响应
openFailureSignal = pyqtSignal() def __init__(self, parent=None):
super(LoginView, self).__init__(parent)
self.ids_receive = [] self._init_ui() def _init_ui(self): layout_button = QHBoxLayout()
layout_input = QHBoxLayout() self.input_name = QLineEdit()
self.input_pass = QLineEdit() button_login = QPushButton("登录")
button_login.setObjectName("ok_button") button_quit = QPushButton("取消")
button_hello = QPushButton("hello")
self.button_hello = button_hello
button_hello.setObjectName("hello_button") #button_login.clicked.connect(self.do_login)
#button_quit.clicked.connect(self.loginQuit) layout_button.addWidget(button_login)
layout_button.addWidget(button_quit) layout_input.addWidget(self.input_name)
layout_input.addWidget(self.input_pass)
layout_input.addWidget(self.button_hello) layout_main = QVBoxLayout()
self.setLayout(layout_main)
layout_main.addLayout(layout_button)
layout_main.addLayout(layout_input) # QMetaObject. connectSlotsByName(QObject)
#网上百度到的说明:其作用是如其名称一样,用来将QObject 里的子孙QObject的某些信号按照其objectName连接到相应的槽上
# ,如 button_hello.setObjectName("hello_button")
# 官网解释用法: http://doc.qt.io/qt-5/qmetaobject.html#connectSlotsByName
QtCore.QMetaObject.connectSlotsByName(self) def loginQuit(self):
print ("cencel") #试试注销掉该装饰器
# 有点奇怪啊,一旦注释掉装饰器,打印会执行两次啊
#QtCore.pyqtSlot(str, str)可以携带参数的
@QtCore.pyqtSlot()
def on_hello_button_clicked(self):
print('on_pbHello_clicked') @QtCore.pyqtSlot()
def on_ok_button_clicked(self):
print ("OK")
self.loginSignal.emit([1, 2]) def do_login(self):
#获取用户和密码文本框的内容
u_name = self.input_name.text()
u_pass = self.input_pass.text() print('u_name', u_name, u_pass) if __name__ == '__main__': import sys
from PyQt5.QtWidgets import QApplication
app = QApplication(sys.argv) login = LoginView()
login.show() sys.exit(app.exec_())
QtCore.QMetaObject.connectSlotsByName:根据objectName和signal自动绑定slot的更多相关文章
- qt QMetaObject::connectSlotsByName()自动关联失效问题解决
自己编写qt程序的时候,想使用qt on_objectName_signalName()命名规则自动关联信号和槽,老是发现失效.多方求解,答案事实上很简单就是没有理解objectName的含义. on ...
- QMetaObject::connectSlotsByName: No matching signal for XXX 原理探究
问题引出: 在尝试实现<Qt5.9 c++开发指南>混合UI编程章节时,用纯代码形式实现了个小按钮,然后加了个对应的槽函数,运行时就提示了这个信息. 原因探究: 首先查阅官方手册中的说明: ...
- Qt 静态函数QMetaObject::connectSlotsByName(QObject * object)按命名规则自动connect,不需要手动connect
看别人代码看到void on_MyWidget_slotTest(); 就郁闷了,没看到他代码里有connect 却能把信号和槽可以连接起来. 今日回顾书本发现该函所的nb之处. QMetaObjec ...
- Qt 静态函数QMetaObject::connectSlotsByName(QObject * object)
看别人代码看到void on_MyWidget_slotTest(); 就郁闷了,没看到他代码里有connect 却能把信号和槽可以连接起来. 今日回顾书本发现该函所的nb之处. QMetaObjec ...
- qt信号signal和槽slot机制
内容: 一.概述 二.信号 三.槽 四.信号与槽的关联 五.元对象工具 六.程序样例 七.应注意的问题 信号与槽作为QT的核心机制在QT编程中有着广泛的应用,本文介绍了信号与槽的一些基本概念.元对象工 ...
- FlexiGrid 使用 全选、自动绑定
1.介绍 Flexigrid是一个类似于Ext Gird,但基于jQuery开发的Grid.它具有的功能包括:可以调整列宽,合并列标题,分页,排序,显示/隐藏表格等.Flexigrid显示的数据能够通 ...
- WinForm开发-界面控件到实体,实体到界面控件自动绑定
在WinForm开发中,我们是不是为绑定界面控件的数据而每个控件每个控件的赋值?在保存修改时是不是也是每个控件每个控件的赋值到实体中?字段一多,那简直就是噩梦.有没有像Web中那样方便的方法直接就自动 ...
- php 自动绑定di容器实现
<?php class Bim { public function doSth() { echo __METHOD__.PHP_EOL; } } class Bar { protected $b ...
- paip.提升效率---request自动绑定domain object
paip.提升效率---request自动绑定domain object #.keyword,subtitle关键字,子标题 ------------------------- 复制request属性 ...
随机推荐
- axios 的应用
vue更新到2.0之后,作者就宣告不再对vue-resource更新,而是推荐的axios,前一段时间用了一下,现在说一下它的基本用法. 首先就是引入axios,如果你使用es6,只需要安装axios ...
- Docker 入门(Mac环境)- part 2 容器(container)
part-2 容器(container) 简介 Docker架构有三个层面,从高到低如下: stack(栈) services(服务) containers(容器) 现在接触的这些在容器这一层里,类似 ...
- ubuntu桌面使用总结
一.ubuntu12.04 修改系统字体:sudo apt-get install gnome-tweak-tool 关于ubuntu字体,个人习惯记录一下:默认字体:文泉驿微米黑 10桌面字体:文 ...
- 【php】https请求
/** * 模拟提交参数,支持https提交 可用于各类api请求 * @param string $url : 提交的地址 * @param array $data :POST数组 * @param ...
- 修改AIX Noncomp内存占用比
解决AIX系统由于文件缓存在内存未释放引发的进程异常终止问题: topas: Noncomp占用过多内存 占用内存前十的进程: ps -ealf | head -1 ; ps -ealf | sort ...
- 二分查找算法(Python版)
[本文出自天外归云的博客园] 记性不好(@.@),所以平时根本用不到的东西就算学过如果让我去想也会需要很多时间(*.*)! 二分查找算法 在一个有序数组中查找元素最快的算法,也就是折半查找法,先找一个 ...
- delphi判断线程是否正在运行
相关资料:http://www.delphitop.com/html/xiancheng/376.html unit Unit1; interface uses Winapi.Windows, Win ...
- Faiss教程:入门
Faiss处理固定维度d的数据,矩阵每一行表示一个向量,每列表示向量的一项.Faiss采用32-bit浮点型存储. 假设xb为数据集,维度为\(nb\times{d}\):xq是查询数据,维度为\(n ...
- Javascript eval()函数 基础回顾
如果您想详细了解ev al和JSON请参考以下链接: eval :https://developer.mozilla.org/En/Core_JavaScript_1.5_Reference/Glo ...
- java基础篇---XML解析(一)
XML是可扩展标记语言 在XML文件中由于更多的是描述信息的内容,所以在得到一个xml文档后应该利用程序安装其中元素的定义名称去除对应的内容,这样的操作称为XML解析. 在XML解析中W3C定义SAX ...