QT之表格控件

2023-05-16

目录

一:表格控件

1.QTableWidget表格的创建

1.QTableWidgetItem单元格

2.表格的信号和槽

3.代码引例

1.在.h文件中定义

2.在main文件中创建并实现

4.结果演示 GIF


一:表格控件

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

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

  • 区域 ① 和 ② 都是表头,区域 ① 设置每一行的表头,区域 ② 设置每一列的表头。我们可以自定义两个区域内的表头,比如第一列是各个教程的名称,所以第一列的表头可以修改为“教程名称”;
  • 区域 ③ 为数据区,表格中所有的数据都位于此区域,该区域内可以存放单元格,也可以存放按钮、文本框等控件。

1.QTableWidget表格的创建

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

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

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

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

1.QTableWidgetItem单元格

定义 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 表格,可以禁止用户编辑所有单元格。

 

 

 


2.表格的信号和槽

  

3.代码引例

1.在.h文件中定义

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QLabel>
#include <QTableWidget>
#include <QTableWidgetItem>

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private:
    Ui::MainWindow *ui;
};
class QMyLabel:public QLabel{
    Q_OBJECT
public slots:
    void rsetText(QTableWidgetItem *item);
};

#endif // MAINWINDOW_H

2.在main文件中创建并实现

#include "mainwindow.h"

#include <QApplication>
#include <QWidget>
#include <QLabel>
#include <QTableWidget>
#include <QTableWidgetItem>
#include <QStringList>
using namespace std;

void QMyLabel::rsetText(QTableWidgetItem *item){
    this->setText(item->text());
}
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    //设置窗口的标题
    w.setWindowTitle("QTableWidget控件");
    //自定义窗口的大小
    w.setGeometry(930,175,900,500);
    //在 widget 窗口中添加一个 4 行 3 列的表格
    QTableWidget TableWidget(4,3,&w);
    //自定义表格的尺寸和字体大小
    TableWidget.resize(900,350);
    TableWidget.setFont(QFont("宋体",20));
    //设置表格中每一行的表头
    TableWidget.setHorizontalHeaderLabels(QStringList() << "书名" << "作者" << "出版社");
    //设置表格数据区内的所有单元格都不允许编辑
    TableWidget.setEditTriggers(QAbstractItemView::NoEditTriggers);
    //设置指定行的宽度

    TableWidget.setColumnWidth(0,260);
    TableWidget.setColumnWidth(1,260);
    TableWidget.setColumnWidth(2,260);
    //设置表格中每一行的内容
    TableWidget.setItem(0,0,new QTableWidgetItem("水浒传")); //向下复制一行 ctrl+alt+down
    TableWidget.setItem(0,1,new QTableWidgetItem("施耐庵"));
    TableWidget.setItem(0,2,new QTableWidgetItem("人民文学"));
    TableWidget.setItem(1,0,new QTableWidgetItem("西游记"));
    TableWidget.setItem(1,1,new QTableWidgetItem("吴承恩"));
    TableWidget.setItem(1,2,new QTableWidgetItem("人民文学"));
    TableWidget.setItem(2,0,new QTableWidgetItem("红楼梦"));
    TableWidget.setItem(2,1,new QTableWidgetItem("曹雪芹,高鹗"));
    TableWidget.setItem(2,2,new QTableWidgetItem("人民文学"));
    TableWidget.setItem(3,0,new QTableWidgetItem("三国演义"));
    TableWidget.setItem(3,1,new QTableWidgetItem("罗贯中"));
    TableWidget.setItem(3,2,new QTableWidgetItem("人民文学"));

    //向 widget 窗口中添加一个文本框
    QMyLabel lab;
    lab.setText("选中单元格");
    lab.setParent(&w);
    //自定义文本框的尺寸和位置
    lab.resize(900,150);
    lab.move(0,350);
    lab.setAlignment(Qt::AlignCenter);
    lab.setFont(QFont("宋体",16));
    //为表格和文本框之间建立关联,当用户点击表格中某个单元格时,文本框显示单元格内的文本内容。
    QObject::connect(&TableWidget,&QTableWidget::itemClicked,&lab,&QMyLabel::rsetText);

    w.show();
    return a.exec();
}



