我试图保持一个流到文件 /dev/fb0 (linux framebuffer) 在几个 Qt 成员函数中打开。目标是使用 myscreen::connect 函数打开帧缓冲区
bool myscreen::connect()
{
std::fstream myscreen_Fb;
myscreen_Fb.open("/dev/fb0")
QImage* image;
image = new QImage(w, h, QImage::Format_RGB888);
QScreen::data = image->bits();
}
理想情况下,这将打开帧缓冲区并创建一个新的 QImage 来充当正在写入屏幕的数据的内存缓冲区。然后我的“图像”将通过 bits() 函数指向屏幕上的第一个可见像素(内存)。我必须实现这一点,因为我的硬件不支持默认内存映射。
然后我想将它粘贴到屏幕上:
void myscreen::blit(const QImage &img, const QPoint &topLeft, const QRegion ®ion)
{
QScreen::blit(img, topLeft, region);
write(myscreen_Fb, image.bits(), image.size());
}
我似乎无法获得指向第一个可用像素的指针,也无法从 GCC 那里得到关于 myscreen_Fb 未在范围内声明的投诉。有任何想法吗?
更新
我进行了建议的更改并在类中声明了该函数,但得到了这个让我发疯的错误。
error: expected constructor, destructor, or type conversion before '.' token
它指的是包含以下内容的行:
vopuscreenFd.open("/dev/fb0", fstream::out);
布莱斯