- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一个 X 显示说 :2 。我想在给定的 X 上显示我的 qt 小部件展示。此显示不同于主显示。因此,除了主显示器(由环境变量 DISPLAY 设置)之外,我还想访问一个额外的 X 显示器。
我知道 QDekstopWidget 有 screen function()。这不是我想要的。我有一种特殊情况,当我想使用显示 ID。
让我知道是否有办法做到这一点。更新:试过这个
#include<QApplication>
#include<QWidget>
#include <X11/Xlib.h>
#include <X11/Xutil.h>
#include <X11/Xresource.h>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Display* display = XOpenDisplay(":1");
XSynchronize(display, True);
//XSetErrorHandler(myErrorHandler);
Window x11root = XDefaultRootWindow(display);
int x = 0;
int y = 0;
unsigned int width = 500;
unsigned int height = 500;
unsigned int borderWidth = 0;
long colorBlue = 0xff0000ff;
Window x11w = XCreateSimpleWindow(display, x11root, x, y,
width, height, borderWidth, 1 /*magic number*/, colorBlue);
XMapWindow(display, x11w); // must be performed after XReparentWindow,
// otherwise the window is not visible.
QWidget w;
w.resize(200,200);
w.show();
XReparentWindow(display, w.winId(), x11w, 0, 0);
return a.exec();
按照建议尝试了 qscreen 测试。它正在检测显示器,但两个窗口都在显示:3
shiva@RSV-HP-ENVY-15-Notebook-PC:/tmp/korvins-qtbase-6226fcdc3e4ace4636c58778ef53fbf69f46c36e-6226fcdc3e4ace4636c58778ef53fbf69f46c36e/tests/manual/qscreen$ ./qscreen -platform xcb::3::5
qt.core.logging: Loading "/home/shiva/.config/QtProject/qtlogging.ini" ...
qt.qpa.screen: Output VGA-1-0 is not connected
qt.qpa.screen: Output HDMI-1-0 is not connected
qt.qpa.screen: adding QXcbScreen(0x1b82f60, name="eDP-1-0", geometry=1366x768+0+0, availableGeometry=1309x744+57+24, devicePixelRatio=1.0, logicalDpi=QPair(96.0,96.0), physicalSize=344.0x194.0mm, screenNumber=0, virtualSize=1366x768 (1366.0x768.0mm), orientation=Qt::ScreenOrientation(LandscapeOrientation), depth=24, refreshRate=59.0, root=2c1, windowManagerName="Compiz") (Primary: true )
qt.qpa.screen: primary output is "eDP-1-0"
qt.qpa.screen: connecting to additional display: "" "3"
qt.qpa.screen: adding QXcbScreen(0x1bae540, name="TurboVNC", geometry=1024x716+0+0, availableGeometry=1024x664+0+28, devicePixelRatio=1.0, logicalDpi=QPair(96.0,96.0), physicalSize=271.0x189.0mm, screenNumber=0, virtualSize=1024x716 (1024.0x716.0mm), orientation=Qt::ScreenOrientation(LandscapeOrientation), depth=24, refreshRate=60.0, root=6a, windowManagerName="Metacity") (Primary: true )
qt.qpa.screen: primary output is "TurboVNC"
qt.qpa.screen: connecting to additional display: "" "5"
qt.qpa.screen: adding QXcbScreen(0x1bd6ca0, name="TurboVNC", geometry=1024x716+0+0, availableGeometry=1024x664+0+28, devicePixelRatio=1.0, logicalDpi=QPair(96.0,96.0), physicalSize=271.0x189.0mm, screenNumber=0, virtualSize=1024x716 (1024.0x716.0mm), orientation=Qt::ScreenOrientation(LandscapeOrientation), depth=24, refreshRate=60.0, root=6a, windowManagerName="Metacity") (Primary: true )
qt.qpa.screen: primary output is "TurboVNC"
Xlib: extension "GLX" missing on display ":5".
Xlib: extension "GLX" missing on display ":5".
Xlib: extension "GLX" missing on display ":5".
Xlib: extension "GLX" missing on display ":5".
Could not initialize OpenGL for RasterGLSurface, reverting to RasterSurface.
Xlib: extension "GLX" missing on display ":5".
Xlib: extension "GLX" missing on display ":5".
Xlib: extension "GLX" missing on display ":5".
Xlib: extension "GLX" missing on display ":5".
Could not initialize OpenGL for RasterGLSurface, reverting to RasterSurface.
Xlib: extension "GLX" missing on display ":5".
Xlib: extension "GLX" missing on display ":5".
Xlib: extension "GLX" missing on display ":5".
Xlib: extension "GLX" missing on display ":5".
Could not initialize OpenGL for RasterGLSurface, reverting to RasterSurface.
最佳答案
关于c++ - X 显示器的 QDesktopWidget,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35498895/
有什么选择?如何使用 QGuiApplication 和 QScreen 将我的 QMainWindow 放在屏幕中央。 最佳答案 你只需要使用QGuiApplication.primaryScree
有什么选择?如何使用 QGuiApplication 和 QScreen 将我的 QMainWindow 放在屏幕中央。 最佳答案 你只需要使用QGuiApplication.primaryScree
我正在使用 Qt 4.8.5 在 Mac OS 10.9.1 上进行测试相同的代码可以在 Windows 上运行,我很确定它在从 MacOS 10.8 更新之前可以运行。 private slots:
我需要找到我的桌面应用程序连接到的每个屏幕的像素分辨率。 QDesktopWidget 将执行此操作。文档说它已经过时了,但他们不推荐使用什么来代替。 有什么想法吗? 最佳答案 使用QGuiAppli
我有一个 X 显示说 :2 。我想在给定的 X 上显示我的 qt 小部件展示。此显示不同于主显示。因此,除了主显示器(由环境变量 DISPLAY 设置)之外,我还想访问一个额外的 X 显示器。 我知道
我有一个 QT 应用程序,它会在启动时更改屏幕分辨率(通过 unix 中的 xrandr 或通过 OSX 中的 CGConfigureDisplayMode) 一旦屏幕分辨率更改完成并成功,应用程序将
我正在使用 Qt-5.2 和 Win7。 该应用程序使用两个显示器,我想截取包含两个屏幕的屏幕截图。QGuiApplication::screens() 返回两个 QScreen 对象的列表,当我截取
我有一张背景图片,想在 Qt 5.7 的 QGraphicsView 中显示。我希望窗口的大小能够完全覆盖我的整个屏幕,而无需滚动。因此,我想确保它为 Windows 中的任务栏和 Ubuntu 中的
我是一名优秀的程序员,十分优秀!