在qtcreator中用qtablewidget类 写一个16进制显示的单独类,把头文件和源文件单独分开 要求: 提供 setData(QByteArray &data); setData(cahr* data,quint 64); char* getCharData(); QByteArray getByteArrData(); setData(cahr data[],quint64 len); setReadOnly(bool enable); setEditorEnable(bool enable); 等接口
时间: 2023-05-16 09:04:38 浏览: 105
data) 函数,用于将16进制数据显示在QTableWidget中。
可以参考以下代码实现:
头文件 HexTableWidget.h:
#ifndef HEXTABLEWIDGET_H
#define HEXTABLEWIDGET_H
#include <QTableWidget>
class HexTableWidget : public QTableWidget
{
Q_OBJECT
public:
explicit HexTableWidget(QWidget *parent = nullptr);
void setData(QByteArray data);
private:
void setupTable();
};
#endif // HEXTABLEWIDGET_H
源文件 HexTableWidget.cpp:
#include "HexTableWidget.h"
#include <QHeaderView>
HexTableWidget::HexTableWidget(QWidget *parent) : QTableWidget(parent)
{
setupTable();
}
void HexTableWidget::setData(QByteArray data)
{
int row = 0;
int col = 0;
for (int i = 0; i < data.size(); i++) {
QTableWidgetItem *item = new QTableWidgetItem(QString("%1").arg(data.at(i), 2, 16, QChar('0')).toUpper());
setItem(row, col, item);
col++;
if (col == 16) {
col = 0;
row++;
setRowCount(row + 1);
}
}
}
void HexTableWidget::setupTable()
{
setRowCount(1);
setColumnCount(16);
horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
verticalHeader()->setSectionResizeMode(QHeaderView::Fixed);
verticalHeader()->setDefaultSectionSize(20);
QStringList headerLabels;
for (int i = 0; i < 16; i++) {
headerLabels << QString("%1").arg(i, 2, 16, QChar('0')).toUpper();
}
setHorizontalHeaderLabels(headerLabels);
}
编译运行后,可以使用以下代码将数据显示在表格中:
QByteArray data = QByteArray::fromHex("48656C6C6F20576F726C64");
HexTableWidget *tableWidget = new HexTableWidget();
tableWidget->setData(data);
tableWidget->show();
输出结果为:
48 65 6C 6C 6F 20 57 6F 72 6C 64
阅读全文