Qt QTableWidget表格控件的用法(非常详细)

这篇具有很好参考价值的文章主要介绍了Qt QTableWidget表格控件的用法(非常详细)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Qt QTableWidget表格控件的用法(非常详细)

QTableWidget 是 Qt 提供的一种表格控件(如图 1 所示),类似于我们经常使用的 Excel 表格,可以将数据以表格的方式展示给用户。

整个 QTableWidget 表格可以分为 3 个区域:

区域 ① 和 ② 都是表头,区域 ① 设置每一行的表头,区域 ② 设置每一列的表头。我们可以自定义两个区域内的表头,比如第一列是各个教程的名称,所以第一列的表头可以修改为“教程名称”;

区域 ③ 为数据区,表格中所有的数据都位于此区域,该区域内可以存放单元格,也可以存放按钮、文本框等控件。

默认情况下,表格会显示表头,表头的内容为行号或列号。根据实际需要,我们可以将表头隐藏起来。

QTableWidget 继承自 QTableView 类,QTableView 类也可以用来显示表格控件。QTableWidget 可以看做是 QTableView 的“简易版”或者“升级版”,它们的区别在于:

QTableWidget 使用起来更简单,而 QTableView 的用法相对比较复杂。

QTableView 可以存储大量的数据(例如几十万甚至几百万),用户浏览表格中的数据时不会出现卡顿等现象;尽管 QTableWidget 也能用来存储大量的数据,但用户使用时可能出现卡顿等现象,且显示的数据越多,类似的现象越明显。

总之,QTableWidget 只适合显示少量的数据(几百或几千个),如果想要显示更多的数据,应该用 QTableView。此外,QTableView 还有一些更高级的用法,我们会在讲解 QTableView 时做重点介绍。

QTableWidget 框架在实际开发中经常使用,如果您是一名初学者,我建议先学习 QTableWidget 控件,它可以降低您学习 QT 表格控件的成本,可以更快地掌握表格的用法。

QTableWidget表格的创建

使用 QTableWidget 控件,必须先引入头文件。

QTableWidget 类提供了 2 个构造函数,分别是:

QTableWidget(QWidget *parent = Q_NULLPTR)
QTableWidget(int rows, int columns, QWidget *parent = Q_NULLPTR)

第一个构造函数可以在指定的 parent 父窗口中创建一个空的表格,表格中不显示任何单元格(如图 2a) 所示)。第二个构造函数可以在指定的 parent 父窗口中创建一个表格,表格中整齐地排列着 rows 行 columus 列的单元格,每个单元格都是空的(如图 2b) 所示)。

qt中的tablewidget控件里面的表格只能上下翻页拉动滑块但是不能左右拉动滑块,Qt教程,Qt5编程入门教程(非常详细),qt,开发语言,ui,Qt QTableWidget,QTableWidget

图 2 创建 QTableWidget 表格

实用 QTableWidget 表格之前,必须指定表格的行和列。我们可以直接调用第 2 个构造函数,这样既创建了表格又指定了行和列。当然,也可以调用第 1 个构造函数先创建表格,然后借助 QTableWidget 类提供的成员方法指定行和列,两种方式都可以。

与数组下标类似,QTableWidget 表格单元格的行标和列标都是从 0 开始。例如在图 2b) 中,选中的单元格的坐标是 (0, 0)。

QTableWidgetItem单元格

QTableWidget 表格中,每个单元格都是 QTableWidgetItem 类的实例对象。

定义 QTableWidgetItem 类的实例对象之前,程序中要引入头文件。QTableWidgetItem 类提供了 4 个构造函数:

QTableWidgetItem(int type = Type)
QTableWidgetItem(const QString &text, int type = Type)
QTableWidgetItem(const QIcon &icon, const QString &text, int type = Type)
QTableWidgetItem(const QTableWidgetItem &other)        //复制(拷贝)构造函数

text 参数用于指定单元格要显示的文本(字符串),icon 参数用于指定单元格要显示的图标,type 参数配有默认值,很少用到。

QTableWidgetItem 单元格通常用来存放 text 文本和 icon 图标,借助该类提供的 setBackground()、setTextAlignment() 等成员方法,我们可以轻松设置每个单元格的字体、颜色、背景等。

