Перетаскивание не работает для приложения виджетов Qt, захваченного и внедренного с использованием QWidget :: createWindowContainer - PullRequest
0 голосов
/ 30 апреля 2018

У меня есть приложение, которое захватывает и встраивает другое приложение, используя QWidget::createWindowContainer. Вот код, ответственный за это:

void MainWindow::capture( WId wid )
{
    auto window = QWindow::fromWinId( wid );
    auto widget = QWidget::createWindowContainer( window );
    ui->ContentFrame->layout()->addWidget( widget );
}

Приложение захвачено и успешно добавлено в макет, но перетаскивание не работает в захваченном приложении. При перетаскивании виджета курсор отображает X, когда виджет удерживается над захваченным приложением, и отбрасывание ничего не приводит.

Я пытался убедиться, что перетаскивание действительно включено, используя setAcceptsDrops() и setAttribute( Qt::WA_AcceptDrops ) на только что созданном виджете, виджете, в который он встроен, и диалоге захвата, но ничего из этого не кажется чтобы изменить ситуацию.

Функция перетаскивания работает для захваченного приложения, когда оно запущено само по себе и не захвачено. Кажется, это процесс захвата, который ломает перетаскивание. Что-то, что мне нужно сделать вручную, чтобы убедиться, что это работает в моем сценарии?

Некоторая дополнительная информация: я разрабатываю с Qt 5.5.1 на Ubuntu 16.04. Захваченное приложение запускается с помощью QProcess в приложении захвата.

...