Qt中的 tableView 设置 二进制 十六进制 序号表头

这篇具有很好参考价值的文章主要介绍了Qt中的 tableView 设置 二进制 十六进制 序号表头。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

二 进制序号

Qt中的 tableView 设置 二进制 十六进制 序号表头,QT,qt

因为QTableView的垂直表头并不支持使用委托来自定义。
相反,可以通过将自定义的QWidget作为QHeaderView的标签来实现这一目标。

代码:

#include <QApplication>
#include <QMainWindow>
#include <QVBoxLayout>
#include <QScrollArea>
#include <QTableView>
#include <QStandardItemModel>
#include <QHeaderView>
#include <QLabel>
#include <QPainter>

class BinaryHeaderView : public QHeaderView {
public:
    BinaryHeaderView(Qt::Orientation orientation, QWidget *parent = nullptr) 
        : QHeaderView(orientation, parent) {}

protected:
    void paintSection(QPainter *painter, const QRect &rect, int logicalIndex) const override {
        if (orientation() == Qt::Vertical) {
            QString binary = QString::number(logicalIndex, 2).rightJustified(4, '0');
            painter->save();
            painter->drawText(rect, Qt::AlignCenter, binary);
            painter->restore();
        } else {
            QHeaderView::paintSection(painter, rect, logicalIndex);
        }
    }
};

//------------------------------------------------------------------------以上复制到自己代码

int main(int argc, char *argv[]) {
    QApplication app(argc, argv);

    QMainWindow mainWindow;

    // 创建表格
    QTableView tableView;

    // 创建模型和数据
    QStandardItemModel model(10, 10);

    for (int row = 0; row < 10; ++row) {
        for (int column = 0; column < 10; ++column) {
            QModelIndex index = model.index(row, column, QModelIndex());
            model.setData(index, QVariant(row * 10 + column + 1));
        }
    }

    tableView.setModel(&model);

    // 设置水平表头
    tableView.horizontalHeader()->hide();

//------------------------------------------------------------------------以下复制到自己代码
    // 创建垂直表头
    BinaryHeaderView *verticalHeader = new BinaryHeaderView(Qt::Vertical, &tableView);
    tableView.setVerticalHeader(verticalHeader);
//------------------------------------------------------------------------end

    // 将表格添加到主窗口
    mainWindow.setCentralWidget(&tableView);

    mainWindow.resize(600, 400);
    mainWindow.show();

    return app.exec();
}

在这个示例中,自定义了BinaryHeaderView类,继承自QHeaderView,
重写了paintSection方法来绘制二进制序列。然后,将这个自定义的垂直表头应用到了QTableView中。

十六 进制序号

Qt中的 tableView 设置 二进制 十六进制 序号表头,QT,qt文章来源地址https://www.toymoban.com/news/detail-860293.html

#include <QApplication>
#include <QMainWindow>
#include <QVBoxLayout>
#include <QScrollArea>
#include <QTableView>
#include <QStandardItemModel>
#include <QHeaderView>
#include <QPainter>

class HexHeaderView : public QHeaderView {
public:
    HexHeaderView(Qt::Orientation orientation, QWidget *parent = nullptr) 
        : QHeaderView(orientation, parent) {}

protected:
    void paintSection(QPainter *painter, const QRect &rect, int logicalIndex) const override {
        if (orientation() == Qt::Vertical) {
            QString hex = QString("%1").arg(logicalIndex * 16, 4, 16, QChar('0'));
            painter->save();
            painter->drawText(rect, Qt::AlignCenter, hex);
            painter->restore();
        } else {
            QHeaderView::paintSection(painter, rect, logicalIndex);
        }
    }
};

int main(int argc, char *argv[]) {
    QApplication app(argc, argv);

    QMainWindow mainWindow;

    // 创建表格
    QTableView tableView;

    // 创建模型和数据
    QStandardItemModel model(10, 10);

    for (int row = 0; row < 10; ++row) {
        for (int column = 0; column < 10; ++column) {
            QModelIndex index = model.index(row, column, QModelIndex());
            model.setData(index, QVariant(row * 10 + column + 1));
        }
    }

    tableView.setModel(&model);

    // 设置水平表头
    tableView.horizontalHeader()->hide();

    // 创建垂直表头
    HexHeaderView *verticalHeader = new HexHeaderView(Qt::Vertical, &tableView);
    tableView.setVerticalHeader(verticalHeader);

    // 将表格添加到主窗口
    mainWindow.setCentralWidget(&tableView);

    mainWindow.resize(600, 400);
    mainWindow.show();

    return app.exec();
}