QTableWidgetItem 类还对<小于运算符进行了重载,根据各个单元格存储的文本内容(字符串),多个单元格之间可以直接比较大小。借助这一特性,我们可以很轻易地实现“单元格排序”功能。

默认情况下,用户可以选中 QTableWidget 表格中的某个单元格,还可以对目标单元格中的文本内容进行修改。通过设置 QTableWidget 表格,可以禁止用户编辑所有单元格。

QTableWidgetItem 类提供了很多实用的成员方法,其中比较常用的方法如下表所示:

表 1 QTableWidgetItem成员方法

成员方法 功 能
setText(const QString &text) 设置单元格中的文本。
setIcon(const QIcon &icon) 给单元格添加图标。
setBackground(const QBrush &brush) 设置单元格的背景。
setFont(const QFont &font) 设置单元格中文本的字体。
setForeground(const QBrush &brush) 设置单元格中字体的颜色。
setTextAlignment(int alignment) 设置单元格中文本的对齐方式。
setToolTip(const QString &toolTip) 给单元格设置提示信息。

QTableWidget表格的使用

对于创建好的 QTableWidget 表格,我们可以借助该类提供的成员方法快速地操作它。

QTableWidget 类提供了很多实用的成员方法,它还从父类继承了很多方法,下表给大家罗列了实际场景中操作 QTableWidget 表格用得最多的几个方法,这些方法是初学者必须要掌握的:

QTableWidget类常用成员方法

成员方法 功 能
setRowCount(int rows) 设置表格的行数。
setColumnCount(int columns) 设置表格的列数。
setRowHeight(int row, int height) 设置指定行的行高。
setColumnWidth(int column, int width) 设置指定列的宽度。
setCellWidget(int row, int column, QWidget *widget) 向表格中的指定位置添加 widget 控件。通过调用 cellWidget(int row, int column) 方法,可以获取指定位置出的控件。
setHorizontalHeaderLabels(const QStringList &labels) 设置表格的水平表头。
setVerticalHeaderLabels(const QStringList &labels) 设置表格的竖直表头。
setItem(int row, int column, QTableWidgetItem *item) 向表格指定位置添加单元格。获取指定位置的单元格,可以借助 item(int row, int column) 或者 itemAt(int ax, int ay) 方法。
setEditTriggers(EditTriggers triggers) 当 triggers 参数值QAbstractItemView::NoEditTriggers 时,表示禁止用户编辑单元格。
resize(int w, int h) 设置表格的尺寸。
setFont(const QFont &) 设置表格数据区中文本的字体和大小。

QTableWidget信号和槽

QTableWidget 类提供的信号函数,可以监听用户对表格中的哪个单元格进行了何种操作,常见的操作包括点击、双击、按下、编辑等。

下表展示了 QTableWidget 类提供的一些信号函数以及它们各自的功能:

表 3 QTableWidget信号函数

信号函数 功 能
cellClicked(int row,int column) 当某个单元格被点击时,触发该信号,row 和 columu 就是被点击的单元格的位置。
cellDoubleClicked(int row,int column) 当某个单元格被双击时,触发该信号,row 和 columu 就是被点击的单元格的位置。
cellEntered(int row,int column) 当某个单元格被按下时,触发该信号,row 和 columu 就是被点击的单元格的位置。
cellChanged(int row, int column) 当某个单元格中的数据发生改变时,触发该信号,row 和 columu 就是被改变的单元格的位置。
itemClicked(QTableWidgetItem *item) 当某个单元格被点击时,触发该信号,item 就是被点击的单元格。
itemDoubleClicked(QTableWidgetItem *item) 当某个单元格被双击时,触发该信号,item 就是被双击的单元格。
itemEntered(QTableWidgetItem *item) 当某个单元格被按下时,触发该信号,item 就是被按下的单元格。
itemChanged(QTableWidgetItem *item) 当某个单元格中的数据发生改变时,触发该信号,item 就是被改变的单元格。QTableWiget 表格也可以接收信号并做出相应地响应,例如:

表 4 QTableWidget 槽函数

