摘要:
本文将给大家简单介绍一下Qt中常用的几个控件的使用。其实每个控件的使用方法都差不多。具体如何使用更多的时候是需要查找文档API,所以本文也会在介绍使用控件的时候简单的介绍以下文档API的使用。
本文的实验内容:
1.文本输出框中输出Combox Box当前选择的内容。
2.能够通过文本输入框动态的给Combox Box增加备选的内容。
1.Combo Box(组合框)
Combox Box是一个非常常见的控件,看到名字可能陌生,但是看到这个图片你一定见过。
下面简单介绍一下组合框的使用。
步骤1:
打开Qt Designer,新建一个widget。
步骤2:
在工具盒中的Input Widgets中拽进来一个Combox Box。
后面为了实验的方便,再拽进来一个文本输出框Text Browser,和一个pushButton以及一个line Edit(文本输入框)
步骤3:
按照自己喜欢的方式摆放,例如下图:
步骤4:
放好组件之后,我给按键(添加)编辑一个信号/槽,槽的名字为add()。
给按键(显示)编辑信号/槽,名字为show_current()
步骤5:
保存ui,保存的名字为test.ui。
步骤6:
将.ui文件转换成.py文件
pyuic5 -o test.py test.ui
ok..至此我们ui设计部分已经完成了,后面的工作在Qt Desinger上就无法完成了,需要自己撸代码了。
这里需要解决以下几个问题:
1.如何读取当前Combox Box的内容
2.如何给Combox Box添加备选的内容?
3.Line Edit怎么读取当前输入的文本?
4.textBrowser(文本输出框)怎么输出文本?
其实,这几个问题熟练API文档就可以去文档找答案了。所以,为了大家后面更好的学习PYQT,下面给新手玩家分享一下如何找API。
首先,官网API地址:https://doc.qt.io/qt-5/qtmodules.html。
这个网站一进来是Qt所有模块的API的入门。
但是,这个并没有什么大的帮助,因为很多模块我们暂时都用不上,有一个我们非常高频的使用到,就是最后一个 Qt Widgets。
这里给大家它的入口:https://doc.qt.io/qt-5/qtwidgets-module.html
这个网站一进来,具体如下:
看到这个网站可能大家有几个疑惑:
1.为什么是写着C++ Class?,我明明要的是python的API呀?。
C++的API和Python的API可以说是基本一致的。我们查看API的时候就是只是想搞清楚需要传递什么参数,会返回什么参数,能实现什么功能而已。
2.有非常非常多的类,可能困惑不知道哪个是我们需要找的。
这个我推荐大家一个找的方法。比如说我们现在需要知道Combo Box这个控件有哪些API,我们可以在Qt Desinger的对象查看器中查看其是属于哪个类的。具体来说:
从对象查看器中我们就可以看到,comboxBox是属于类QComboBox的。所以,我们直接Ctrl+F搜索https://doc.qt.io/qt-5/qtwidgets-module.html里面的QComboBox就可以找到。
同理,其他所有的组件我们都可以用这个方法找到。
------------------------------------------------------------------------------------------我是分割线----------------------------------------------------------------------------------------------------
ok,简单介绍了一下去哪找API,下面就是回答上面的那4个问题。
首先第一个问题:如何给Combox Box添加备选的内容?
有两个方法可以增加,第一个方法是直接在Qt Desinger中双击ComboBox,然后在弹出的窗口中直接添加。
第二个方法是在程序中添加,我们用上面的方法找到ComboBox是属于QComboBox这个类的,进来以后是这个类有的属性、成员函数、以及自带的信号/槽。
我们根据函数名其实就可以大概知道每个函数实现的功能,比如下面这个:
currentText应该就是当前内容的意思。如果不确定可以点进去会跳转到具体的说明:
所以大概的判断是对的。所以如果我们需要读取当前comboBox里面的内容就可以使用这个函数。
第二个问题,如何给Combox Box添加备选的内容?
同样地,我们翻一翻Api能够找打一个和添加相关的函数名
第一个和第三个其实一样的,区别在于第一个每次只是添加一个备选项,而第三个每次是添加多个备选项。
第二个中需要大家了解的是QIcon是图标,所以第二个功能就是给备选项添加一个图标和一段文字。
第三个,line Edit怎么读取当前输入的文本?
同样地,我们在对象查看器中可以找到line Edit所属于的类是QlineEdit。
找到lineEdit的API后,我们根据大概功能的英文意思可以找到下面这个函数:
最后一个问题,textBrowser(文本输出框)怎么输出文本?
我们找到textBrowser的API后,进来可能逛了一圈也没发现相关功能的函数。这里就涉及到另外一个问题了,有一些组件是继承了一些其他组件的属性的。
所以,碰到这种情况,要多去翻翻它所继承的类。
这里和大家介绍两个textBrowser常用的函数。
这个是在文本输出框中输出一段文本,不过需要注意的是,Any previous text is removed(之前的所有内容都会先被清空)
另外一个是:
这个相比于上面一个,其不会删除原来有的内容,会在原来有的文本后面继续添加。
Ok..至此API使用的简单介绍也完毕了。后面还有一个文章是关于API,不过涉及的内容可能复杂些。最后一部分就是这篇文章的代码,供大家参考。
最终效果图:
源码
from PyQt5 import QtWidgets from test import Ui_Form class MyWindow(QtWidgets.QWidget,Ui_Form): def __init__(self): super(MyWindow,self).__init__() self.setupUi(self) def add(self): self.comboBox.addItem(self.lineEdit.displayText()) def show_current(self): self.textBrowser.append(self.comboBox.currentText()) if __name__=="__main__": import sys app=QtWidgets.QApplication(sys.argv) myshow=MyWindow() myshow.show() sys.exit(app.exec_())