Qt与PyQT中设置ToolBar在AllowedArea的显示
因为个人对传统的软件GUI界面不是太喜欢,最近又在学习Qt和PyQt5,所以就有了设置ToolBar在窗口的不同地方的想法,经过浪里淘沙,最终在Qt官网里找到了,原来再添加toolBar的时候是由设置toolbar位置的参数(addToolBar()有多个重载),只是有很多的教材都忽略了这么一个参数。
这是QMainWindow中的各个构成框架,通过他可以清晰的了解各个控件可以放置的位置,对QMainWindow也有一个比较直观的了解。
以下是Qt官网上关于该类(在QMainWindow)的添加QToolBar控件的函数的解析。
在第一个重载函数中就指出了需要把toolbar放置的地方,其取值有:
在添加ToolBar 的时候,就可以根据自己对工具栏位置的喜好,传入适合的参数,但是注意这里的第二个参数是一个QToolBar对象,其实QToolBar还有很多的设置属性,比如FlaotingAble,moveAble等,这些可以使你的工具栏实现工具栏在任何可以停靠的位置。
下面是我在PyQt中实现的代码以及效果图:
1 import sys 2 from PyQt5.QtWidgets import * 3 from PyQt5.QtCore import * 4 from PyQt5.QtCore import * 5 6 class MainWindow(QMainWindow): 7 def __init__(self,parent=None): 8 super(MainWindow,self).__init__(parent) 9 self.setWindowTitle('Left-ToolBar') 10 self.resize(1000,618) 11 self.initUI() 12 13 def initUI(self): 14 self.Creat_Menu() 15 self.Creat_ToolBar() 16 17 self.widget=QWidget() 18 self.mainLayout=QHBoxLayout() 19 #Add diffrent Widget for the CentraWindow 20 21 self.edit=QTextEdit() 22 self.mainLayout.addWidget(self.edit) 23 24 self.widget.setLayout(self.mainLayout) 25 self.setCentralWidget(self.widget) 26 27 28 def Creat_Menu(self): 29 self.menu=self.menuBar() 30 file=self.menu.addMenu('File') 31 file.addAction('New') 32 file.addAction('Open') 33 file.addAction('Close Project') 34 35 tool=self.menu.addMenu('Tool') 36 tool.addAction('Python') 37 tool.addAction('C++') 38 tool.addAction('C') 39 40 def Creat_ToolBar(self): 41 self.toolBar=QToolBar() 42 #MainWindow.addToolBar(QtCore.Qt.LeftToolBarArea, self.toolBar) 43 self.addToolBar(Qt.LeftToolBarArea,self.toolBar) 44 self.toolBar.addAction('Edit') 45 self.toolBar.addAction('Open') 46 47 if __name__=='__main__': 48 app=QApplication(sys.argv) 49 demo=MainWindow() 50 demo.show() 51 sys.exit(app.exec())
其实关于Qt和PyQt5实现GUI编程,从根本上来说其方法是一样的(我说的是类中具有的方法),在编写PyQt5的代码时,完全可以参考Qt中的解析。还有一个是个人最近觉得比较重要的:无论是使用PyQt5还是Qt,联合使用UI设计器可以非常方便的开发(因为个人一直觉得用代码开发可以对控件位置精确掌控,而使用UI就像是奇技淫巧,做不到完美,不值得学习,但是我错了!)