4.结果演示 GIF

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

QT之表格控件 的相关文章

  • Python绘制可爱的卡通人物 | 【turtle使用】

    Turtle库 简介 什么是Turtle 首先 xff0c turtle库是一个点线面的简单图像库 xff0c 能够完成一些比较简单的几何图像可视化 它就像一个小乌龟 xff0c 在一个横轴为x 纵轴为y的坐标系原点 xff0c 0 0 位
  • STM32 Keil5 Bug记录 汇总和解决办法

    STM32 Keil5 Bug记录 汇总和解决办法 文章目录 STM32 Keil5 Bug记录 汇总和解决办法前言一 Warning1 warning no newline at end of file2 warning function
  • STM32重要源文件和头文件说明

    对于STM32F4xx StdPeriph Driver xff0c 其重要源文件为 xff1a stm32f4xx ppp h xff1a 外设头文件 这里的ppp只是一个代码 xff0c 在实际上是具体的外设名字 xff0c 如ADC
  • 带参宏定义和带参函数的区别

    在带参宏定义中 xff0c 不会为形式参数分配内存 xff0c 因此不必指明数据类型 而在宏调用中 xff0c 实参包含了具体的数据 xff0c 要用它们去代换形参 xff0c 因此必须指明数据类型 这一点和函数是不同的 xff1a 在函数
  • “段寄存器”的故事

    一 段寄存器的产生 段寄存器的产生源于Intel 8086 CPU体系结构中数据总线与地址总线的宽度不一致 数据总线的宽度 xff0c 也即是ALU 算数逻辑单元 的宽度 xff0c 平常说一个CPU是 16位 或者 32位 指的就是这个
  • 阿里面试官:为什么MySQL数据库索引选择使用B+树而不是跳表?

    来源 xff1a https www cnblogs com andydao p 12891690 html 作者 xff1a andydaopeng 在进一步分析为什么MySQL数据库索引选择使用B 43 树之前 xff0c 我相信很多小
  • AD生成bom表

    1 Report Bill of material 2 可通过点击右侧的Columns xff0c 更改导出属性 3 点击Preview 查看生成的excel文件 4 生成的 excel文件 注 xff1a 出bom表的原理图需要在工程里
  • 你对Linux下的实时性应该多点了解

    本文讲述一些有利于提高xenomai实时性的配置建议 xff0c 部分针对X86架构 xff0c 但它们的底层原理相通 xff0c 同样适用于其他CPU架构和系统 xff0c 希望对你有用 一 前言 1 什么是实时 实时 一词在许多应用领域
  • HTTP/3.0 ,它来了!

    HTTP 3 0 是 HTTP 协议的第三个主要版本 xff0c 前两个分别是 HTTP 1 0 和 HTTP 2 0 xff0c 但其实 HTTP 1 1 我认为才是真正的 HTTP 1 0 我们大家知道 xff0c HTTP 是应用层协
  • 简单聊聊从 nginx 到 kong 的进化

    在我们的传统业务中 xff0c Nginx 在七层网关场景中应用得很广 但是最近几年由于微服务的盛行 Nginx 上的这套生态链也在不断地进化 2007 年国人章亦春大神在 Nginx 的基础上开发出了 OpenResty 2009 年 m
  • golang中的缓存一致性、内存序、内存屏障与CAS原理

    CPU缓存架构 现代处理器一般是多核架构 xff0c 并且为了平衡CPU和内存的速度差距 xff0c 还引入了多级Cache CPU Cache 是由很多个 Cache Line 组成 xff0c 每个Cache Line大小为64KB C
  • HashMap与红黑树

    一 为什么需要HashMap 在我们写程序的时候经常会遇到数据检索等操作 xff0c 对于几百个数据的小程序而言 xff0c 数据的存储方式或是检索策略没有太大影响 xff0c 但对于大数据 xff0c 效率就会差很远 1 线性检索 xff
  • docker执行报错:no such file or directory: unknown

    在linux下编译的golang程序放到docker的busybox镜像里无法执行 xff0c 显示报错信息 xff1a exec No such file or directory 在Docker化的今天 xff0c 我们经常需要静态编译
  • 香烟价格

    上海地区报价 欢迎补漏 改错 有的价格过高或偏底是地域不同 品名 产地 批发 零售 白沙 xff08 硬盒 xff09 长沙卷烟厂 42 00 4 50 白沙 xff08 软盒 xff09 长沙卷烟厂 37 00 4 00 芙蓉 xff08
  • java关键字Transient

    Java的serialization提供了一种持久化对象实例的机制 当持久化对象时 xff0c 可能有一个特殊的对象数据成员 xff0c 我们不想用serialization机制来保存它 为了在一个特定对象的一个域上关闭serializat
  • 拨打国际电话的国际字冠和国家代码

    中国 字冠 代码 中国大陆 00 86 中国香港 001 852 中国澳门 01 853 中国台湾 002 886 其它国家或地区 序号 国家 国际字冠 国家代码 1 美国 011 1 2 加拿大 011 1 3 智利 0 56 4 秘鲁
  • VirtualBox Host-Only 连接设置

    1 VirtualBox连接方式选择 xff1a Host Only 在宿主机windows上会自动新建连接 xff1a VirtualBox Host Only Network 2 启用宿主机windows的连接共享 xff0c 此时Vi
  • 基于HHARM9-EDU的TCP/IP(UDP)协议的实现

    基于HHARM9 EDU的TCP IP UDP 协议的实现 摘 要 xff1a 嵌入式技术的发展日新月异 xff0c 现如今 xff0c 嵌入式设备已经广泛应用于各种网络 xff0c 本文简要地说明一下如何实现 PC 与 HHARM9 ED
  • 简单的linux c socket例子

    服务端代码 xff1a span style color 000000 span style color 0000cc span span style color ff0000 include span span style color 0

