2

我的系统 (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

工作正常。

4

2 回答 2

2

您可以使用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());
于 2013-02-05T08:47:38.600 回答
1

光辉,

要在辅助监视器上显示您的第二个 UI,您可以为您的第二个 UI 使用 setParent 属性:

int screenNumber = 1; /* 想要的屏幕编号 */

QWidget secondaryUI_widget; /* 次要 UI 对象,将在次监视器上显示 */

QDesktopWidget myDesktopWidget; /* 创建一个 QDesktopWidget 对象 */

secondUI_myDesktopWidget.setParent(myDesktopWidget(screenNumber));

上面的行将设置您希望在其上将页面显示为 UI 对象的父级的所需屏幕。现在您可以在程序中的任何位置为您的第二个 UI 调用 show() 函数,第二个 UI 将显示在所需的屏幕编号上,就像 screenNumber 值一样

于 2013-03-21T17:13:33.527 回答