我不确定如何制作一个面板或小部件或 - 什么东西 - 当玩家点击某物时出现。我试着在Qt Designer中制作一个小部件,并使用show()/ hide(),但是当我执行show()时,隐藏(); show()第二个显示语句不起作用,没有任何绘制。如何在PySide中上下文显示信息?
我也有这样的问题,插入一个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设计/ QML装载写一个测试用例来重现问题。
你应该粘贴你的“不工作”的代码。没有看到你在做什么,很难找出问题所在。 'show/hide'和'QGridLayout'的行为肯定如预期。 – Avaris 2012-03-13 00:26:29
添加了测试用例。 如果QGridLayout的行为应该像我应该使用的而不是QGridLayout那样来获得我需要的行为? – Tarinaky 2012-03-13 10:12:50
不,我的意思是'QGridLayout'表现得像你想要的那样。单件商品需要100%。根据尺寸政策分为多个。我仍然需要'* .ui'文件来运行你的代码并观察,但'self = loader.load(file_,self)'行看起来很可疑。您正在为自己设置小部件的父级。 – Avaris 2012-03-13 15:42:32