我的系统 (RHEL 6.3) 上有一个双显示显卡。
我使用 qt creator (qt-4.8) 开发了一个简单的应用程序,它会抛出两个不同的 UI。
当我执行此操作时,两个 UI 仅在一个显示器中启动。
我需要的是我的一个 UI 应该在主屏幕上运行,一个在辅助屏幕上运行(即 0.0 和 0.1)。
我应该如何使用 qt-creator 做到这一点?
xclock -display :0.0
xclock -display :0.1
工作正常。
我的系统 (RHEL 6.3) 上有一个双显示显卡。
我使用 qt creator (qt-4.8) 开发了一个简单的应用程序,它会抛出两个不同的 UI。
当我执行此操作时,两个 UI 仅在一个显示器中启动。
我需要的是我的一个 UI 应该在主屏幕上运行,一个在辅助屏幕上运行(即 0.0 和 0.1)。
我应该如何使用 qt-creator 做到这一点?
xclock -display :0.0
xclock -display :0.1
工作正常。
您可以使用QDesktopWidget来获取屏幕信息。它允许您查询屏幕数量和每个屏幕的尺寸
int QDesktopWidget::screenCount () const;
const QRect QDesktopWidget::availableGeometry ( int screen = -1 ) const;
从那里,您可以将小部件移动到任何给定的屏幕。例如,以下代码将小部件移动到给定屏幕,如果指定屏幕不可用,则移动到默认屏幕:
QDesktopWidget* w = QApplication::desktop();
//some value
int mydesiredscreen = 1;
//fallback to default screen if none
if(mydesiredscreen >= w->screenCount()) mydesiredscreen = -1;
QRect rect1 = w->availableGeometry(mydesiredscreen);
mywindow->move(rect1.topLeft());
光辉,
要在辅助监视器上显示您的第二个 UI,您可以为您的第二个 UI 使用 setParent 属性:
int screenNumber = 1; /* 想要的屏幕编号 */
QWidget secondaryUI_widget; /* 次要 UI 对象,将在次监视器上显示 */
QDesktopWidget myDesktopWidget; /* 创建一个 QDesktopWidget 对象 */
secondUI_myDesktopWidget.setParent(myDesktopWidget(screenNumber));
上面的行将设置您希望在其上将页面显示为 UI 对象的父级的所需屏幕。现在您可以在程序中的任何位置为您的第二个 UI 调用 show() 函数,第二个 UI 将显示在所需的屏幕编号上,就像 screenNumber 值一样