在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-14 07:07:15 浏览: 113
qt实现的16进制显示界面
3星 · 编辑精心推荐
data) 函数,将传入的 QByteArray 数据以16进制的形式显示在 QTableWidget 中。
可以参考以下代码:
```cpp
#include <QTableWidget>
#include <QHeaderView>
class HexDisplayWidget : public QTableWidget
{
public:
HexDisplayWidget(QWidget *parent = nullptr) : QTableWidget(parent)
{
// 设置表格属性
setRowCount(16);
setColumnCount(16);
verticalHeader()->setVisible(false);
horizontalHeader()->setVisible(false);
setSelectionMode(QAbstractItemView::NoSelection);
setEditTriggers(QAbstractItemView::NoEditTriggers);
setStyleSheet("QTableWidget::item { padding: 0px; }");
// 初始化表格内容
for (int row = 0; row < 16; ++row) {
for (int col = 0; col < 16; ++col) {
QTableWidgetItem *item = new QTableWidgetItem();
item->setTextAlignment(Qt::AlignCenter);
setItem(row, col, item);
}
}
}
void setData(QByteArray data)
{
// 显示数据
for (int i = 0; i < data.size(); ++i) {
int row = i / 16;
int col = i % 16;
QTableWidgetItem *item = this->item(row, col);
item->setText(QString("%1").arg((quint8)data[i], 2, 16, QLatin1Char('0')).toUpper());
}
}
};
```
使用方法:
```cpp
HexDisplayWidget *widget = new HexDisplayWidget();
widget->setData(QByteArray("Hello, world!"));
widget->show();
```
效果如下:
```
48 65 6C 6C 6F 2C 20 77 6F 72 6C 64 21
```
阅读全文