首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >启动时带有QTablewidget信号的QTablewidget

启动时带有QTablewidget信号的QTablewidget
EN

Stack Overflow用户
提问于 2019-09-05 12:15:51
回答 1查看 160关注 0票数 0

有两个类,一类是带有Table的QTableWidget类,一个函数在启动时用自定义信号调用信号,另一个是插槽来计数行数。

自定义信号用于发出行数并将其转换为另一个类。

第一部分正在按预期工作。似乎时隙从不在另一个类中发出或调用函数。

代码语言:javascript
复制
class Table(QtWidgets.QWidget):
    rowCount = QtCore.pyqtSignal(int)
    def __init__(self, parent=None):
        super(Table, self).__init__(parent)
        self.tableWidget = QtWidgets.QTableWidget(0, 4)
        self.countrow()

    def countrow(self):
        count = self.tableWidget.rowCount()
        self.rowCount.emit(count)

另一个类:

代码语言:javascript
复制
class Anotherwidget(QtWidgets.QWidget):
    def __init__(self, parent=None):
        super( Anotherwidget, self).__init__()

        self.table = Table()
        self.table.rowCount.connect(self.addrow)

    @QtCore.pyqtSlot(int) 
    def addrow(self, count):
        print(count)

我在这里做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-05 15:49:25

问题是信号是在连接之前发出的。

一个可能的解决方案是使用QTimer.singleShot(0, ...)

代码语言:javascript
复制
class Table(QtWidgets.QWidget):
    rowCount = QtCore.pyqtSignal(int)
    def __init__(self, parent=None):
        super(Table, self).__init__(parent)
        self.tableWidget = QtWidgets.QTableWidget(0, 4)
        QtCore.QTimer.singleShot(0, self.countrow)

    def countrow(self):
        # ...

另一种可能的选择是在连接之后调用countrow:

代码语言:javascript
复制
class Table(QtWidgets.QWidget):
    rowCount = QtCore.pyqtSignal(int)
    def __init__(self, parent=None):
        super(Table, self).__init__(parent)
        self.tableWidget = QtWidgets.QTableWidget(0, 4)

    def countrow(self):
        # ...
代码语言:javascript
复制
class Anotherwidget(QtWidgets.QWidget):
    def __init__(self, parent=None):
        super( Anotherwidget, self).__init__()

        self.table = Table()
        self.table.rowCount.connect(self.addrow)
        self.table.countrow()

    def addrow(self):
        # ...
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57805274

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档