Здравствуйте, гость ( Вход | Регистрация )
|
aljeshishe |
12.1.2010, 23:56
Сообщение
#1
|
|
Студент ![]() Группа: Новичок Сообщений: 12 Регистрация: 1.12.2009 Пользователь №: 1271 Спасибо сказали: 2 раз(а) Репутация: 0
|
Не знаю, возможно это все бред, но... в упрощенном виде проблема следующая
Есть базовый класс окна class CMsgWindow : public QMainWindow Тут определяются элементы интерфейса общие для дочерних классов окон Например пункт меню Собщение\сохранить Есть дочерние классы class CInMsgWindow : public CMsgWindow class COutMsgWindow : public CMsgWindow В них определяется специфика. Например пункты меню Собщение\принять и Собщение\отправить соответственно. Проблема в том, что не всегда вызывая в конструкторе setupUi(this), можно добиться нужного эффекта. Например сначала в конструкторе CMsgWindow добавляется пункт "сохранить", а затем в конструкторе CInMsgWindow добавляется "принять". В результате получается не тот порядок пунктов меню который нужен, обусловленный порядком вызова конструкторов. Можно привести более сложные примеры... Все решила бы виртуализация функции инициализации элементов интерфейса. Тогда в дочернем классе можно вызывать функцию базового класса когда угодно, можно и вообще не вызывать. Но проблема в том, что виртуальные функции нельзя использовать в конструкторах. Отсюда вопрос, когда можно инициализировать элементы интерфейса, кроме как в конструкторе, при этом не меняя код создателя окна, оставляя его максимально простым: CMsgWindow *p = new CInMsgWindow; p->show(); Event'ы ? |
|
|
|
![]() |
|
Litkevich Yuriy |
13.1.2010, 23:12
Сообщение
#2
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94
|
Цитата(aljeshishe @ 13.1.2010, 21:40) Link Добавить флажок и будет работать просто после того как отпала необходимость в инициализации, разорви соединение с сигналом SigShow
|
|
|
|
aljeshishe Отложенная инициализация окна 12.1.2010, 23:56
Litkevich Yuriy Цитата(aljeshishe @ 13.1.2010, 2:56) Но п... 13.1.2010, 8:10
ViGOur Цитата(Litkevich Yuriy @ 13.1.2010, 8:10)... 13.1.2010, 10:02
aljeshishe Как это переопределить слот show. А что это даст, ... 13.1.2010, 17:57
Litkevich Yuriy Цитата(aljeshishe @ 13.1.2010, 20:57) кот... 13.1.2010, 18:19
aljeshishe Ну как вариант, только это событие будет вызыватьс... 13.1.2010, 18:40
kuler а разве обязательно setupUI в конструкторе? 13.1.2010, 19:18
aljeshishe Всем спасибо. Отложенный метод без труда вызываетс... 14.1.2010, 18:31![]() ![]() ![]() |
|
Текстовая версия | Сейчас: 7.11.2025, 9:03 |