我找不到如何隐藏我的Qdockwidgets的标题栏:在不少地方QDockWidget隐藏标题栏
QDockWidget.setTitleBarWidget (self, QWidget widget)
The widget argument has it's ownership transferred to Qt.
Sets an arbitrary widget as the dock widget's title bar. If widget is 0, any custom title bar widget previously set on the dock widget is removed, but not deleted, and the default title bar will be used instead.
这:
我发现这对引用
dockWidget->setTitleBarWidget(new QWidget());
但如何实际使用它们?我根本找不到任何简单的代码示例,即使在引用中也没有显示这些代码,并且我的所有尝试都以各种错误结束。 在整个页面:http://pyqt.sourceforge.net/Docs/PyQt4/qdockwidget.html#setTitleBarWidget根本就没有什么,告诉我,我怎么可以用这样的:
QDockWidget.setTitleBarWidget (self, QWidget widget)
如果我阅读文档,我应该用0取代“widget”的一个,所以我得到显示没有标题栏
self.dockWdg1.setTitleBarWidget(self, QtGui.QWidget(0))# If I don't add QtGui in front of QWidget it don't know what is QWidget
给我这个错误:
TypeError: QWidget(QWidget parent=None, Qt.WindowFlags flags=0): argument 1 has unexpected type 'int'
另一个问题,是有实际使用此引用人:? http://pyqt.sourceforge.net/Docs/PyQt4/qdockwidget.html#setTitleBarWidget
我的问题似乎很奇怪,但我发现放入系统引用,以便不完整(无代码示例),并解释这样掩盖我真的不知道,如果我找对正确的,尤其是当在另一侧,我们有这样的:http://srinikom.github.io/pyside-docs/PySide/QtGui/QDockWidget.html#PySide.QtGui.QDockWidget与pySide似乎是如此如此如此好多了。 PyQT引用成功地比MaxScript引用成功,这不是一件小事。
我的完整代码:
import sys, random
from PyQt4 import QtCore, QtGui
from PyQt4.QtGui import QPalette, QBrush, QPixmap
class MainWin(QtGui.QMainWindow):
def __init__(self):
super(MainWin, self).__init__()
self.initUI()
def initUI(self):
#central widget
self.theboard = Board(self)
self.setCentralWidget(self.theboard)
#dock1 Left Dock
self.dockWdg1 = LeftDock(self)
#Use SizeQWidget() to define the initial size of QDockWidget
self.content1 = SizeQWidget()
self.dockWdg1.setWidget(self.content1)
self.dockWdg1.setFeatures(self.dockWdg1.NoDockWidgetFeatures)
self.addDockWidget(QtCore.Qt.LeftDockWidgetArea, self.dockWdg1)
self.dockWdg1.setTitleBarWidget(self, QtGui.QWidget(0))# If I don't add QtGui in front of QWidget it don't know what is QWidget
self.resize(360, 760)
self.setWindowTitle('Test')
self.show()
class LeftDock(QtGui.QDockWidget):
def __init__(self, parent):
super(LeftDock, self).__init__(parent)
self.initLeftDock()
def initLeftDock(self):
self.setGeometry(300, 300, 200, 120)
#self.setWindowTitle('LeftDock')
class Board(QtGui.QFrame):
def __init__(self, parent):
super(Board, self).__init__(parent)
self.initBoard()
def initBoard(self):
print("ddd")
#Dummy QWidget used by QDockWidget for defining initial size.
class SizeQWidget(QtGui.QWidget):
def sizeHint(self):
return QtCore.QSize(100, 75)
def main():
app = QtGui.QApplication([])
mw = MainWin()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
我明白了,所以你使用原始的C++文档...为python ...?你有C++背景吗?我承认我还没有认真对待C++,我没有认为它足够接近python的用处,下次我肯定会看看! 我对python很陌生,因为你可能已经看到了,所以如果文档说“在这里放一个0”,这正是我正在做的,现在我将通过“0”知道文档想要说“null”这意味着在Python中“无”......谢谢! 我不想浮动dockwidgets我只是使用一个mainWindow组织不同的静态面板彼此相邻:)非常感谢! – 2014-10-06 21:42:43
虽然我收到警告消息:QWidget :: setMinimumSize:(/ QDockWidget)负值(0,-1)是不可能的。除了这个警告之外,这一切都运行良好。 – 2014-10-06 21:47:33
是的,但知道写C++是没有必要的。由于API约为99.9%,因此它主要是查找函数名称及其参数,而这些函数名称和参数通常不会深入了解C++。 – dom0 2014-10-07 08:30:23