Виджет покидает пределы главного окна. |
Здравствуйте, гость ( Вход | Регистрация )
Виджет покидает пределы главного окна. |
Danmerpro |
16.4.2012, 10:18
Сообщение
#1
|
Студент Группа: Новичок Сообщений: 16 Регистрация: 21.8.2011 Пользователь №: 2823 Спасибо сказали: 0 раз(а) Репутация: 0 |
Приветствую. Подскажите, пожалуйста.
В главном окне есть QTabWidget. В каждом из tab'ов есть QGridLayout. В этот QGridLayout добавляются видеовиджеты (класс VideoWidget, унаследован он QWidget, занимается отображением видео на основе libvlc). Есть возможность листать эти видеовиджеты(так как их больше, и все сразу отобразиться не могут). Очистка tab'а при листании или смене его происходит следующим образом - удаляются видеовиджеты, затем, когда надо, удаляется старый QGridLayout, создается новый и добавляются в него новые видеовиджеты. Иногда возникает баг следующего рода - видеовиджеты при листании оказываются не в tab'е, а вне главного окна, хотя в коде сначала виджет размещается менеджером компоновки на своем месте, а потом запускается проигрывание. |
|
|
wiz29 |
16.4.2012, 12:19
Сообщение
#2
|
Старейший участник Группа: Участник Сообщений: 600 Регистрация: 7.7.2010 Из: Санкт-Петербург Пользователь №: 1866 Спасибо сказали: 94 раз(а) Репутация: 12 |
Скрины и куски кода не помешали бы ответе на ваш вопрос.
|
|
|
Danmerpro |
17.4.2012, 9:25
Сообщение
#3
|
Студент Группа: Новичок Сообщений: 16 Регистрация: 21.8.2011 Пользователь №: 2823 Спасибо сказали: 0 раз(а) Репутация: 0 |
Скрины и куски кода не помешали бы ответе на ваш вопрос. Вот, например размещение виджетов:
Вот запуск проигрывания:
Заметил ещё такую ситуацию. В программе возможен drag&drop видеовиджетов между собой. Тогда они поменяются местами (вернее они останутся на месте, но url видеопотока для каждого поменяется). Допустим получилась такая ситуация: некоторые видеовиджеты вылезли из окна, некоторые нормально в окне. Я беру виджет, который в окне, и перетаскиваю его на то место, где должен находиться виджет, который вылез из окна (в данный момент оно пустое, виджет-то вылез). И drag&drop успешно происходит. То есть виджет, который вне окна, успешно ловит dropEvent. Получается, что програмно виджет находится там, где должен быть, но реальное его отображение и проигрывание видео идет где-то в "левом" месте. Может это косяк, связанный именно с libvlc, но поиском ничего внятного найти не смог. |
|
|
wiz29 |
17.4.2012, 9:36
Сообщение
#4
|
Старейший участник Группа: Участник Сообщений: 600 Регистрация: 7.7.2010 Из: Санкт-Петербург Пользователь №: 1866 Спасибо сказали: 94 раз(а) Репутация: 12 |
1. А зачем каждый раз удалять QGridLayout? (вполне можно просто перегруппировать в том же компановщике)
2. Из приведенного кода видно только процесс создания виджета с компановщиком на 4 виджета. 3. Нужен код, который отвечает за перекомпановку виджетов, ведь в этом проблема, не так ли? |
|
|
Danmerpro |
17.4.2012, 10:41
Сообщение
#5
|
Студент Группа: Новичок Сообщений: 16 Регистрация: 21.8.2011 Пользователь №: 2823 Спасибо сказали: 0 раз(а) Репутация: 0 |
1. Подумаю над этим. Есть много разных раскладок, 2*2, 4*4 и тп.
3. При перемещении косяков как раз не бывает. Косяки именно при листании.То есть происходит удаление того, что есть, заново создается компановка, размещаются в ней виджеты и запускается проигрывание. Написано всё вроде бы правильно, но почему иногда так происходит - непонятно. |
|
|
Текстовая версия | Сейчас: 15.1.2025, 17:39 |