Qt学习之路(Qt中Item Widget初步探索)
- 格式:pdf
- 大小:240.37 KB
- 文档页数:6
Qt零基础教程(四)QWidget详解(3):QWidget的⼏何结构Qt零基础教程(四) QWidget详解(3):QWidget的⼏何结构这篇⽂章⾥⾯分析了QWidget中常⽤的⼏种⼏何结构下图是Qt提供的分析QWidget⼏何结构的⼀幅图,在帮助的 Window and Dialog Widgets 可以找到相关的内容介绍:在Qt中横坐标的⽅向和我们平时看到的笛卡⼉坐标系是相同的,但是纵坐标和笛卡⼉坐标系是相反的,这⾥的纵坐标是向下的,不知道是不是和刚开始的电⼦管屏幕电⼦打在屏幕上的顺序是有关的。
从这副图⾥⾯可以看到,这⾥有两种⼏何结构:1:不包含外边各种边框的⼏何结构。
2:包含外边各种边框的⼏何结构;**************************************************************************在这⾥先分析不包含边框的各种设置函数:⼀般情况下式,不包含边框的部分是客户区部分,这⾥⾯就是我们正常操作的部分,可以在这部分⾥⾯添加⼦部件。
这部分是⼀个长⽅形,那么对于⼀个长⽅形,就会有⼤⼩和位置。
⼤⼩的话就是宽和⾼(国外的说法,和中国的长宽⾼不同),位置就是这个长⽅形在电脑屏幕上的位置。
Qt中保存这个长⽅形是⽤了⼀个QRect这个类,这⾥我们不去深究这个类,后⾯的⽂章会详细说明⼀下这个类。
要改改变这个⼤⼩和位置可以有如下⼏个函数:1void resize(int w, int h);2void resize(const QSize &);这两个函数是改变了长⽅形的⼤⼩,第⼀个参数是宽,第⼆个是⾼。
这⾥的英⽂是Width和Height。
设置了⼤⼩之后的窗⼝还是可以通过⿏标进⾏改变窗⼝的⼤⼩。
通过下⾯的函数可以获得客户区的⼤⼩:1 QSize size() const下⾯的函数分别获得了宽度和⾼度:1int width() const2int height() constView Code如果要设置不可以改变的窗⼝:set FixedHeight(int h)这个时候⾼度就是固定的了,不可以改变⾼度,但是可以改变宽度set FixedWidth(int w)这个时候宽度就是固定的了,不可以改变宽度,但是可以改变⾼度void setFixedSize(const QSize & s)void setFixedSize(int w, int h)通过上⾯的这两个函数,⾼度和宽度都是固定的了,不可以通过⿏标来改变窗⼝的宽度和⾼度。
qt6 qtablewidgetitem 用法-回复"qt6 qtablewidgetitem 用法"是关于Qt6框架中的QTableWidgetItem 类的用法的主题。
QTableWidgetItem类是Qt中用于在QTableWidget 中加载和显示表格项的类。
在本文中,我们将逐步回答以下问题:QTableWidget和QTableWidgetItem的作用是什么?QTableWidgetItem的基本用法是什么?如何设置和获取QTableWidgetItem的属性和数据?如何使用QTableWidgetItem的信号和槽机制?如何使用QTableWidgetItem的样式和外观?最后,我们还将通过一个简单的示例演示如何使用QTableWidget和QTableWidgetItem类。
QTableWidget是Qt中的一个表格控件,它用于显示和编辑二维表格数据。
它是基于QTableView实现的,并且提供了更便于使用和管理的API。
QTableWidgetItem是QTableWidget的数据项类,它可以在表格中的单元格中显示任意类型的数据。
下面是QTableWidgetItem的基本用法:1. 导入必要的模块和类:pythonfrom PyQt6.QtWidgets import QApplication, QTableWidget,QTableWidgetItem2. 创建一个QTableWidget实例:pythontable_widget = QTableWidget()3. 设置表格的行数和列数:pythontable_widget.setRowCount(3)table_widget.setColumnCount(2)4. 在指定的行和列位置上插入QTableWidgetItem实例:pythonitem = QTableWidgetItem("Item 1")table_widget.setItem(0, 0, item)5. 获取指定行和列位置上的QTableWidgetItem实例:pythonitem = table_widget.item(0, 0)6. 设置QTableWidgetItem的文本内容和数据:pythonitem.setText("New Text")item.setData(1, "Custom Data")7. 获取QTableWidgetItem的文本内容和数据:pythontext = item.text()data = item.data(1)8. 使用信号和槽机制来处理QTableWidgetItem的交互操作:pythonitem.doubleClicked.connect(handle_double_click)9. 使用样式和外观来自定义QTableWidgetItem的显示效果:pythonitem.setFont(QFont("Arial", 12))item.setBackground(QColor(255, 255, 0))接下来,我们将使用一个简单的示例演示如何使用QTableWidget和QTableWidgetItem类。
QtableWidget的用法总结QTableWidget的主要特点和用途包括:1. 显示数据:通过设置表头和数据项,可以方便地显示数据。
可以使用setItem方法设置每个单元格的内容,也可以使用setRow或setColumn方法批量设置行或列的内容。
3. 排序和过滤:可以通过sortByColumn方法和setSortingEnabled 属性来设置表格的排序方式,默认情况下,表格是可排序的。
可以使用setFilterRegExp方法和setFilterKeyColumn方法来实现表格的过滤功能。
4. 选择和选中:可以通过setSelectionMode方法来设置表格的选择方式,默认情况下,可以选择单行或单列。
可以使用selectedItems方法获取当前选中的单元格。
5. 高级功能:QTableWidget还提供了很多高级功能,包括合并单元格,拖放操作,剪贴板操作,自定义样式,自定义委托等。
可以通过继承QTableWidget类来实现自定义的表格功能。
接下来,我们将对QTableWidget的常用功能进行详细介绍和示例。
1. 创建QTableWidget可以使用以下代码来创建一个简单的QTableWidget:"""import sysfrom PyQt5.QtWidgets import QApplication, QMainWindow, QTableWidget, QTableWidgetItemclass MyWindow(QMainWindow):def __init__(self):super(.__init__self.initUIdef initUI(self):self.tableWidget = QTableWidget(self)self.tableWidget.setRowCount(5)self.tableWidget.setColumnCount(3)self.setCentralWidget(self.tableWidget)self.showapp = QApplication(sys.argv)window = MyWindowsys.exit(app.exec_()"""2.设置表头可以使用setHorizontalHeaderLabels和setVerticalHeaderLabels 方法来设置表头:"""self.tableWidget.setHorizontalHeaderLabels(['姓名', '年龄','性别'])self.tableWidget.setVerticalHeaderLabels(['1', '2', '3', '4', '5'])"""3.设置单元格内容可以使用setItem方法来设置每个单元格的内容:"""item = QTableWidgetItem('李四')self.tableWidget.setItem(0, 0, item)"""4.获取单元格内容可以使用item方法来获取每个单元格的内容:"""item = self.tableWidget.item(0, 0)print(item.text()""""""self.tableWidget.setEditTriggers(QTableWidget.AnyKeyPressed ,QTableWidget.EditKeyPressed , QTableWidget.DoubleClicked) """6.排序和过滤可以使用sortByColumn方法和setSortingEnabled属性来设置表格的排序方式:"""self.tableWidget.setSortingEnabled(True)self.tableWidget.sortByColumn(1, QtCore.Qt.AscendingOrder)"""可以使用setFilterRegExp方法和setFilterKeyColumn方法来实现表格的过滤功能:"""filter_str = '李'self.tableWidget.setFilterRegExp(QtCore.QRegExp(filter_str, QtCore.Qt.CaseInsensitive))self.tableWidget.setFilterKeyColumn(0)"""7.选择和选中可以使用setSelectionMode方法来设置表格的选择方式,默认情况下,可以选择单行或单列:"""self.tableWidget.setSelectionMode(QTableWidget.SingleSelecti on)self.tableWidget.setSelectionBehavior(QTableWidget.SelectRow s)"""可以使用selectedItems方法获取当前选中的单元格:"""selected_items = self.tableWidget.selectedItemsfor item in selected_items:print(item.text()"""8.高级功能合并单元格:"""self.tableWidget.setSpan(0, 0, 2, 2)"""拖放操作:"""self.tableWidget.setDragDropMode(QTableWidget.DragDrop)self.tableWidget.setAcceptDrops(True)"""剪贴板操作:"""self.tableWidget.setContextMenuPolicy(QtCore.Qt.ActionsConte xtMenu)copy_action = QtGui.QAction('拷贝', self)copy_action.triggered.connect(self.copy)self.addAction(copy_action)"""自定义样式:"""self.tableWidget.setStyleSheet("QTableWidget{background-color: yellow}")"""自定义委托:"""self.tableWidget.setItemDelegate(MyDelegate() """。
qt6 qtablewidgetitem 用法"qt6 qtablewidgetitem 用法"是指在QT版本6中,使用QTableWidget类中的QTableWidgetItem进行表格数据的操作和管理。
本文将介绍QTableWidgetItem的使用方法,包括创建、设置数据、读取数据以及自定义单元格样式和事件处理等步骤。
以下是对于每个主题的详细解释。
# 1. 创建QTableWidgetItem在创建QTableWidgetItem之前,需要先创建一个QTableWidget对象。
可以通过QTableWidget的构造函数或者在QT Designer中进行创建。
然后使用QTableWidget的setItem()方法,将QTableWidgetItem添加到指定的单元格中。
可以使用以下代码示例进行创建:cppQTableWidget *tableWidget = new QTableWidget(rowCount, columnCount);QTableWidgetItem *item = new QTableWidgetItem(); tableWidget->setItem(row, col, item);# 2. 设置数据可以通过QTableWidgetItem的setText()方法来设置单元格的文本数据,也可以使用setData()方法设置其他类型的数据,如数字、日期等。
以下是对两种方式的使用示例:cppitem->setText("Hello World"); 设置文本数据item->setData(Qt::UserRole, QDate(2022, 1, 1)); 设置日期数据# 3. 读取数据可以通过QTableWidgetItem的text()方法来获取单元格的文本数据,也可以使用data()方法获取其他类型的数据。
Qt中的每个类,都有一个对应的同名头文件,其中包含其类定义。
例如要使用Q Appli catio n类,则需要在程序中添加" #includ e <QAppli catio n>"QAppli catio n类用于管理应用程序范围内的资源。
其构造函数需要main函数的ar gc和ar gv作为参数。
widget被创建时都是不可见的(always create d hidden)。
widget中可容纳其它widg et。
Qt中的wi dget在有用户行为或状态改变时会emi t signal。
signal可以和sl ot函数连接在一起(connec t),这样当有si gnal被emit时,对应的slo t函数会被自动调用。
QWidge t类的构造函数需要一个 QWidge t * 指针作为参数,表示其par ent widget(默认值为0,即不存在pa rentwidget)。
在paren t widget被删除时,Qt会自动删除其所有的child widget。
Qt中有三种Layou t Manage r 类: QHBoxL ayout,QVBoxL ayOut,QGridL ayOut。
基本模式是将widge t添加进L ayOut,由Layou t自动接管widge t的尺寸和位置。
启动Qt程序时可以通过 -style参数改变程序的默认显式风格。
Chapte r 2 Creati ng Dialog s2.1 Subcla ssing DialogQt中所有d ialog的基类是Q Dialo g。
QDialo g派生自Q Widge t。
Qt中所有定义了sig nal或s lot的类,在其类定义的开始处都要使用Q_O BJECT宏。
qlistwidget用法QListWidget是Qt框架中提供的用于显示列表的小部件。
它可以在图形界面中展示一个可滚动的列表,并支持用户交互。
以下是QListWidget的基本用法:1. 创建QListWidget部件:```pythonlist_widget = QListWidget()```2. 添加列表项:```pythonlist_widget.addItem("Item 1")list_widget.addItem("Item 2")list_widget.addItem("Item 3")```3. 设置列表项属性:```pythonitem = list_widget.item(0) # 获取特定索引的列表项item.setFlags(item.flags() | Qt.ItemIsEditable) # 设置列表项可编辑item.setCheckState(Qt.Checked) # 设置列表项的复选框状态```4. 获取选中的列表项:```pythonselected_items = list_widget.selectedItems()for item in selected_items:print(item.text())```5. 监听列表项的选中状态变化:```pythonlist_widget.itemSelectionChanged.connect(handle_selection_changed)def handle_selection_changed():selected_items = list_widget.selectedItems()for item in selected_items:print(item.text())```6. 删除列表项:```pythonitem = list_widget.takeItem(0) # 删除指定索引的列表项# 或者item = list_widget.currentItem() # 获取当前选中的列表项list_widget.takeItem(list_widget.row(item)) # 删除当前选中的列表项```7. 清空列表项:```pythonlist_widget.clear()```这些是QListWidget的基本用法示例,你可以根据实际需求进行进一步的定制和扩展。
Qt学习之路_9(Qt中Item Widget初步探索)Qt界面设计中有model-based的List View,有Item-based的List Widget,关于这2者到底有什么区别,暂时也没弄太明白,这些都是界面设计中的设计模式,从MVC发展而来。
以后用到的时候自然会明白的。
一般简单的都是用Item-based的List Widget,Qt中给出了List Widget,Tree Widget,Tabel Widget三种,这里就简单了解一下List Widget和Tree Widget的使用。
Tabel Widget的使用应该也类似。
List Widget的使用List Widget的使用比较简单,加入数据时直接用addItem()函数。
读取数据时采用currentItem->text()方法,本次实验先向List Widget中写入一些内容,然后单击button按钮时,以消息box的形式将选择行的内容显示出来。
实验的效果如下:实验代码及注释如下:#include "dialog.h"#include "ui_dialog.h"#include <QtCore>#include <QtGui>Dialog::Dialog(QWidget *parent) :QDialog(parent),ui(new Ui::Dialog){ui->setupUi(this);//向listWdget中写入数据for (int i = 10; i > 0; i--){ui->listWidget->addItem("hello "+QString::number(i));ui->listWidget->addItem("world"+QString::number(i));}}Dialog::~Dialog(){delete ui;}void Dialog::on_pushButton_clicked(){//将数据读取出来并以消息box的形式显示出来。
qlistwidget 用法介绍qlistwidget 是 Qt 框架中的一个控件类,用于显示列表数据。
它是基于QListWidget 类的封装,提供了更加方便和直观的使用方式。
qlistwidget 的基本用法添加列表项使用 QListWidget 的 addItem() 方法可以向列表中添加项。
每个项可以包含一个图标、一个文本和一个数据。
示例代码:from PyQt5.QtWidgets import QApplication, QListWidget, QListWidgetItemapp = QApplication([])list_widget = QListWidget()# 添加列表项item1 = QListWidgetItem("Item 1")item2 = QListWidgetItem("Item 2")list_widget.addItem(item1)list_widget.addItem(item2)list_widget.show()app.exec_()设置图标可以使用 setIcon() 方法为列表项设置图标。
该方法接受一个 QIcon 对象作为参数。
示例代码:from PyQt5.QtWidgets import QApplication, QListWidget, QListWidgetItemfrom PyQt5.QtGui import QIconapp = QApplication([])list_widget = QListWidget()item1 = QListWidgetItem("Item 1")item2 = QListWidgetItem("Item 2")item1.setIcon(QIcon("item1.png"))item2.setIcon(QIcon("item2.png"))list_widget.addItem(item1)list_widget.addItem(item2)list_widget.show()app.exec_()设置数据每个列表项可以关联一个数据对象,可以使用 setData() 方法为列表项设置数据。
Qt基础教程之QTreeWidget和QDockWidget用法详解QTreeWidget用法详解:1.导入模块和创建控件:```pythonfrom PyQt5.QtWidgets import QApplication, QMainWindow, QTreeWidget, QTreeWidgetItemapp = QApplication([])window = QMainWindowtreeWidget = QTreeWidgetwindow.setCentralWidget(treeWidget)``````pythontreeWidget.setColumnCount(2) # 设置显示的列数```3.添加根节点和子节点:```pythonroot = QTreeWidgetItem(treeWidget)root.setText(0, 'Root') # 设置根节点文本child1 = QTreeWidgetItem(root)child1.setText(0, 'Child1') # 设置子节点文本child1.setText(1, 'Value1') # 设置子节点的值child2 = QTreeWidgetItem(root)child2.setText(0, 'Child2')```4.设置节点图标:```pythonroot.setIcon(0, QIcon('path/to/icon.png')) # 设置节点的图标```5.获取和设置节点属性:```pythonroot.setData(0, erRole, 'custom') # 设置自定义属性data = root.data(0, erRole) # 获取自定义属性```6.处理节点被点击事件:```pythondef handle_item_clicked(item, column):print(item.text(column))treeWidget.itemClicked.connect(handle_item_clicked)```QDockWidget用法详解:QDockWidget是一个可停靠的窗口,常用于实现多窗口布局。
GUI学习之四——QWidget控件学习总结上⼀章将的QObject是PyQt⾥所有控件的基类,并不属于可视化的控件。
这⼀章所讲的QWidget,是所有可视化控件的基类。
QWidget包含下⾯⼏点特性a.控件是⽤户界⾯的最⼩的元素b.每个控件都是矩形的,他们按照Z轴顺序排序(垂直于桌⾯),前⾯的会覆盖后⾯的c.控件由其⽗控件和前⾯的控件裁剪d.没有⽗控件的控件就是窗⼝功能与作⽤1.控件的创建我们在上⼀章在创建了控件以后⽤Obj.setParent()的指定了控件的⽗⼦关系,在这⾥就有更简单的⽅法了!from PyQt5.Qt import *import sysapp=QApplication(sys.argv)window = QWidget()window.resize(800,600)red = QWidget(window)red.setStyleSheet('background-color:red;')red.resize(100,100)window.show()sys.exit(app.exec_())控件的创建这个⽅法⾥就是⽤继承的⽅式在窗⼝⾥创建了新的界⾯。
2.⼤⼩和位置⾸先我们要理解空间的坐标系统,控件的坐标原点在左上⾓,向右为x轴正⽅向,向下为y轴的正⽅向。
顶层窗⼝的原点为显⽰器的左上⾓,⽽⼦控件的原点在⽗控件的左上⾓。
每个值为⼀个分辨率。
其次我们看⼀下⼤⼩位置相关的APIa.获取window = QWidget()window.x() #控件X轴坐标(包含框架窗⼝)window.y() #控件Y轴坐标(包含框架窗⼝)window.pos() #控件X/Y轴坐标集合window.width() #控件宽度(不包含窗⼝框架)window.height() #控件⾼度(不包含窗⼝框架)window.size() #控件宽度和⾼度的组合window.geometry() #⽤户区域相对于⽗控件的位置和尺⼨组合window.rect() #(0,0,width,height)的组合window.frameSize() #整个界⾯⼤⼩(包含框架窗⼝)window.frameGeometry()#整个界⾯(X,Y,Width,height)的集合⽤⼀个图可以描述⼀下b设置window.move(x,y) #控件移动⾄x,y;包含窗⼝框架window.resize(width,height) #设置宽、⾼,不包含窗⼝框架window.setGeometry(x,y,width,height) #设置⽤户区域的坐标和⼤⼩window.adjustSize() #根据内容⾃适应尺⼨window.setFixedSize(width,height) #设置固定尺⼨设置后窗⼝最⼤化按钮是灰⾊的,窗⼝不可拖放⽤⼀个案例来演⽰⼀下,定义⼀个界⾯,上⾯按每⾏平均放3个来布局。