Неактивные кнопки меню |
Здравствуйте, гость ( Вход | Регистрация )
Неактивные кнопки меню |
NordWest |
8.4.2009, 0:35
Сообщение
#1
|
Студент Группа: Участник Сообщений: 86 Регистрация: 26.11.2008 Пользователь №: 433 Спасибо сказали: 1 раз(а) Репутация: 0 |
Здравствуйте.
Проблема с кнопками в меню MainWindow. В процессе разработки обнаружился такой глюк. Несколько пунктов меню: file, view, frame и tools. Но отзывается на подведение мыши и клик только последняя кнопка. Остальные не становятся выпуклыми и никак не реагируют. Но если открыть последнее меню, то можно из него передвигаться в остальные. Кривой такой способ работы получается. В результате попыток выявления источника, влияющего на возникновение проблемы, пробовал отключать участки кода. В результате нашел ту часть кода, при удалении которой, меню оживает. Связана она с моим первым ui-диалогом, который имеет одно поле QLineEdit и две кнопки: Ok и Cancel. Но по порядку... Для начала MainWindow:
Собственно методы setMenu() и setWidget() имеют смысл, поэтому немного сократил. Теперь setMenu():
Наполнение меню похоже также несущественно. И наконец setWidget(), в котором создается объект типа newNameDlg:
В самом классе мне не за что зацепиться. Нужен был диалог и я его создал как попроще. Видимо я криво связал сигналы со слотами... "newNameDlg.h"
"newNameDlg.cpp"
Такая вот история. Сообщение отредактировал Admin - 8.4.2009, 8:24
Причина редактирования: Подредактировал тэг code и добавил expand
|
|
|
igor_bogomolov |
8.4.2009, 10:23
Сообщение
#2
|
Профессионал Группа: Сомодератор Сообщений: 1215 Регистрация: 22.3.2009 Из: Саратов Пользователь №: 630 Спасибо сказали: 235 раз(а) Репутация: 29 |
Разобрался.
Если конечно я все провельно понял. newNameDlg это же диалоговае окно, я правильно понимаю, а не виджет на форме MainWindow? Поэтому данный класс должен наследоваться от QDialog, а не от QWidget. Конструктор класса я упростил до У меня таким образом все заработало нормально. До модификаций возникала та же самая проблема.И еще. formWidget->show() можно и не делать раз вы его сразу скрываете после создания класса. P.S. Взаимодействие сигнал-слот не проверял. |
|
|
Litkevich Yuriy |
8.4.2009, 10:34
Сообщение
#3
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
|
|
|
NordWest |
8.4.2009, 10:39
Сообщение
#4
|
Студент Группа: Участник Сообщений: 86 Регистрация: 26.11.2008 Пользователь №: 433 Спасибо сказали: 1 раз(а) Репутация: 0 |
Отлично! Заработало и у меня. Большое спасибо!)
newNameDlg это же диалоговае окно, я правильно понимаю, а не виджет на форме MainWindow? Была необходимость в простом диалоговом окне, но получилось непойми что. Я у QDesigner'e состряпал форму и выставил в ней свойства изходя из своего представления. Ну и пример какой-то посмотрел. По мне, так окошко, которое по show() и hide() работает, является виджетом. А диалоговое окно создается в процедуре и doModal() какое-нибудь делает или exec(). не обязан, у меня есть много диалоговых окон наследников QWidget, потому-что мне ненужна функциональность QDialog. И ни каких проблем. Но баг ушел тем не менее при замене QWidget -> QDialog... |
|
|
igor_bogomolov |
8.4.2009, 10:44
Сообщение
#5
|
Профессионал Группа: Сомодератор Сообщений: 1215 Регистрация: 22.3.2009 Из: Саратов Пользователь №: 630 Спасибо сказали: 235 раз(а) Репутация: 29 |
не обязан, у меня есть много диалоговых окон наследников QWidget, потому-что мне ненужна функциональность QDialog. И ни каких проблем. Ладно, может и не должен. Тогда скажите как правильно. Я до того ниразу динамические диалоговые окна не делал. А то Вы часто меня критикуете, а причин не объясняете, в чем именно я не прав. Тем не менее если наследоваться от QWidget, у меня возникают те же самые продлемы что и у NordWest. При наследовании от QDialog этих проблем не возникает. |
|
|
Litkevich Yuriy |
8.4.2009, 11:03
Сообщение
#6
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
Тем не менее если наследоваться от QWidget, у меня возникают те же самые продлемы что и у NordWest. При наследовании от QDialog этих проблем не возникает. надо с остальным кодом разбиратьсяЯ до того ниразу динамические диалоговые окна не делал. такое поведение пунктов меню не должно быть связано с тем динамическое-ли окно или нет. Если же это так, то путь один - в трекер к тролям.NordWest, а ты можешь простейший компилируемы проект сделать (минимальных рамеров), в котором такое поведение проявляется. И выложить сюда? |
|
|
igor_bogomolov |
8.4.2009, 11:26
Сообщение
#7
|
Профессионал Группа: Сомодератор Сообщений: 1215 Регистрация: 22.3.2009 Из: Саратов Пользователь №: 630 Спасибо сказали: 235 раз(а) Репутация: 29 |
надо с остальным кодом разбираться Да нету никакого другого кода. Есть чистый проект. В disigner создан QMainWindow и меню. Есть файл ui. Форма из ui файла динамически загружается, как описано выше. Вот и весь код. а ты можешь простейший компилируемы проект сделать (минимальных рамеров), в котором такое поведение проявляется. И выложить сюда? Впринципе и я могу. Выложить? Вот тестовый проект. Если поменять QWidget на QDialog все станет нормально.
Прикрепленные файлы
|
|
|
Litkevich Yuriy |
8.4.2009, 11:43
Сообщение
#8
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
igor_bogomolov, просто любопытно пощупать, а времени самому набрасывать проект нету. Спасибо.
|
|
|
igor_bogomolov |
8.4.2009, 11:49
Сообщение
#9
|
Профессионал Группа: Сомодератор Сообщений: 1215 Регистрация: 22.3.2009 Из: Саратов Пользователь №: 630 Спасибо сказали: 235 раз(а) Репутация: 29 |
Да незачто. Самому ведь интерестно. Если бага, то только рад буду что нашли.
Юрий, еще к вам просьба. Когда ко мне лично обращаетесь, можно и по имени, я его не скрываю |
|
|
Litkevich Yuriy |
8.4.2009, 11:52
Сообщение
#10
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
|
|
|
Текстовая версия | Сейчас: 15.1.2025, 19:45 |