簡體   English   中英

如何在擴展監視器上顯示QLabel

[英]How to show QLabel on extended monitor

我有一個非常簡單的Qt應用程序。 我的目標是,如果單擊按鈕,它應該在第二台/擴展顯示器上顯示消息。 我的應用程序將在主監視器上運行,並且顯示消息應出現在第二個監視器上。 那就是我的方法的樣子:

void MainWindow::on_pushButton_clicked()
{
   QLabel *ql = new QLabel();
   ql->setText("Order is Ready");
   ql->move(QGuiApplication::screens().last()->geometry());
   ql->show();
  .....
}

但這對我不起作用。我也嘗試過但也沒有工作:(任何幫助將不勝感激嗎?

ql->windowHandle()->setScreen(QGuiApplication::screens().last());

該示例不會為我“編譯”,而是嘗試類似的操作-設置坐標

ql->move(QGuiApplication::screens().last()->geometry().width(), QGuiApplication::screens().last()->geometry().height() / 2);

注意:問題是顯示器的哪一個是第一位,最后一位是...

你需要:

  1. 確保窗口位於屏幕所屬的虛擬桌面上。

  2. 它在給定屏幕上的某個位置。

從而:

void centerWidgetOnScreen(QWidget *widget, QScreen *screen) {
  auto *window = widget->windowHandle();
  Q_ASSERT(screen);
  Q_ASSERT(window);
  window->setScreen(screen);
  auto newCenter = screen->geometry().center();
  auto rect = window->geometry();
  rect.moveCenter(newCenter);
  window->setGeometry(rect);
}

void centerWidgetOnLastScreen(QWidget *widget) {
  centerWidgetOnScreen(widget, QGuiApplication::screens().last());
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM