-
addwidget()
方法用于向布局中添加控件;
addLayout()
方法用于向布局中添加子布局; -
QSplitter需要添加到QBoxLayout中进行配合使用,两者的布局方向要保持一致。
hbox.addWidget(splitter1)
-
QFrame, QSplitter与QBoxLayout之间的相互关系:来自https://www.cnblogs.com/lipx9527/p/14020423.html,总结得很好。
可使用QSplitter进行动态布局,通过拉动网格线改变大小;
QHBoxLayout或者QVBoxLayout装小部件,使用addWidget()方法;
QHBoxLayout和QVBoxLayout相互装,使用addLayout()方法;
QFrame装QHBoxLayout或者QVBoxLayout,使用setLayout()方法,1个QFrame只能装1个QHBoxLayout或QVBoxLayout,装多个,则第一个有效;
QSplitter装QFrame,使用addWidget()方法;
QHBoxLayout或者QVBoxLayout装QSplitter,使用addWidget()方法;
主窗口self只支持.setLayout()方法,参数不能是QSplitter对象; -
6种弹出对话框的使用参考:
https://blog.csdn.net/maidu_xbd/article/details/85696510 -
QPlainTextEdit使用参考:
https://www.cnblogs.com/zach0812/p/11381938.html
https://doc.qt.io/archives/qtforpython-5.12/PySide2/QtWidgets/QPlainTextEdit.html -
QT中LineEdit TextEdit PlainTextEdit 这三个控件有什么区别?
QLineEdit是单行文本输入,一般用于用户名、密码等少量文本交互地方。
QTextEdit用于多行文本,也可以显示HTML格式文本。
QPlainTextEdit与QTextEdit很像,但它多用于需要与文本进行处理的地方,而QTextEdit多用于显示,可以说,QPlainTextEdit对于plain text处理能力比QTextEdit强。 -
基本控件
-
QTreeView 与 QTreeWidget 使用参考:
https://my.oschina.net/asjoker/blog/864868
https://blog.csdn.net/lly1122334/article/details/103040110 -
Model和View
https://zhuanlan.zhihu.com/p/165649839 -
print标准输出sys.stdout以及stderr重定向QTextBrowser等图形界面对象:
https://blog.csdn.net/LaoYuanPython/article/details/105317746 -
获取点击的按钮名称:
self.sender().objectName()
或者为槽函数传递参数:https://www.jianshu.com/p/7f436ad87e6f -
QSetting用法:
https://zhuanlan.zhihu.com/p/108128557Qseting的其余常见用法: Qsettings.allKeys(self) 返回所有的key,以list的形式 Qsettings.applicationName(self) 返回应用程序名称 Qsettings.clear(self) 清楚此settings里的内容 Bool Qsettings.contains(self,key) 返回真,如果存在名为key的key Qsettings.remove(self, keyname) 清楚key及其所对应的value Qsetting.fileName() 返回写入注册表地址,或者INI文件路径
-
动态添加控件:
https://blog.csdn.net/sandorn/article/details/92842847
动态删除控件:https://stackoverflow.com/questions/5899826/pyqt-how-to-remove-a-widget
-
常用对话框以及自定义弹出对话框:
https://blog.51cto.com/xvjunjie/2148152
https://www.cnblogs.com/jsben/p/4909900.html
https://blog.csdn.net/qq_39315153/article/details/88241517 -
关于布局的一些Trick:
- 在已经添加了layout的情况下,如何让一个控件居中? 答:给这个控件添加一个布局,即可让控件居中,水平layout可以让控件自动水平居中。
- qt designer中如何给单个控件添加布局?答:首先将layout拖到界面中,然后选中该layout,选中后该layout就会在右侧对象查看器中出现,最后将控件拖到对象查看器中的layout中即可。
- 控制不同layout的对齐。在已经添加了layout后,如果发现有不对齐的情况,可以调整layout的上下左右margin来调整。
-
layout的一些经验:
- 先不使用任何layout,把所有控件给按位置摆放;
- 然后先从最内层开始进行控件的layout设定,逐步扩展到外层的;
- 最后调整layout中控件的大小比例,优先使用layout中的layoutStrentch属性(与上述调整margin在同一位置)来控制。如下图,在一行中有几个控件就会有几个值,分别代表各自的大小比例。值得一提的是,如果这样的调整还是无法满足需求,可以添加一个Spacers进行辅助调节。
-
调整控件的大小和位置
-
QWidget有一个sizePolicy的属性。
Mininum: 最小,但是受layout的影响,例如某个button在单独一行的layout里,尽管选的是Mininum,还是会独占一行;
Fixed: 面对上面的问题,可以将策略选为Fixed即可保持固定大小。那水平伸展和垂直伸展有什么用呢?例如有下面一个水平layout中有三个控件,改变他们的水平伸展依次为2, 1, 1,那么这三个控件的水平方向长度比例就是2:1:1.
-
Spacer的作用:可以在控件中间添加空隙。
-
-
button的objectName和按钮名称的区别:按钮的名字是会显示在按钮上的字符串,是通过button.setText()进行设置的;也就可以通过button.text()获取;而objectName是一个控件的名称,是给控件起的名字,通过widget.setObjectName()进行设置,通过widget.objectName()获取。
-
在按钮上右键弹出菜单:https://blog.csdn.net/jiuzuidongpo/article/details/46507403
-
由于焦点的原因,文本框的placeholder可能无法显示的问题:https://stackoverflow.com/questions/24274318/placeholder-text-not-showing-pyside-pyqt
-
qss格式:https://stackoverflow.com/questions/25139616/how-to-set-a-different-background-color-to-a-disabled-button-with-qss
有个老哥提出了这个问题:
上面这个写法为什么错误?
答案就是:QPushButton和disabled之间不能加空格! -
自定义标题栏:
https://blog.csdn.net/GrayOnDream/article/details/84932839
https://blog.csdn.net/qq_37386287/article/details/87900403
自定义标题栏的思路其实就是将原来的标题窗口通过self.setWindowFlags(Qt.FramelessWindowHint)
进行隐藏,然后新建一个控件,将自定义的标题栏和原来的centralwidget作为新控件的一个组成,最后将新控件设置为mainWindow的centralwidget即可。 -
QLayout::setContentsMargins(int left, int top, int right, int bottom), 4个参数顺序是左上右下。设置左侧、顶部、右侧和底部边距,以便在布局周围使用。
margin(边距)落在border(边框)外。
border(边框)在margin(边距)和padding(填充)之间。
padding填充落在border(边框)内, 在border(边框)和实际contents(内容)之间。
content(内容)是我们删除 margin, border, padding后从原始窗口小部件或子控件中留下的内容。
参考:https://zhuanlan.zhihu.com/p/47221211 -
以RadioButton为例说明qss中可以设置的属性。https://blog.csdn.net/aiwangtingyun/article/details/94626464
PyQt的代码之道
最新推荐文章于 2024-06-25 07:54:15 发布