我不确定如何制作一个面板或小部件或者某些东西 - 当玩家点击某些东西时会出现。
我尝试在Qt Designer中制作一个小部件并在其上使用show()/ hide()但是当我执行show()时;隐藏(); show()第二个show语句不起作用,什么都没画。
我还有一个问题,即将它插入gridLayout导致整个网格在两者之间被分割为50/50 - 我无法为面板设置最大尺寸 - 并且从布局中删除小部件不会改变分裂回到100%。 我已经搜索了stackoverflow,但我能找到的是我应该显示的建议()/ hide(),这似乎不像宣传的那样工作。有没有人有任何见解?这似乎应该是容易做到的事情。
PS:我不介意它看起来只要它可用。该项目的部分目标是尽可能快地和丑陋地构建游戏。
编辑:按要求添加测试用例...
class GameWindow(QtGui.QWidget):
def __init__(self):
super(GameWindow, self).__init__()
# Load ui file.
loader = QtUiTools.QUiLoader()
file_ = QtCore.QFile("forms/GameWindow.ui")
file_.open(QtCore.QFile.ReadOnly)
self = loader.load(file_,self)
# Add viewport.
self.viewport = GameViewport(self)
self.gridLayout.addWidget(self.viewport, 0, 0)
self.horizontalScrollBar.valueChanged.connect(self.viewport.update)
self.verticalScrollBar.valueChanged.connect(self.viewport.update)
# Add planetDetails
self.planetDetails = PlanetDetails(None)
# Show and perform initial draw.
self.show()
class GameViewport(QtGui.QWidget):
def __init__(self,parent):
super(GameViewport,self).__init__()
self.parent = parent
def mousePressEvent(self,event):
self.parent.planetDetails.set_planet(None)
class PlanetDetails(QtGui.QWidget):
def __init__(self,parent):
super(PlanetDetails, self).__init__()
self.parent = parent
self.planet = None
# Load ui file.
loader = QtUiTools.QUiLoader()
file_ = QtCore.QFile("forms/PlanetDetails.ui")
file_.open(QtCore.QFile.ReadOnly)
self = loader.load(file_,self)
self.pushButton.clicked.connect(self.hide)
def set_planet(self, planet):
self.planet = planet
self.show()
然而,在没有Qt Designer / QML加载的情况下编写的测试用例中,我无法解决问题。
答案 0 :(得分:0)
我认为问题在于我对“自我”的任务。我似乎误读了文档中的示例。我不完全确定如何在不失去对Qt Designer功能的访问权限的情况下获得正确的行为,但至少我知道错误的位置。