Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Lion от Декабрь 11, 2012, 23:44



Название: После вызова setWindowFlags перестает работать Drag&Drop
Отправлено: Lion от Декабрь 11, 2012, 23:44
Никто не сталкивался с тем, что после вызова setWindowFlags перестает работать Drag&Drop в Windows7? Это легко проверить немного модифицировав пример Qt\examples\widgets\windowflags, надо сделать QTextEdit в нем редактируемым - в previewwindow.cpp заменить textEdit->setReadOnly(true) на textEdit->setReadOnly(false). Сразу после запуска в окне можно будет редактировать текст перемещая его мышкой, но после первого же изменения значения windowFlags редактирование мышкой перестанет работать. Кто знает как обойти этот глюк?


Название: Re: После вызова setWindowFlags перестает работать Drag&Drop
Отправлено: Lion от Декабрь 12, 2012, 00:23
Экспериментально выяснено, что помогает нижеследующая функция, которую надо вызывать после setWindowFlags
Код:
void MainWindow::restoreAcceptDrops(QWidget *AParent)
{
#ifdef Q_WS_WIN
foreach(QObject *object, AParent->children())
{
if (object->isWidgetType())
{
QWidget *childWidget = qobject_cast<QWidget *>(object);
if (childWidget->acceptDrops())
{
childWidget->setAcceptDrops(false);
childWidget->setAcceptDrops(true);
}
restoreAcceptDrops(childWidget);
}
}
#endif
}


Название: Re: После вызова setWindowFlags перестает работать Drag&Drop
Отправлено: Lion от Декабрь 12, 2012, 09:16
Помогает, но не всегда, полноценное решение все еще ищется.


Название: Re: После вызова setWindowFlags перестает работать Drag&Drop
Отправлено: krab от Декабрь 14, 2012, 00:16
Вот https://bugreports.qt-project.org/browse/QTBUG-28601  :)