![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
IvanYuS |
![]()
Сообщение
#1
|
Новичок Группа: Новичок Сообщений: 9 Регистрация: 27.7.2009 Пользователь №: 948 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
программа состоит из двух форм, первая MainForm содержит кнопку Input_Data, которая вызывает другую форму InputForm, которая содержит только кнопку QuitButton, код обработки нажатия на Input_Data:
на второй форме клик на кнопке QuitButton обрабатывается так Больше на формах ничего нет. Программа компилится, первая кнопка работает нормально - появляется вторая форма, при нажатии на вторую кнопку программа вылетает с ошибкой segmentation fault, мне кажется я неправильно обращаюсь с указателем papa, подскажите учащемуся пожалуйста в чем ошибка и как правильно тут поступить. |
|
|
den'ka |
![]()
Сообщение
#2
|
Новичок Группа: Новичок Сообщений: 8 Регистрация: 8.8.2008 Пользователь №: 258 Спасибо сказали: 4 раз(а) Репутация: ![]() ![]() ![]() |
Ты бы код привел в котором InputForm создается. Ты ему родителя указываешь?
|
|
|
MoPDoBoPoT |
![]()
Сообщение
#3
|
Участник ![]() ![]() Группа: Участник Сообщений: 172 Регистрация: 7.5.2009 Из: Москва Пользователь №: 738 Спасибо сказали: 44 раз(а) Репутация: ![]() ![]() ![]() |
Все верно, segmentation fault и должен быть. Ты не задал родителя для inputform, а в коде пытаешься работать с ним (родителем), не проверив на его существование (в твоем случае метод parentWidget() возвратит 0).
При создании формы надо задать ей родителя:
Если конструктор класса InputForm не имеет параметров, значит надо чуток подправить его. |
|
|
IvanYuS |
![]()
Сообщение
#4
|
Новичок Группа: Новичок Сообщений: 9 Регистрация: 27.7.2009 Пользователь №: 948 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
ui_InputFomr.h - получаю в Qt дизайнере, имя формы выставляю InputForm, вставляю кнопку называю ее QuitButton Цитата(MoPDoBoPoT @ 2.8.2009, 17:03) Link [code]InputForm *inputform = new InputForm(this);[\code] При добавлении (this) - программа компилится, но при нажатии на кнопку первой формы зависает - кнопка не отживается, окошко не появляется. |
|
|
MoPDoBoPoT |
![]()
Сообщение
#5
|
Участник ![]() ![]() Группа: Участник Сообщений: 172 Регистрация: 7.5.2009 Из: Москва Пользователь №: 738 Спасибо сказали: 44 раз(а) Репутация: ![]() ![]() ![]() |
Цитата(IvanYuS @ 2.8.2009, 17:06) Link
Так. А реализация имеет примерно такой вид?
Если да, то надо только родителя(владельца) формы указать при создании:
|
|
|
IvanYuS |
![]()
Сообщение
#6
|
Новичок Группа: Новичок Сообщений: 9 Регистрация: 27.7.2009 Пользователь №: 948 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Да, реализация выглядет подобно, но только при добавлении (this) программа компилится, но не работает должным образом(см выше). Цитата(IvanYuS @ 2.8.2009, 17:24) Link
Да, реализация выглядет подобно, но только при добавлении (this) программа компилится, но не работает должным образом(см выше). Раскрывающийся текст
Если в обработчик событий кнопки QuitButton заменить на
то все работает замечательно, не вылетает.... все-таки дело в указателе -( |
|
|
MoPDoBoPoT |
![]()
Сообщение
#7
|
Участник ![]() ![]() Группа: Участник Сообщений: 172 Регистрация: 7.5.2009 Из: Москва Пользователь №: 738 Спасибо сказали: 44 раз(а) Репутация: ![]() ![]() ![]() |
Теперь проблема не в указателе, а в этом, скорей всего:
Метод QMetaObject::className() возвращает "const char*", а не "QString". Попробуй так:
|
|
|
IvanYuS |
![]()
Сообщение
#8
|
Новичок Группа: Новичок Сообщений: 9 Регистрация: 27.7.2009 Пользователь №: 948 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
нет тут правда в указателе дело
Прописывает на кнопке papa=0, понять не могу... как так, я же форму создаю при щелчке на кнопку, у нее же должен быть родитель... И при замене
на
Вторая форма при работе программы не открывается... вот это я совсен монять не могу -( Интересен еще такой вопрос, при создании формы в обработчеке клика на кнопке, кто будет родителем формы, кнопка или форма на которой находится кнопка? |
|
|
MoPDoBoPoT |
![]()
Сообщение
#9
|
Участник ![]() ![]() Группа: Участник Сообщений: 172 Регистрация: 7.5.2009 Из: Москва Пользователь №: 738 Спасибо сказали: 44 раз(а) Репутация: ![]() ![]() ![]() |
Цитата(IvanYuS @ 2.8.2009, 18:48) Link Интересен еще такой вопрос, при создании формы в обработчеке клика на кнопке, кто будет родителем формы, кнопка или форма на которой находится кнопка? Родителем бутет тот, чей указатель будет передан в конструктор формы. У вас пробелы в базовых понятиях. Рекомендую для начала почитать книгу Макса Шлее "Qt4. Профессиональное программирование на C++ ". |
|
|
IvanYuS |
![]()
Сообщение
#10
|
Новичок Группа: Новичок Сообщений: 9 Регистрация: 27.7.2009 Пользователь №: 948 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Цитата(MoPDoBoPoT @ 2.8.2009, 19:02) Link Цитата(IvanYuS @ 2.8.2009, 18:48) Link Интересен еще такой вопрос, при создании формы в обработчеке клика на кнопке, кто будет родителем формы, кнопка или форма на которой находится кнопка? Родителем бутет тот, чей указатель будет передан в конструктор формы. У вас пробелы в базовых понятиях. Рекомендую для начала почитать книгу Макса Шлее "Qt4. Профессиональное программирование на C++ ". Ну я то в общем не программист, просто надо было кое-что запрогать, пока разбирался, втянулся -) Спасибо за ссылку на книгу -) |
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 7.8.2025, 17:29 |