槽函数 功 能
clear() 删除表格中所有单元格的内容,包括表头。
clearContents() 不删除表头,仅删除表格中数据区内所有单元格的内容,
insertColumn(int column) 在表格第 column 列的位置插入一个空列。
insertRow(int row) 在表格第 row 行的位置插入一个空行。
removeColumn(int column) 删除表格中的第 column 列,该列的所有单元格也会一并删除。
removeRow(int row) 删除表格中的第 row 行,该行的所有单元格也会一并删除。
scrollToItem(const QTableWidgetItem *item, QAbstractItemView::ScrollHint hint = EnsureVisible) 滑动到指定的单元格。

QTableWidget表格实例

接下来通过一个实例,带大家更深入地了解 QTableWidget 控件的用法。文章来源地址https://www.toymoban.com/news/detail-807612.html

#include <QApplication>
#include <QWidget>
#include <QLabel>
#include <QTableWidget>
#include <QTableWidgetItem>
#include <QStringList>
#include <QDebug>
#include <QPushButton>
using namespace std;
class QMyLabel:public QLabel{
    Q_OBJECT
public slots:
    void rsetText(QTableWidgetItem * item);
};
void QMyLabel::rsetText(QTableWidgetItem * item){
    this->setText(item->text());
}
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    //创建一个窗口,作为输入框和列表框的父窗口
    QWidget widget;
    //设置窗口的标题
    widget.setWindowTitle("QTableWidget控件");
    //自定义窗口的大小
    widget.resize(900,500);
    //在 widget 窗口中添加一个 4 行 3 列的表格
    QTableWidget TableWidget(4,3,&widget);
    //自定义表格的尺寸和字体大小
    TableWidget.resize(900,350);
    TableWidget.setFont(QFont("宋体",20));
    //设置表格中每一行的表头
    TableWidget.setHorizontalHeaderLabels(QStringList() << "教程" << "网址" << "状态");
    //设置表格数据区内的所有单元格都不允许编辑
    TableWidget.setEditTriggers(QAbstractItemView::NoEditTriggers);
    //设置表格中每一行的内容
    TableWidget.setItem(0,0,new QTableWidgetItem("C语言"));
    TableWidget.setItem(0,1,new QTableWidgetItem("http://c.tian.net/c/"));
    TableWidget.setItem(0,2,new QTableWidgetItem("已更新"));
    TableWidget.setItem(1,0,new QTableWidgetItem("Qt教程"));
    TableWidget.setItem(1,1,new QTableWidgetItem("http://c..net/qt/"));
    TableWidget.setItem(1,2,new QTableWidgetItem("更新"));
    TableWidget.setItem(2,0,new QTableWidgetItem("C教程"));
    TableWidget.setItem(2,1,new QTableWidgetItem("http://c.tian.net/cplus/"));
    TableWidget.setItem(2,2,new QTableWidgetItem("已更新完毕"));
    //向 widget 窗口中添加一个文本框
    QMyLabel lab;
    lab.setText("选中单元格");
    lab.setParent(&widget);
    //自定义文本框的尺寸和位置
    lab.resize(900,150);
    lab.move(0,350);
    lab.setAlignment(Qt::AlignCenter);
    lab.setFont(QFont("宋体",16));
    widget.show();
    //为表格和文本框之间建立关联,当用户点击表格中某个单元格时,文本框显示单元格内的文本内容。
    QObject::connect(&TableWidget,&QTableWidget::itemClicked,&lab,&QMyLabel::rsetText);
    return a.exec();
}
//QMyLabel类的定义应该放到 .h 文件中,本例中将其写到 main.cpp 中,程序最后需要添加 #include "当前源文件名.moc" 语句,否则无法通过编译。
#include "main.moc"

