Здравствуйте, гость ( Вход | Регистрация )
IvanYuS | Дата 2.8.2009, 18:34 |
Хорошая книга, спасибо за совет, а то C++ GUI Programming with Qt4 (1st edition) - конечно много знаний, но я в ней запутался. Да, формы я наследовал от QWidgetов... тут видать собака зарыта -) | |
MoPDoBoPoT | Дата 2.8.2009, 18:25 |
Я тут, однако, тоже тупанул... Считается, что у тебя это два окошка? Если да, то у inputform действительно не должно быть парента. Нет парента -> метод QWidget::parentWidget() вернет 0. Если хочешь окошко с парентом, то используй класс QDialog (наследуй класс InputForm от QDialog ). | |
IvanYuS | Дата 2.8.2009, 18:10 |
Интересен еще такой вопрос, при создании формы в обработчеке клика на кнопке, кто будет родителем формы, кнопка или форма на которой находится кнопка? Родителем бутет тот, чей указатель будет передан в конструктор формы. У вас пробелы в базовых понятиях. Рекомендую для начала почитать книгу Макса Шлее "Qt4. Профессиональное программирование на C++ ". Ну я то в общем не программист, просто надо было кое-что запрогать, пока разбирался, втянулся -) Спасибо за ссылку на книгу -) |
|
MoPDoBoPoT | Дата 2.8.2009, 18:02 |
Интересен еще такой вопрос, при создании формы в обработчеке клика на кнопке, кто будет родителем формы, кнопка или форма на которой находится кнопка? Родителем бутет тот, чей указатель будет передан в конструктор формы. У вас пробелы в базовых понятиях. Рекомендую для начала почитать книгу Макса Шлее "Qt4. Профессиональное программирование на C++ ". |
|
IvanYuS | Дата 2.8.2009, 17:48 |
нет тут правда в указателе дело
Прописывает на кнопке papa=0, понять не могу... как так, я же форму создаю при щелчке на кнопку, у нее же должен быть родитель... И при замене
на
Вторая форма при работе программы не открывается... вот это я совсен монять не могу -( Интересен еще такой вопрос, при создании формы в обработчеке клика на кнопке, кто будет родителем формы, кнопка или форма на которой находится кнопка? |
|
MoPDoBoPoT | Дата 2.8.2009, 17:10 |
Теперь проблема не в указателе, а в этом, скорей всего:
Метод QMetaObject::className() возвращает "const char*", а не "QString". Попробуй так:
|
|
IvanYuS | Дата 2.8.2009, 16:36 |
Да, реализация выглядет подобно, но только при добавлении (this) программа компилится, но не работает должным образом(см выше).
Да, реализация выглядет подобно, но только при добавлении (this) программа компилится, но не работает должным образом(см выше). Раскрывающийся текст
Если в обработчик событий кнопки QuitButton заменить на
то все работает замечательно, не вылетает.... все-таки дело в указателе -( |
|
MoPDoBoPoT | Дата 2.8.2009, 16:18 |
Так. А реализация имеет примерно такой вид?
Если да, то надо только родителя(владельца) формы указать при создании:
|
|
IvanYuS | Дата 2.8.2009, 16:14 |
ui_InputFomr.h - получаю в Qt дизайнере, имя формы выставляю InputForm, вставляю кнопку называю ее QuitButton [code]InputForm *inputform = new InputForm(this);[\code] При добавлении (this) - программа компилится, но при нажатии на кнопку первой формы зависает - кнопка не отживается, окошко не появляется. |
|
MoPDoBoPoT | Дата 2.8.2009, 16:03 |
Все верно, segmentation fault и должен быть. Ты не задал родителя для inputform, а в коде пытаешься работать с ним (родителем), не проверив на его существование (в твоем случае метод parentWidget() возвратит 0). При создании формы надо задать ей родителя:
Если конструктор класса InputForm не имеет параметров, значит надо чуток подправить его. |
|
Просмотр темы полностью (откроется в новом окне) | |
Текстовая версия | Сейчас: 29.3.2024, 9:16 |