将C++类端口连接到PyQt
Port C++ class to PyQt
我正在尝试将用C++编写的Qt4自定义小部件转换为Python 2.7自定义小部件。然而,我一直无法弄清楚QLabel(parent)
将如何用Python编写。这是来自".ccp"文件的原始C++代码:
DocumentWidget::DocumentWidget(QWidget *parent)
: QLabel(parent)
{
currentPage = -1;
setAlignment(Qt::AlignCenter);
}
QLabel(parent)
似乎是某种初始化器列表。我曾尝试在Python中并行使用多重继承,但这导致了以下错误:Cannot create a consistent method resolution order (MRO) for bases QLabel, QWidget
。
我正在尝试移植代码,而不是为C++小部件创建包装器,因为我不了解C++,并且认为我将来必须进一步自定义小部件。
我没有受过程序员的培训,这是我第一天接触C++,所以即使我在做一些愚蠢的事情,也可以随时纠正我。我不会感到尴尬。
代码为DocumentWidget
类定义了一个构造函数,该类继承了QLabel
并需要一个QWidget
作为父级。
等效的PyQt代码是:
from PyQt4 import QtCore, QtGui
class DocumentWidget(QtGui.QLabel):
def __init__(self, parent):
super(DocumentWidget, self).__init__(parent)
# or QtGui.QLabel.__init__(self, parent)
self.currentPage = -1
self.setAlignment(QtCore.Qt.AlignCenter)
多重继承有效,但基类必须按正确的顺序调用(即DocumentWidget(QLabel, QWidget)
而不是DocumentWidget(QLabel, QWidget)
(。
完整:
from PyQt4.QtCore import *
from PyQt4.QtGui import *
class DocumentWidget(QLabel, QWidget):
def __init__(self, parent=None):
super(DocumentWidget, self).__init__()
self.currentPage = -1
self.setAlignment(Qt.AlignCenter)
相关文章:
- 当套接字连接断开时检测C/C++Unix
- 无法在windows上使用mingw将sqlite3与c连接
- 到连接组件算法的问题(递归)
- QTcpSocket在不阻塞GUI的情况下重新连接到服务器
- 无法在C++中建立与MySQL数据库的连接
- PC中的程序和PHONE中的本机描述应用程序之间的数据连接
- 在Qt Creator中,如何在连接到正在运行的进程后查看控制台输出
- 连接 dockerized 模型和 dockerized 数据库时出现"无法 SQLConnect"错误
- 使用 bfs 解决连接组件问题时得到错误的答案
- 在C++的两个字符串中连接以逗号分隔的唯一值
- 如何修复valgrind启动时的致命错误(与libc6-dbg和libc6-dbg:i386连接)
- 需要将一行代码从C++ Qt翻译成PyQt
- C++应用程序 MySQL odbc 数据库连接错误:在引发"otl_tmpl_exception<>"实例后终止调用
- OSX蓝牙打开RFCOMMChannelAsync声称已连接,但未建立连接,并且从未调用过委托
- 在 libcurl 连接池中预创建连接
- 套接字连接"Operation not permitted"错误,甚至使用升压/平发器根.cpp
- libcurl 和 DNS ttl 中的内部连接管理
- 如何应用 libcurl 的持久连接选项
- 提升 ASIO - io_service 不要等待连接到线程
- WinSock2:connect() 提供"连接被拒绝"