Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt中的DataPtr用于什么?_Qt - Fatal编程技术网

Qt中的DataPtr用于什么?

Qt中的DataPtr用于什么?,qt,Qt,QVariant::DataPtr是私有的,昨天我用QBitArray做了一些工作。有一个函数data\u ptr()返回DataPtr&,但我不知道何时以及如何使用这个函数。我将返回的数据写入一个文件,并在ST2中打开它,显示一个SOH: int main() { QBitArray bit(8); bit[5] = true; //--> I tried bit[7] = true; result is `SOH` still QFile file("out")

QVariant::DataPtr
是私有的,昨天我用
QBitArray
做了一些工作。有一个函数
data\u ptr()
返回
DataPtr&
,但我不知道何时以及如何使用这个函数。我将返回的数据写入一个文件,并在ST2中打开它,显示一个
SOH

int main()
{
    QBitArray bit(8);
    bit[5] = true; //--> I tried bit[7] = true; result is `SOH` still
    QFile file("out");
    file.open(QIODevice::WriteOnly);
    QDataStream outs(&file);
    outs << bit.data_ptr();
    file.close();
    return 0;
}
intmain()
{
qbit阵列位(8);
位[5]=true;//-->我尝试了位[7]=true;结果仍然是'SOH'
QFile文件(“out”);
打开(QIODevice::WriteOnly);
qdata数据流输出(文件(&F);

outs只是一个指向结构的指针。该结构是私有的,因此您不应该使用它做任何事情。但是,您可以使用指向它的指针来区分两字节数组。use QBitArray::operator
data\u ptr
是指向
data
的指针。例如,您可以使用
data\u ptr
将QBitArray转换为char*:

auto data = bit.data_ptr()->data(); 
因此,
数据[0]
位的大小(这里是8),其他是
位的值。例如:

QBitArray bit(16);
bit[5] = true;
bit[14] = true;
auto data = bit.data_ptr()->data(); 

位的值是0x4020。因此,
data[0]
是16,
data[1]
是0x20,
data[2]
是0x40。

你的问题是关于QVariant或qbitary?在文档中找不到data_ptr(),投票结束…@UmNyobe我问的是关于
data_ptr()
,我只想知道它返回值的含义,它是一个
QVariant::DataPtr
…它是私有的。你为什么想知道私有成员的含义?它不是你想要使用的,我不知道你为什么想知道何时使用它。如果你仍然坚持,那么就转到你想要的类的源代码,并阅读它它是如何使用的。