到了这里,关于Qt中的 tableView 设置 二进制 十六进制 序号表头的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 【进制转换】— 包含整数和小数部分转换(二进制、八进制、十进制、十六进制)手写版,超详细

    目录 1.进制转换必备知识:         1.1 二进制逢2进1         8进制逢8进1           10进制逢10进1        16进制逢16进1         1.2为了区分二、八、十、十六进制,我们通常在数字后面加字母进行区分 2. 二进制与八进制、十六进制相互转换         2.1 二进制转

    2024年02月05日
    浏览(306)
  • 【Golang】十六进制字符串转二进制字符串

    在计算机科学中,我们经常需要在不同进制的数字之间进行转换。Go语言提供了一系列的标准库来方便我们进行这些进制转换。本文将介绍如何使用Go语言将十六进制字符串转换为二进制字符串。 首先,我们定义一个函数 hexToBinary 用于执行这个转换。该函数接受一个十六进制

    2024年02月02日
    浏览(51)
  • 数据结构:使用顺序栈的基本操作,实现十进制转为二进制,十六进制的转换

    使用系统环境: 1:win10,使用工具dev 2:使用系统win10 3:参考书籍数据结构(C语言版——严蔚敏 吴伟民) ( 注意:此文章默认,学习者拥有一定的数据机构栈,C语言的知识,书籍第20页,2.1算法的代码进行一个简化。)

    2024年02月05日
    浏览(66)
  • 51单片机LCD1602液晶屏显示字符,字符串,(有)无符号整数,十六进制数,二进制数等

    LCD1602液晶显示器是广泛使用的一种字符型液晶显示模块。液晶显示模块具有体积小、功耗低、显示内容丰富、超薄轻巧等优点,在嵌入式应用系统中得到越来越广泛的应用,这讲中向大家介绍的LCD1602 液晶显示模块(其内部控制器为HD44780 芯片),它可以显示两行,每行16 个字

    2024年02月04日
    浏览(67)
  • JS中的常见二进制数据格式

    格式 描述 用途 示例 ArrayBuffer 固定长度的二进制数据缓冲区,不直接操作具体的数据,而是通过类型数组或DataView对象来读写 用于存储和处理大量的二进制数据,如文件、图像等 let buffer = new ArrayBuffer(16); TypedArray 基于ArrayBuffer对象的视图,提供特定格式的读写接口 用于操作

    2024年04月11日
    浏览(43)
  • 【1091. 二进制矩阵中的最短路径】

    来源:力扣(LeetCode) 描述: 给你一个 n x n 的二进制矩阵 grid 中,返回矩阵中最短 畅通路径 的长度。如果不存在这样的路径,返回 -1 。 二进制矩阵中的 畅通路径 是一条从 左上角 单元格(即, (0, 0) )到 右下角 单元格(即, (n - 1, n - 1) )的路径,该路径同时满足下述要

    2024年02月08日
    浏览(49)
  • 07-2_Qt 5.9 C++开发指南_二进制文件读写(stm和dat格式)

    除了文本文件之外,其他需要按照一定的格式定义读写的文件都称为二进制文件 。每种格式的二进制文件都有自己的格式定义,写入数据时按照一定的顺序写入,读出时也按照相应的顺序读出。例如地球物理中常用的 SEG-Y 格式文件,必须按照其标准格式要求写入数据才符合

    2024年02月13日
    浏览(47)
  • 【MySQL 数据宝典】【磁盘结构】- 006 bin log 二进制日志的基本模式和参数设置

    binlog是一个二进制格式的文件,用于记录 用户对数据库更新的SQL 语句信息,例如更改数据库表和更改内容的SQL语句都会记录到binlog里,但是不会记录SELECT和SHOW这类操作。 binlog在MySQL的Server层实现(引擎共用) binlog为逻辑日志,记录的是一条SQL语句的原始逻辑 binlog不限制大小,追

    2024年04月24日
    浏览(47)
  • 2023-5-26 LeetCode每日一题(二进制矩阵中的最短路径)

    点击跳转到题目位置 给你一个 n x n 的二进制矩阵 grid 中,返回矩阵中最短 畅通路径 的长度。如果不存在这样的路径,返回 -1 。 二进制矩阵中的 畅通路径 是一条从 左上角 单元格(即,(0, 0))到 右下角 单元格(即,(n - 1, n - 1))的路径,该路径同时满足下述要求: 路径途

    2024年02月06日
    浏览(94)
  • linux下卸载,安装mariadb数据库,设置外部访问(二进制包安装和卸载,非docker)

     如果存在,删除服务  删除目录(因为我docker里也安装了mysql,所以根据自己情况删除 ) 下载地址: https://mariadb.org/download  我的数据位置在/usr/local/data/mysql  安装成功  查看数据目录 my.cnf具体配置(网上有很多,找一个就行,但是注意目录的修改)  不修改会报错 报错详情:详细

    2024年02月03日
    浏览(45)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包