到了这里,关于Qt QTableWidget表格控件的用法(非常详细)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Qt QTableWidget 表格自适应 高度和宽度

    1. 在MainWindow中设置 1.1. 对被嵌入的子窗口进行设置,去除子窗口的一些影响到嵌入的部件。 pTable:指向子窗口堆内存的指针 1.2. 设置子窗口可以跟随主窗口自适应变化宽度。 水平方向:子窗口的自适应缩放。也可以直接在设计师中完成。 2. 在QTableWidget ui表格的 cpp文件中设

    2023年04月21日
    浏览(79)
  • Qt QtableWidget、QtableView表格删除选中行、删除单行、删除多行

    设置 操作 设置 操作 无需设置 setSelectionBehavior(QAbstractItemView::SelectRows) ,但是可以选择的那一列最好设置为不可编辑。按下Ctrl键,选择多行。 设置1 设置2 操作 QTableWidgetSelectionRange是Qt框架中用于表示QTableWidget中选定的一块单元格区域的类。以下是如何使用QTableWidgetSelectionR

    2024年02月01日
    浏览(47)
  • 表格控件QTableWidget

    简介 QTableWidget 是 Qt 中的 表格 组件类。 在窗体上放置一个 QTableWidget 组件后,可以在 Property Editor 里对其进行属性设置,双击这个组件,可以打开一个编辑器,对其 Colum、Row 和 Item 进行编辑。 行/列 第0列 第1列 第0行 ( 0 , 0 ) ( 0 , 1 ) 第1行 ( 1 , 0 ) ( 1 , 1 ) 界

    2024年02月11日
    浏览(34)
  • PyQt QTableWidget 表格控件的使用

    PyQT开发图形界面应用时,可用 QTableWidget 控件,以表格方式直观地显示二维表格形状的数据,如列表,数组、pandas DataFrame等。 如果你想用表格方式直接显示并操作数据库表时,选择 QTableView类更合适。 步骤如下: 生成QTableWidget对象 设置表头以及表格参数 构建 QTableWidgetIte

    2024年02月01日
    浏览(54)
  • Qt comboBox控件的三种基本用法

    1、用法一: 一般用到控件comboBox的基本用法是获取当前的值: 1.currentIndex(); 获取当前comBox的索引,是int类型的值。 2.currentText(); 获取当前comBox的文本,是QString类型。 2、用法二: 可以通过以下两种方式来通过切换comobox的值来执行一些指令: 1、通过首先在界面上拖入控件

    2024年02月12日
    浏览(41)
  • QT中的combo box控件的使用

    本文将详细介绍QT中的combo box 控件的使用,包括调整下拉框默认显示,为控件添加内容,获取下拉框中内容的总数,获取当前下拉框显示的内容以及该内容所在的第几行,清除下拉框中的内容。 1.为控件添加内容 用代码的方法添加: 用UI界面的方法添加:直接从UI界面添加可

    2024年02月11日
    浏览(33)
  • Qt 6. 其他类调用Ui中的控件

    1. 把主类指针this传给其他类,tcpClientSocket = new TcpClient(this); 2. 把ui类改为公共类 3. 保存主类传来的指针保存,通过该指针调用UI中的控件 4. 在pro文件中增加QT += network 5. 效果

    2024年02月13日
    浏览(35)
  • Qt::实现qtablewidget分页功能

    头文件: .cpp文件 实现效果:      大佬写得很棒,很简单就实现了qtablewidget的分页功能,但是不知道会不会有什么问题,现在看起来是没问题的,加了个跳转功能,写得比较潦草

    2024年02月15日
    浏览(37)
  • Qt Designer 控件箱中的控件介绍及布局比列分配

    控件箱介绍                 Qt Designer的控件箱(Widget Box)包含了各种常用的控件,用户可以通过拖放的方式将这些控件添加到窗体设计器中,用于构建用户界面。以下是一些常见控件箱中的控件及其功能的讲解: 1. 基本控件 : 标签(Label) :用于显示文本或图像。

    2024年04月13日
    浏览(36)
  • Qt下载安装及配置教程(非常详细),从零基础入门到精通,看完这一篇就够了

    进入qt中文网站:https://www.qt.io/zh-cn/ 下载开源版 往下滑,下载Qt在线安装程序 它已经检测出我的是windows系统,直接点击download就好。如果是其它的系统,需要找到对应自己系统的安装包。 然后跟网速有关,等一会就会自动下载 等待下载完成,双击.exe文件,就可以进行安装。

    2024年02月14日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包