我有两个“QMainWindows”A和B.
A有一个指向B作为类成员的指针(并在构造函数上动态创建B)。程序实现在两个不同的监视器中。显示器'X'上显示'A',显示器'Y'显示'B'。 'A'控制'B'上显示的内容,因为我将它们放在两个不同的显示器中,在'A'中我想看到'B'上发生了什么(实时的'屏幕截图')。有没有办法做到这一点?
我曾想过制作一个“QWidget * clone = B-> ui-> centralWidget;”在'A'的构造函数中,因为在'B'中我拥有'QWidget centralWidget'下的所有信息,但它似乎不起作用。
任何有启发性的想法都会被深深地贬低!
答案 0 :(得分:0)
您应该可以使用QPixmap::grabWindow
和QTimer。 QPixmap::grabWindow
会返回一个QPixmap,您只需在其上显示,例如一个QLabel
显示
的类的虚拟头文件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之前,添加了一个检查以确保窗口不是NULL。
这样,子窗口的屏幕截图将显示在父窗口的QLabel中,并将每5秒更新一次(您可以根据需要进行调整)。这是否涵盖您的用例?