qt - QByteArray 初始化

标签 qt c++11 qt5 c++14 c++17

我可以初始化一个QByteArray,例如:

QByteArray m_data;
m_data[0] = 0x0c;
m_data[1] = 0x06;
m_data[2] = 0x04;
m_data[3] = 0x04;
m_data[4] = 0x02;
m_data[5] = 0x00;

但我想要更紧凑的东西,例如:

QByteArray m_data{0x0c, 0x06, 0x04, 0x04, 0x02, 0x00};

遗憾的是,不允许使用此表单:

error: could not convert '{12, 6, 4, 4, 2, 0}' from '<brace-enclosed initializer list>' to 'QByteArray'
     QByteArray m_data{0x0c, 0x06, 0x04, 0x04, 0x02, 0x00};
                                                          ^

有没有其他选择(更接近我的梦想)?

(C++11/14/17 对这个问题有帮助吗?)

最佳答案

您可以让模板计算出列表中有多少个元素:

using myarr = char[];

template <size_t N>
QByteArray make_QByteArray(const char(&a)[N]) {
    return {a,N};
}

然后创建QByteArray:

auto  m_data{make_QByteArray(myarr{0x0c, 0x06, 0x04, 0x04, 0x02, 0x00})};

关于qt - QByteArray 初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40534922/

相关文章:

c++ - rethrow_exception 真的可以抛出相同的异常对象,而不是一个拷贝吗?

c++ - 使用默认模板参数

c++ - QT中如何获取后台应用程序窗口标题?

Qpushbutton 悬停/按下图标

c++ - 使用 QwtPlotCurve 断开第一个和最后一个点

c++ - 重载 std::function 参数以匹配 lambda

qt - 停用 (?) QML 项目以避免操作区域重叠

Qt5 中带有 pigpio 库的 C++ 回调函数

来自带有 *-devel 包但在 Centos 6.5 上没有调试符号的存储库的 Qt5

c++ - 在 OpenCV 中加快将图像写入硬盘的速度