随机推荐

  • Mask R-CNN图像识别和分割实现步骤(二)

    一 搭建环境 xff08 widdows10 xff09 xff08 一 xff09 安装anaconda3 1 下载地址 xff1a Anaconda Individual Edition 2 安装步骤 xff1a 图上双击 xff0c
  • C++ STL

    C 43 43 STL vector 变长数组 xff0c 倍增的思想 size 返回元素个数 empty 返回是否为空 clear 清空 front back push back pop back begin end 支持比较运算 xff
  • 结构体对齐规则

    结构体对齐规则 xff1a 1 第一个成员在于结构体变量偏移量为0的地址处 2 其他成员变量要对齐到某个数字 xff08 对齐数 xff09 的整数倍的地址处 对齐数 61 编译器默认的一个对齐数 与 该成员大小的 较小值 3 结构体总大小
  • 串口通信数据位长度对传输数据的影响

    针对串口通信 xff0c 关于设置数据位长度对通信的影响 xff0c 如图 xff1a 在串口数据通信中 xff0c 会看到串口参数设置 其中 数据位 设置 xff0c 共有四档选项 xff0c 分别是8 7 6 5 那么改变这个参数会对数
  • 建议收藏丨你想了解的动捕内容全在这儿!

    导语 对于第一次听说动作捕捉的大多数人而言 xff0c 动作捕捉听起来是一个 34 高级 34 同时 摸不清门路 的词汇 它作为虚拟与现实的沟通桥梁 xff0c 被应用于科学研究 影视制作 虚拟主播 体育运动 步态分析等广泛领域 xff0c
  • ROS速成之发送&接收消息

    人真的老了 xff0c 扔了个周末 xff0c 完全不记得干了什么 论纪录的重要性啊 xff0c 当时觉得明白的很 xff0c 你扔两天试试 xff1f 扔一年试试 xff1f 扔几年试试 xff1f 最近参加的各种项目脑疼眼乏 xff0c
  • MFC VC 双缓冲绘图基本原理与实现,详细解释

    MFC VC 双缓冲绘图基本原理与实现 xff0c 详细解释 MFC做了一些时间了 xff0c 不得不面对 的是在界面上画图的 当然你可以直接搜索到能用的代码 xff0c 并且基本能满足要求 不过这样总不是学习的态度 本着学习分享的态度 x
  • 关于dlg.DoModal()==IDOk的理解

    问题1 xff1a if dlg DoModal 61 61 IDOK 怎么理解啊 xff1f 问题2 xff1a 当我 CMyDlg dlg 时 xff0c 对话框显示了吗 xff1f 是不是要写dlg DoModal 这时对话框才显示出
  • 关于中值滤波算法,以及C语言实现

    1 什么是中值滤波 xff1f p p p style line height 28px margin top 0px margin bottom 10px padding top 0px padding bottom 0px color
  • (重)python:subprocess模块之Popen方法简介,管道机制(stdout\stdin\stderr)实现shell命令执行

    subprocess是Python 2 4中新增的一个模块 xff0c 它允许你生成新的进程 xff0c 连接到它们的 input output error 管道 xff0c 并获取它们的返回 xff08 状态 xff09 码 本文主要举例
  • 图像分辨率和图像大小的计算

    一 BMP位图 1 一个实际例子 xff0c 选择一个24位深度的225 225位图 xff0c 由于24位位图是真彩色 xff0c 没有颜色表这一样 xff0c 所以 其文件大小为152 154字节 xff0c 则 152 154 61
  • 关于 *i++与 ++*i

    一直都不知道 i 43 43 与 43 43 i有什么区别 xff0c 也不知道该怎么用 xff0c 今天特地研究了一下 看下面一段代码 xff1a include lt iostream gt include lt string gt u
  • sql语句中select……as的用法

    as 可理解为 xff1a 用作 当成 xff0c 作为 xff1b 一般是重命名列名或者表名 1 例如有表table xff0c 列 column 1 column 2 你可以写成 select column 1 as 列1 column
  • C++中virtual(虚函数)的用法

    在面向对象的C 43 43 语言中 xff0c 虚函数 xff08 virtual function xff09 是一个非常重要的概念 因为它充分体现了面向对象思想中的继承和多态性这两大特性 xff0c 在 C 43 43 语言里应用极广
  • 关于32位系统中int、float、short、double等占多少个字节

    我用VC编译的 xff0c 测试了一下 xff0c 代码如下 xff1a include 34 iostream 34 using namespace std int main cout lt lt sizeof char lt lt en
  • C语言中关于int、long int、long long 的区别

    1 关于int 和 long int xff08 1 xff09 在VC下没有区别 两种类型均用4个字节存放数据 xff08 2 xff09 VC是后出的编译器 xff0c 之前有很多早期的C编译器 xff0c 在早期编译器下long in
  • arp a命令的通俗解释

    ARP A 查询系统中缓存的ARP表 ARP表用来维护IP地址与MAC地址的一一对应 比方说 xff0c 某推拿室总有30名服务员 xff0c 为了方便管理 xff0c 服务员都编了号 xff0c 由01编到30 客人们都只记得服务员的编号
  • sqlite模糊查询与分页

    sqlite模糊查询与分页 64 param queryWords 要查询的关键词 xff08 中英文都可以 xff09 64 param curItem 当前查询到的item 所在位置 64 param sizeRequest 每次请求查
  • 设计模式-回调函数和观察者模式

    Android的框架中有非常多的地方使用了回调的模式 xff0c 例如Activity的生命周期 xff0c 按钮的点击事件等 下面是回调的基本模型 xff1a java view plain copy public class A pri
  • QT之表格控件

    目录 一 xff1a 表格控件 1 QTableWidget表格的创建 1 QTableWidgetItem单元格 2 表格的信号和槽 3 代码引例 1 在 h文件中定义 2 在main文件中创建并实现 4 结果演示 GIF 一 xff1a