我找不到如何隱藏我的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