У меня есть два дисплея (один монитор, другой проектор), скажем, display1
, display2
. Я пытаюсь показать это мониторам на двух QLabels Label1
& Label2
.
Для этого я использую следующий код в QT.
QScreen *screen = QGuiApplication::primaryScreen();
QPixmap originalPixmap = screen->grabWindow(0);
ui->label->setPixmap(originalPixmap);
это я сделал для конкретной кнопки, т. Е. Когда я нажимаю кнопку «Пуск», запускается приведенный выше код, и если я нажимаю «кнопка остановки» Я очищаю label1
т.е. ui->label->clear();
Таким образом, я могу получить снимки экрана с изображениями, но я хочу, чтобы оно было вживую, поэтому я решил использовать QTimer, чтобы продолжать загружать изображения на этикетку и очищать его, но это не похоже на работу. Вот мой код
#include "ScreenCapture.h"
#include "ui_ScreenCapture.h"
ScreenCapture::ScreenCapture(QWidget *parent) :
QWidget(parent),
ui(new Ui::ScreenCapture)
{
ui->setupUi(this);
CaptureTimer=new QTimer(this);
CaptureTimer->setInterval(30);
connect(CaptureTimer,SIGNAL(timeout()),this,SLOT(load_an_Image()));
CaptureTimer->start();
}
void ScreenCapture::on_pbtn_start_clicked()
{
load_an_Image();
}
void ScreenCapture::on_pbtn_stop_clicked()
{
ui->label->clear();
}
void ScreenCapture::load_an_Image()
{
on_pbtn_stop_clicked();
QScreen *screen = QGuiApplication::primaryScreen();
QPixmap originalPixmap = screen->grabWindow(0);
ui->label->setPixmap(originalPixmap);
}
Это не работает, так как я получаю изображение внутри картинки, т.е. картинка
Таким образом, я подумал сделать для двух разных экранов. Итак, теперь мой вопрос: лучший способ показать экраны в режиме реального времени на QLabels
, а затем записать их и сохранить.