zoukankan      html  css  js  c++  java
  • 常用控件2

    组合选择框

    QComboBox 是组合选择框,如下图所示

    image

    官网介绍

    信号:选项改变

    如果用户操作修改了QComboBox中的选项就会发出 currentIndexChanged 信号,可以这样指定处理该信号的函数

    cbox.currentIndexChanged.connect(handleSelectionChange)

    方法:添加一个选项

    代码中可以使用 addItem 方法来添加一个选项到 末尾 ,参数就是选项文本

    cbox.addItem('byhy')

    方法:添加多个选项

    代码中可以使用 addItems 方法来添加多个选项到 末尾,参数是包含了多个选项文本的列表

    cbox.addItems(['byhy','白月黑羽','python教程'])

    方法:清空选项

    代码中可以使用 clear 方法来清空选项,也就是删除选择框内所有的选项

    cbox.clear()

    方法:获取当前选项文本

    代码中可以使用 currentText 方法来获取当前 选中的选项 的文本,比如

    method = cbox.currentText()

    列表

    QListWidget 是列表控件,如下图所示

    image

    Qt Designer 如下图 选择:

    image

    官网介绍

    方法:添加一个选项

    代码中可以使用 addItem 方法来添加一个选项到 末尾 ,参数就是选项文本

    listWidget.addItem('byhy')

    方法:添加多个选项

    代码中可以使用 addItems 方法来添加多个选项到 末尾,参数是包含了多个选项文本的列表

    listWidget.addItems(['byhy','白月黑羽','python教程'])

    方法:删除一个选项

    代码中可以使用 takeItem 方法来删除1个选项,参数是该选项所在行


    listWidget.takeItem(1)

    就会删除第二行选项

    方法:清空选项

    代码中可以使用 clear 方法来清空选项,也就是删除选择框内所有的选项

    listWidget.clear()

    方法:获取当前选项文本

    currentItem 方法可以得到列表当前选中项对象(QListWidgetItem) ,再调用这个对象的 text 方法,就可以获取文本内容,比如

    listWidget.currentItem().text()

    就获取了 第1行,第1列 的单元格里面的文本。

    listWidget.currentItem().text()

    表格

    QTableWidget 是表格控件,如下图所示

    image

    Qt Designer 如下图 选择:

    image

    官网介绍

    创建列 和 标题栏

    我们可以通过 Qt designer 为一个表格创建列和对应的标题栏。

    只需要双击 Qt designer 设计的窗体中的 表格控件, 就会出现这样的对话框。

    image

    标签栏中,点击左下角的加号,就可以为 添加一个列,并且设置标题栏名称。

    image

    方法:插入一行、删除一行

    insertRow 方法可以在指定位置插入一行,比如

    table.insertRow(0)

    就插入一行到第 1 行这个位置, 表格原来第1行(包括原来的第1行)以后的内容,全部往下移动一行。

    table.insertRow(2)

    就插入一行到第 3 行这个位置, 表格原来第3行(包括原来的第3行)以后的内容,全部往下移动一行。

    removeRow 方法可以删除指定位置的一行,比如

    table.removeRow(0)

    就删除第 1 行, 表格原来第1行以后的内容,全部往上移动一行。

    table.removeRow(2)

    就删除第 3 行, 表格原来第3行以后的内容,全部往上移动一行。

    方法:设置单元格文本内容

    qt表格的单元格内的内容对象 是一个 单元格对象 QTableWidgetItem 实例

    如果单元格 没有被设置过 内容,可以这样

    from PySide2.QtWidgets import QTableWidgetItem
    
    item = QTableWidgetItem()
    item.setText('白月黑羽')
    table.setItem(row, 0, item)

    也可以简写为

    from PySide2.QtWidgets import QTableWidgetItem
    
    table.setItem(row, 0, QTableWidgetItem('白月黑羽'))

    如果单元格 已经被设置过 文本内容,

    item 方法可以获取指定位置的 QTableWidgetItem ,再调用这个对象的 setText 方法,就可以设置单元格文本内容,比如

    table.item(0,0).setText('白月黑羽-江老师')

    就设置了 第1行,第1列 的单元格里面的文本。

    table.item(2,4).setText('白月黑羽-江老师')

    就设置了 第3行,第5列 的单元格里面的文本。

    如果希望某个单元格为 只读,不允许修改,可以使用QTableWidgetItem对象的 setFlags 方法,像这样

    from PySide2.QtWidgets import QTableWidgetItem
    from PySide2.QtCore import Qt
    
    item = QTableWidgetItem('白月黑羽')
    item.setFlags(Qt.ItemIsEnabled) # 参数名字段不允许修改
    table.setItem(row, 0, item)

    如果想文本内容 居中对齐,每个当对应的QTableWidgetItem 调用 setTextAlignment,如下

    from PySide2.QtWidgets import QTableWidgetItem
    from PySide2.QtCore import Qt
    
    item = QTableWidgetItem()
    item.setText('白月黑羽')
    # 文本居中
    item.setTextAlignment(Qt.AlignHCenter) 
    table.setItem(row, 0, item)

    方法:获取单元格文本的内容

    item 方法可以指定位置的单元格对象(QTableWidgetItem) ,再调用这个对象的 text 方法,就可以获取文本内容,比如

    table.item(0,0).text()

    就获取了 第1行,第1列 的单元格里面的文本。

    table.item(2,4).text()

    就获取了 第3行,第5列 的单元格里面的文本。

    方法:获取所有行数、列数

    代码中可以使用 rowCount 方法来获取表格所有的 行数 ,比如

    rowcount = table.rowCount()

    可以使用 columnCount 方法来获取表格所有的 列数 ,比如

    rowcount = table.columnCount()

    方法:获取当前选中是第几行

    代码中可以使用 currentRow 方法来获取当前选中是第几行,比如

    currentrow = table.currentRow()

    注意:行数是从0开始的, 第一行的行数是 0

    方法:设置表格行数、列数

    代码中可以使用 setRowCount 方法来设置表格 行数 ,比如

    table.setRowCount(10)

    代码中可以使用 setColumnCount 方法来设置表格 列数 ,比如

    table.setColumnCount(10)

    方法:清除/删除所有内容

    clearContents 方法可以清除表格所有的内容,比如

    table.clearContents()

    清除后,仍然会留下表格栏

    如果连表格栏都要删除,可以使用 setRowCount(0),像这样

    table.setRowCount(0)

    方法:设定列宽、宽度自动缩放

    Qt Designer 上目前没法拖拽设定 每个列的宽度,只能在代码中指定。

    如下所示

    # 设定第1列的宽度为 180像素
    table.setColumnWidth(0, 180)
    
    # 设定第2列的宽度为 100像素
    table.setColumnWidth(1, 100)

    如想让 表格控件宽度 随着父窗口的缩放自动缩放,可以

    在 属性编辑器 中 勾选 HorizontalHeaderStretchLastSection

    或者使用下面代码

    table.horizontalHeader().setStretchLastSection(True)

    信号:单元格内容改动

    当用户修改了一个单元格的内容,会发出 cellChanged 信号,并且携带参数指明该单元格的行号和列号。

    我们的代码可以对该信号进行相应的处理。

    示例代码如下

        def __init__(self):
            # 指定单元格改动信号处理函数
            self.ui.table.cellChanged.connect(self.cfgItemChanged)
    
        
        def cfgItemChanged(self,row,column):
            # 获取更改内容
            cfgName = self.ui.table.item(row, 0).text() # 首列为配置名称
            cfgValue = self.ui.table.item(row, column).text()

    实战练习

    表格控件常用于展示行列结构的数据, 比如数据库数据。下面的截图是实战班的一个数据库 和 表格控件 数据联动的练习。

    小班学员请联系老师获取相关练习和参考代码。

    image

    天道酬勤 循序渐进 技压群雄
  • 相关阅读:
    企业移动化?AppCan教你正确的打开方式
    企业该如何挑选移动平台?
    除了移动开发,一个好平台还需要具备什么功能?
    canvas绘制工作流之绘制节点
    canvas与工作流的不解之缘
    一个工作流引擎诞生前的准备工作
    欢迎大家Follow me!微软MVP罗勇(Dynamics CRM方向2015-2018年)欢迎您!
    Dynamics 365定制:在实体的列表界面添加按钮
    Dynamics 365 Customer Engagement中自定义工作流活动的调试
    Dynamics CRM 2015/2016新特性之二十七:使用Web API查询元数据
  • 原文地址:https://www.cnblogs.com/wuyuan2011woaini/p/14754025.html
Copyright © 2011-2022 走看看