使用QT5.14版本写一个实时显示xfvb的:99显示器的代码,不要使用QX11Info
时间: 2024-05-01 14:20:29 浏览: 152
由于您没有给出太多的具体细节,我假设您想要在Linux系统上使用QT5.14版本实时显示X11服务器的屏幕。以下是一个简单的示例代码,它使用XCB库来实现此目的:
```cpp
#include <QApplication>
#include <QWidget>
#include <xcb/xcb.h>
class ScreenWidget : public QWidget
{
public:
ScreenWidget(QWidget *parent = nullptr)
: QWidget(parent)
{
xcb_connection_t *conn = xcb_connect(nullptr, nullptr);
if (conn == nullptr || xcb_connection_has_error(conn))
{
// Error connecting to X11 server
return;
}
xcb_screen_t *screen = xcb_setup_roots_iterator(xcb_get_setup(conn)).data;
if (screen == nullptr)
{
// Error getting screen information
xcb_disconnect(conn);
return;
}
xcb_drawable_t drawable = screen->root;
xcb_gcontext_t gc = xcb_generate_id(conn);
xcb_create_gc(conn, gc, drawable, 0, nullptr);
xcb_generic_event_t *event;
while ((event = xcb_wait_for_event(conn)) != nullptr)
{
switch (event->response_type & ~0x80)
{
case XCB_EXPOSE:
xcb_copy_area(conn, drawable, drawable, gc,
0, 0, width(), height(), 0, 0);
xcb_flush(conn);
break;
case XCB_KEY_PRESS:
// Quit application on any key press
xcb_disconnect(conn);
qApp->quit();
break;
}
free(event);
}
xcb_disconnect(conn);
}
};
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
ScreenWidget screenWidget;
screenWidget.resize(640, 480);
screenWidget.show();
return app.exec();
}
```
此代码创建了一个名为`ScreenWidget`的QWidget,它使用XCB库连接到X11服务器并实时显示了服务器的根窗口。当用户按下键盘上的任何键时,应用程序将退出。
请注意,此代码仅显示了根窗口,如果您想显示其他窗口或屏幕区域,您需要修改代码以使用正确的可绘制对象。
阅读全文