PyQt的一些问题

csdnbuku csdnbuku 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
将一些Qt上的代码移植到PyQt上使用。
遇到了一些问题:
问题一:

//Qt代码
QList<QPushButton *> btn = this->findChildren<QPushButton *>();
foreach (QPushButton * b, btn) {
connect(b, SIGNAL(clicked()), this, SLOT(btn_clicked()));
}

这段代码目的是将程序中的所有按钮都连接到btn_clicked(),很方便。
pyqt上的我改改了,大概是:

btn = []
btn = self.findChildren(QPushButton)
b = QPushButton()
for b in btn:

b.connect(self,SIGNAL("clicked()"),self.btn_clicked)

这样格式,但不起作用。PyQt中好像没有QList这个类,其用法我不是很清楚 ,目前的解决方法是:
直接
self.ui.btna.clicked.connect(self.btn_clicked)
self.ui.btnb.clicked.connect(self.btn_clicked)
self.ui.btnc.clicked.connect(self.btn_clicked)
self.ui.btnd.clicked.connect(self.btn_clicked)
self.ui.btne.clicked.connect(self.btn_clicked)
self.ui.btnf.clicked.connect(self.btn_clicked)
self.ui.btng.clicked.connect(self.btn_clicked)
self.ui.btnh.clicked.connect(self.btn_clicked)

………………
手动连接。比较麻烦。
问题二:
事件过滤器中的这段代码怎么转换到PyQt中使用,Qt上的这个代码实在太抽象。不会转了。
QKeyEvent *keyEvent = static_cast<QKeyEvent *>(event);

if (keyEvent->key() == Qt::Key_Space) {
}

我寻思了直接
keyEvent=QKeyEvent()
但是 没效果。
网上根本找不到结果!都是最简单的事件过滤器的应用。
问题三:
connect(qApp, SIGNAL(focusChanged(QWidget *, QWidget *)),this, SLOT(focusChanged(QWidget *, QWidget *)));
怎么转换成PyQt的,我是直接:
qApp.connect(self,QtCore.SIGNAL("focusChanged()"),self.focusChanged)
但是没效果。一遇到带*这些玩意。我就不懂怎么玩了!或者改成focusChanged(QWidget,QWidget)之类的?
求大神解决。


随便问问。这么冷门的东西,估计没多少人回我……
...全文
评论 7
收藏 已收藏
分享
返回顶部
csdnbuku
脚本语言 37,737 成员 34,208 内容