我有两个"QMainWindows“A和B。
A有一个指向B的指针作为类成员(并在构造函数上动态创建B)。程序的实现在两个不同的监视器中。'A‘显示在监视器'X’上,'B‘显示在监视器'Y’上。“A”控制在“B”上显示的内容,因为我在两个不同的监视器上显示了它们,所以在“A”中,我想看看“B”上发生了什么(类似于“实时屏幕截图”)。有没有办法做到这一点?
我曾经想过在‘A’的构造函数上创建一个"QWidget *clone = B->ui->centralWidget;“,因为在'B‘中我把所有的信息都放在了一个'QWidget centralWidget’下面,但似乎行不通。
任何有启发性的想法都会被深深地领会!
发布于 2014-06-27 17:36:23
您应该能够使用QPixmap::grabWindow
和QTimer。QPixmap::grabWindow
返回一个QPixmap,您可以简单地在QLabel
上显示该you
显示的类的虚拟头文件
class MainWindow: public QMainWindow, public Ui::MainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = NULL);
~MainWindow() {};
public slots:
void update();
private:
MainWindow2 *window;
QTimer *timer;
};
实现
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秒更新一次(显然,您可以根据需要进行调整)。这是否涵盖了您的用例?
https://stackoverflow.com/questions/23577459
复制相似问题