1.界面布局 Layout
(1)QHBoxLayout 水平布局
(2)QVBoxLayout 垂直布局
(3)QGridLayout 表格布局 栅格布局
(4)QFormLayout 表单布局
2.控件
(1)按钮 QPushButton 作用:
信号
当按钮被点击就会发出 clicked 信号,可以这样指定处理该信号的函数
button.clicked.connect(handleCalc)
改变文本
代码中可以使用 setText 方法来改变按钮文本button.setText(text)
禁用、启用 所有控件(继承自QWidget类)都支持 禁用和启用方法。
禁用后,该控件不再处理用户操作
禁用 button.setEnabled(False)
启用 button.setEnabled(True)
(2)单行文本框 QLineEdit 是只能单行编辑的文本框。
文本被修改
当文本框中的内容被键盘编辑,被点击就会发出 textChanged 信号,可以这样指定处理该信号的函数edit.textChanged.connect(handleTextChange).Qt在调用这个信号处理函数时,传入的参数就是 文本框目前的内容字符串。
按下回车键
当用户在文本框中任何时候按下回车键,就会发出 returnPressed 信号。
有时我们需要处理这种情况,比如登录界面,用户输完密码直接按回车键就进行登录处理,比再用鼠标点击登录按钮快捷的多。可以指定处理 returnPressed 信号,如下所示passwordEdit.returnPressed.connect(onLogin)
获取文本
通过 text 方法获取编辑框内的文本内容,text = edit.text()
设置提示(输入后该提示符将会消失)
通过 setPlaceholderText 方法可以设置提示文本
edit.setPlaceholderText('请在这里输入URL')
设置文本
通过 setText 方法设置编辑框内的文本内容为参数里面的文本字符串
edit.setText('QT') 原来的所有内容会被清除
清除所有文本
clear 方法可以清除编辑框内所有的文本内容, edit.clear()
拷贝文本到剪贴板
copy 方法可以拷贝当前选中文本到剪贴板,edit.copy()
粘贴剪贴板文本
paste 方法可以把剪贴板内容,拷贝到编辑框当前光标所在处,edit.paste()
(3)多行纯文本框 QPlainTextEdit 是可以 多行 的纯文本编辑框
信号:文本被修改
当文本框中的内容被键盘编辑,被点击就会发出 textChanged 信号,可以这样指定处理该信号的函数edit.textChanged.connect(handleTextChange)
注意: Qt在调用这个信号处理函数时,不会传入文本框目前的内容字符串,作为参数。这个行为和单行文本框不同。
光标位置改变
当文本框中的光标位置变动,就会发出 cursorPositionChanged 信号,可以这样指定处理该信号的函数edit.cursorPositionChanged.connect(handleChanged)
获取文本
通过 toPlainText 方法获取编辑框内的文本内容text = edit.toPlainText()
获取选中文本
# 获取 QTextCursor 对象
textCursor = edit.textCursor()
selection = textCursor.selectedText()
方法:设置提示
通过 setPlaceholderText 方法可以设置提示文本内容,
edit.setPlaceholderText('请在这里输入姓名')
设置文本
通过 setPlainText 方法设置编辑框内的文本内容 为参数里面的文本字符串,比如
edit.setPlainText('''你好,tom''')原来的所有内容会被清除
在末尾添加文本
通过 appendPlainText 方法在编辑框末尾添加文本内容edit.appendPlainText()
注意:这种方法会在添加文本后自动换行
在光标处插入文本
通过 insertPlainText 方法在编辑框末尾添加文本内容edit.insertPlainText()
注意:这种方法 不会 在添加文本后自动换行
清除所有文本
clear 方法可以清除编辑框内所有的文本内容,edit.clear()
拷贝文本到剪贴板copy 方法可以拷贝当前选中文本到剪贴板edit.copy()
粘贴剪贴板文本
paste 方法可以把剪贴板内容,拷贝到编辑框当前光标所在处edit.paste()
(4)文本浏览框 QTextBrowser 其是只能查看文本 控件 ,该控件 获取文本、设置文本、清除文本、剪贴板复制粘贴
在末尾添加文本
通过 append 方法在编辑框末尾添加文本内容textBrowser.append()
有时,浏览框里面的内容长度超出了可见范围,我们在末尾添加了内容,往往希望控件自动翻滚到当前添加的这行,可以通过 ensureCursorVisible 方法来实现
textBrowser.append('你好,qt')
textBrowser.ensureCursorVisible()
注意:这种方法会在添加文本后自动换行
在光标处插入文本
通过 insertPlainText 方法在编辑框末尾添加文本内容edit.insertPlainText()
注意:这种方法不会在添加文本后自动换行
(4)标签 QLabel QLabel 就是常见的标签,可以用来显示文字(包括纯文本和富文本)、图片 甚至动画。
改变文本
使用 setText 方法来改变标签文本内容button.setText(text)
显示图片
在 Qt Designer上 属性编辑器 QLabel 栏 的 pixmap 属性设置中选择图片文件指定
(5)组合选择框 QComboBox
如果用户操作修改了QComboBox中的选项就会发出 currentIndexChanged 信号,
cbox.currentIndexChanged.connect(handleSelectionChange)
添加一个选项
代码中可以使用 addItem 方法来添加一个选项到末尾 参数就是选项文本
cbox.addItem()
添加多个选项
代码中可以使用 addItems 方法来添加多个选项到末尾,参数是包含了多个选项文本的列表cbox.addItems(['qt','py'])
清空选项
代码中可以使用 clear 方法来清空选项,删除选择框内所有的选cbox.clear()
获取当前选项文本
代码中可以使用 currentText方法来获取当前选中的选项的文本,
method = cbox.currentText()
(6)列表 QListWidget
添加一个选项
代码中可以使用 addItem 方法来添加一个选项到 末尾 ,参数就是选项文本
listWidget.addItem()
添加多个选项
代码中可以使用 addItems 方法来添加多个选项到 末尾,参数是包含了多个选项文本的列表listWidget.addItems()
删除一个选项
代码中可以使用 takeItem 方法来删除1个选项,参数是该选项所行listWidget.takeItem(1) 就会删除第二行选项
清空选项
代码中可以使用 clear 方法来清空选项,也就是删除选择框内所有的选项
listWidget.clear()
获取当前选项文本
currentItem 方法可以得到列表当前选中项对象(QListWidgetItem) ,再调用这个对象的text方法,就可以获取文本内容,listWidget.currentItem().text()
就获取了 第1行,第1列 的单元格里面的文本。
(7)表格 QTableWidget 表格有创建列 和 标题栏 ,双击即可设置
插入和删除
insertRow 方法可以在指定位置插入一行
removeRow 方法可以删除指定位置的一行
(8)单选按钮 和 按钮组 QRadioButton 同一个父窗口 里面的多个单选按钮,只能选中一项
选中状态改变
如果用户操作点击了按钮组 QButtonGroup 中的一个按钮, QButtonGroup 就会发出 buttonClicked 信号,可以这样指定处理该信号的函数
buttongroup.buttonClicked.connect(handleButtonClicked)
在处理函数中调用QButtonGroup对象的 checkedButton() 函数,返回值就是被选中的按钮对象。再调用这个返回的按钮对象的 text() 方法得到界面文本,就可以知道是哪个选项被选中了。
(9)勾选按钮 和 按钮组 QCheckBox 通常建议:多组勾选按钮,放到不同的 按钮组 QButtonGroup 中,按钮组就是父控件。 可以在 Qt设计师中设置 QButtonGroup 的 exclusive 属性, 来控制 是否 只能单选一个选项
选中状态改变
如果用户操作点击了按钮组 QButtonGroup 中的一个按钮, QButtonGroup 就会发出 buttonClicked 信号,可以这样指定处理该信号的函数
buttongroup.buttonClicked.connect(handleButtonClicked)
QButtonGroup 设置为 单选 情况下:
在处理函数中调用QButtonGroup对象的 checkedButton() 函数,返回值就是被选中的按钮对象。再调用这个返回的按钮对象的 text() 方法得到界面文本,就可以知道是哪个选项被选中了。
QButtonGroup 设置为 多选 情况下:
要得知哪些按钮被选中, 可以 对所有该组中的 按钮调用 isChecked 方法 ,来判断。
(10)数字输入框 QSpinBox
获取数字
通过 value 方法获取编辑框内的文本内容,number = box.value()
注意:返回的是整数对象,不是字符串
设置数字
通过 setValue 方法可以设置提示文本内容,比如box.setValue(100)