Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
|
maint |
17.10.2012, 8:16
Сообщение
#1
|
![]() Участник ![]() ![]() Группа: Участник Сообщений: 235 Регистрация: 3.8.2009 Из: Иркутск Пользователь №: 982 Спасибо сказали: 28 раз(а) Репутация: 2
|
Обнаружил неприятную вещь в Qt. Если в новом окне QTableView создается по new, то окна остаются активными навсегда (так же не происходит переключение по мыше и не наботают activateNextSubWindows и prew, активация окна не проходит), сколько бы их не было. Если описывать просто, то все нормально. И как с этим бороться не представляю
если в QTableView сделать setParent на создаваемое окно, все возвращается на круги своя. Похоже что QMdiArea и QTableView категорически не хотят дружить. Выхода из положения не вижу. Может у кого есть идеи ? Если вдруг кому покажется интересным могу выложить минимальный проект, собранный из стандартного примера mdi с добавкой вызова окон с QTableView Сообщение отредактировал maint - 17.10.2012, 10:41 |
|
|
|
|
Алексей1153 |
17.10.2012, 14:27
Сообщение
#2
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2946 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34
|
Цитата(maint @ 17.10.2012, 11:16) Link Если описывать просто, - "просто", это как ? Может быть, свойства не те задаёшь в new (попробуй вытащить свойства из "просто" и поглядеть их. Поставь такие же в new) Цитата(maint @ 17.10.2012, 11:16) Link Выхода из положения не вижу если на самом деле глюк, попробуй сделать прослойку из QWidget между QMdiArea и QTableView проект давай, конечно же |
|
|
|
|
RazrFalcon |
17.10.2012, 14:47
Сообщение
#3
|
![]() Zombie Mod ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1654 Регистрация: 24.5.2010 Из: Харьков Пользователь №: 1752 Спасибо сказали: 64 раз(а) Репутация: 212
|
Не совсем понял в чем проблема, давай проектик.
Но когда-то tableView я MDI точно вставлял. |
|
|
|
|
maint |
17.10.2012, 14:58
Сообщение
#4
|
![]() Участник ![]() ![]() Группа: Участник Сообщений: 235 Регистрация: 3.8.2009 Из: Иркутск Пользователь №: 982 Спасибо сказали: 28 раз(а) Репутация: 2
|
Цитата(RazrFalcon @ 17.10.2012, 20:47) Link Не совсем понял в чем проблема, давай проектик. Но когда-то tableView я MDI точно вставлял. выкладываю. Если в файле fbooks.cpp закоментировать строку 34, то все нормально Link Link да, нажимать надо на "New" Сообщение отредактировал maint - 17.10.2012, 15:04 |
|
|
|
|
Алексей1153 |
17.10.2012, 17:07
Сообщение
#5
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2946 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34
|
ну, как я и предполагал - различны флаги окна (а вот почему - вопрос открытый)
а именно, отличие во флаге Qt::Window если его доставить вручную, то поведение окон такое же, как при закомментированной строке 34 ещё глюк попутно нашёл - если попытаться открыть один из файлов png кнопкой панели инструментов, то программа падает ) |
|
|
|
|
maint |
17.10.2012, 17:37
Сообщение
#6
|
![]() Участник ![]() ![]() Группа: Участник Сообщений: 235 Регистрация: 3.8.2009 Из: Иркутск Пользователь №: 982 Спасибо сказали: 28 раз(а) Репутация: 2
|
Цитата(Алексей1153 @ 17.10.2012, 23:07) Link ну, как я и предполагал - различны флаги окна (а вот почему - вопрос открытый) а именно, отличие во флаге Qt::Window если его доставить вручную, то поведение окон такое же, как при закомментированной строке 34 ещё глюк попутно нашёл - если попытаться открыть один из файлов png кнопкой панели инструментов, то программа падает ) так в том то и хохма, что без видимого QTableView, теряется смысл. Может и падать, я собрал минимально возможный проект из стандартного примера и своего куска особо остальным не заморачиваясь, что бы понять где мог ошибиться. |
|
|
|
|
Алексей1153 |
17.10.2012, 19:23
Сообщение
#7
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2946 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34
|
во! Нашёл
в общем, всё оставляй, как у тебя есть (только смотри примечание в конце сообщения) но в fBooks::fBooks(int w, int h, QString title) перед resize(w, h); добавь --------------- *примечание, чистое ИМХО члены-переменные лучше объявлять в виде указателей и создавать их через new в конструкторе. А то можно перегрузить стек ненароком, ведь неизвестно, сколько чего лежит в классе. Кроме того, удобнее задавать родителя - через конструктор Сообщение отредактировал Алексей1153 - 17.10.2012, 19:27 |
|
|
|
![]() ![]() ![]() |
|
Текстовая версия | Сейчас: 26.12.2025, 16:53 |