端口C++类到PYQ

2024-03-29 06:10:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图将C++中的QT4自定义小部件转换成Python 2.7自定义小部件。但是,我还没有弄清楚如何用Python编写QLabel(parent)。这是来自“.cp”文件的原始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++,所以即使我做了傻事也可以自由地纠正我。我不会感到尴尬。在


Tags: 文件代码列表部件错误qtcpparent
2条回答

多重继承有效,但是基类必须以正确的顺序调用(即,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)

代码为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)

相关问题 更多 >