在两个 QDialogs 之间传播调色板
Posted
技术标签:
【中文标题】在两个 QDialogs 之间传播调色板【英文标题】:Propagate palette between two QDialogs 【发布时间】:2014-07-07 11:48:59 【问题描述】:我有两个QDialog
类,DialogA 和 DialogB。 DialogA 使用自定义调色板。它包含 DialogB 的一个实例,并在用户按下按钮时将其打开。将调色板从 DialogA 传播到 DialogB 的正确方法是什么?我正在执行以下操作:
class DialogA(QDialog):
def __init__(self,parent=None):
super(DialogA, self).__init__(parent)
# Palette setup in this class
...
DialogB = DialogB(self)
class DialogB(QDialog):
def __init__(self,parent=None):
super(DialogB, self).__init__(parent)
if parent != None:
self.setPalette(parent.pallete())
有没有比检查if parent != None
更好的方法?我很挑剔,不想让 if 语句执行这个逻辑。如果我自己调用 DialogB,parent == None
所以我不能调用parent.pallete()
。
【问题讨论】:
你必须使用信号和槽,你可以在***.com/questions/9689053/…看到。 我看不出信号和插槽如何帮助设置调色板 【参考方案1】:为什么不直接给DialogB
的构造函数加个参数呢?
class DialogA(QDialog):
def __init__(self,parent=None):
super(DialogA, self).__init__(parent)
# Palette setup in this class
...
DialogB = DialogB(self, palette)
class DialogB(QDialog):
def __init__(self, palette, parent=None):
super(DialogB, self).__init__(parent)
self.setPalette(palette)
【讨论】:
我也可以这样做,但我会将其默认为 None,这与if
带有父级的语句类似。我只是想确保我不会错过每个人都使用的一些约定。
只要您尝试调用默认为 None
的参数的方法,您要么必须像正在做的那样执行某种检查,要么将受影响的代码包含在 try/除了块。以上是关于在两个 QDialogs 之间传播调色板的主要内容,如果未能解决你的问题,请参考以下文章