LINUX.ORG.RU

[Qt] опять про наследования....

 


0

0

Задача такова: создать базоваый класс с базовым гуем (заюзать внутри гуй из дизайнера) а в дочерних классах его дополнять\изменять.

Если в базовом классе унаследовать QDialog исоздать объект Ui(с самим базовым гуев вестимо) , то выходит ошибка сегментации. В общем, дайте рабочий пример. И ещё, где в мануале почтитаь про наследование? а то уже запутался со всякими QWidget *parent'ами.

Делал по совету staseg'а: [Qt] проблеммы при наследовании классов Qt и своих классов. (комментарий)

Как я понял, setupUi нужно использовать в дочернем. А может быть стоит унаследовать сам Ui в дочерних. В общем, непонятно.



Последнее исправление: ShTH (всего исправлений: 1)

Гугли давай. Да, я находил решения. И Оверленда своего дочитай наконец.

wyldrodney
()

QWidget *parent - это не наследование таки. Про наследование в Страуструпе можно почитать.

Поставь QtCreator - там море примеров, и их удобно смотреть прямо со стартовой морды.

ratatosk
()
Ответ на: комментарий от ratatosk

>Поставь QtCreator - там море примеров, и их удобно смотреть прямо со стартовой морды.


Так уже. Там более простые примеры. Сейчас буду методом тыка пробовать.

ShTH
() автор топика
Ответ на: комментарий от ShTH

>Сейчас буду методом тыка пробовать

нда :)) Никогда так не делай. Сиди изучай документацию. Тяжело, а что ж сделать.

alex_custov ★★★★★
()
Ответ на: комментарий от alex_custov

>Сиди изучай документацию. Тяжело, а что ж сделать.


Наверное все же стоит по Qt книгу почитать.

ShTH
() автор топика
Ответ на: комментарий от VladimirMalyk

>мать-перемать! неужели в Qt нет ничего вроде glade?


Есть QtDesigner. Просто в моём случае костыльно каждому плагину создавать свой гуй. Лучше наследовать какой-то один, а потом добавить на него пару комбоксов со спецификой.

ShTH
() автор топика
Ответ на: комментарий от ShTH

Может я заблуждаюсь, но на основании твоего первого посла мне кажется, что у тебя в голове основательная каша и ты путаешь классы и объекты. Наследование классов происходит в compile-time, а вызов конструктора - в run-time, и оперировать классами не может. Сообветственно говорить о наследовании в BlaBla(QWidget *parent) бессмысленно. Это просто задает ссылку на родительские объект (ни в коем случае не класс) и к наследованию отношения не имеет. Будет сложно разбираться в примерах, не разобравшись с основами С++.

ratatosk
()
Ответ на: комментарий от ratatosk

>Будет сложно разбираться в примерах, не разобравшись с основами С++.


По части плюсов мне всё ясно. Я похоже запутался с тем, как работает moc. Значит буду читать доки по нему.

ShTH
() автор топика

> Если в базовом классе унаследовать QDialog исоздать объект Ui(с самим базовым гуев вестимо) , то выходит ошибка сегментации

не знаю, почему у тебя сегфолт вышел, ну, там можно много наворотить. Но тебе надо действительно наследовать дочерние гуи-классы от созданного в дезигнере. И в родительском классе логики объект гуя не создавай тогда. Если нужно - используй виртуальные акцессоры.

name_no ★★
()
Ответ на: комментарий от name_no

>не знаю, почему у тебя сегфолт вышел, ну, там можно много наворотить. Но тебе надо действительно наследовать дочерние гуи-классы от созданного в дезигнере. И в родительском классе логики объект гуя не создавай тогда. Если нужно - используй виртуальные акцессоры.


Понятно. ну, тогда всё намного проще. Спасибо.

ShTH
() автор топика
Ответ на: комментарий от ShTH

По части плюсов мне всё ясно

оно и видно :)

jtootf ★★★★★
()

а зачем вообще дизайнер?

В последние года полтора отказался от использования дизайнера вообще и в принципе. Нафик он нужен, кроме как прикинуть расположение элементов? Проще руками всё набить.

Тебе нужно наследование? Так и делай содержимой через QWidget, который будешь модифицировать и кидать на разные QDialog's и иже сним.

А дизайнер, после создания Qt 4.x потерял свою актуальность. Разве что для мелочей каких-то...

HEXen
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.