Russian Qt Forum
Октябрь 01, 2024, 16:28 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: После вызова setWindowFlags перестает работать Drag&Drop  (Прочитано 3838 раз)
Lion
Гость
« : Декабрь 11, 2012, 23:44 »

Никто не сталкивался с тем, что после вызова setWindowFlags перестает работать Drag&Drop в Windows7? Это легко проверить немного модифицировав пример Qt\examples\widgets\windowflags, надо сделать QTextEdit в нем редактируемым - в previewwindow.cpp заменить textEdit->setReadOnly(true) на textEdit->setReadOnly(false). Сразу после запуска в окне можно будет редактировать текст перемещая его мышкой, но после первого же изменения значения windowFlags редактирование мышкой перестанет работать. Кто знает как обойти этот глюк?
Записан
Lion
Гость
« Ответ #1 : Декабрь 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
}
Записан
Lion
Гость
« Ответ #2 : Декабрь 12, 2012, 09:16 »

Помогает, но не всегда, полноценное решение все еще ищется.
Записан
krab
Гость
« Ответ #3 : Декабрь 14, 2012, 00:16 »

Вот https://bugreports.qt-project.org/browse/QTBUG-28601  Улыбающийся
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.043 секунд. Запросов: 21.