首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >QT -克隆窗口"screen“在另一个窗口中

QT -克隆窗口"screen“在另一个窗口中
EN

Stack Overflow用户
提问于 2014-05-10 13:31:17
回答 1查看 616关注 0票数 1

我有两个"QMainWindows“A和B。

A有一个指向B的指针作为类成员(并在构造函数上动态创建B)。程序的实现在两个不同的监视器中。'A‘显示在监视器'X’上,'B‘显示在监视器'Y’上。“A”控制在“B”上显示的内容,因为我在两个不同的监视器上显示了它们,所以在“A”中,我想看看“B”上发生了什么(类似于“实时屏幕截图”)。有没有办法做到这一点?

我曾经想过在‘A’的构造函数上创建一个"QWidget *clone = B->ui->centralWidget;“,因为在'B‘中我把所有的信息都放在了一个'QWidget centralWidget’下面,但似乎行不通。

任何有启发性的想法都会被深深地领会!

EN

回答 1

Stack Overflow用户

发布于 2014-06-27 17:36:23

您应该能够使用QPixmap::grabWindow和QTimer。QPixmap::grabWindow返回一个QPixmap,您可以简单地在QLabel上显示该you

显示的类的虚拟头文件

代码语言:javascript
运行
复制
class MainWindow: public QMainWindow, public Ui::MainWindow
{
  Q_OBJECT

  public:
  MainWindow(QWidget *parent = NULL);
  ~MainWindow() {};

public slots:
  void update();

private:
  MainWindow2 *window;
  QTimer *timer;
};

实现

代码语言:javascript
运行
复制
MainWindow::MainWindow(QWidget *parent)
{
  setupUi(this);
  window = new MainWindow2;
  window->show();
  timer = new QTimer(this);
  connect(timer, SIGNAL(timeout()), this, SLOT(update()));
  timer->start(5000);

}

void MainWindow::update()
{
  if( window ) {
      QPixmap pixmap = QPixmap::grabWindow( window->winId() );
      label->setPixmap(pixmap);
  }
}

编辑:在询问窗口ID之前,添加了检查以确保该窗口不为空。

这样,子窗口的屏幕截图将显示在父窗口的QLabel中,并且每5秒更新一次(显然,您可以根据需要进行调整)。这是否涵盖了您的用例?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23577459

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档