создание собственных диалоговых окон |
Здравствуйте, гость ( Вход | Регистрация )
создание собственных диалоговых окон |
breeve |
30.12.2009, 13:10
Сообщение
#1
|
Участник Группа: Участник Сообщений: 188 Регистрация: 26.12.2009 Пользователь №: 1336 Спасибо сказали: 9 раз(а) Репутация: 1 |
У меня тут не большая проблема, с которой в одиночку не могу разобраться. Создал класс который наследуется от QWidget и сделал на нем кнопку. нажимаешь на нее должно появиться диалоговое окно. Создал второй класс наследуемый от QDialog.
И как я понимаю второй окно(диалоговой) должно быть дочерним от виджета.. И вот как раз с этим у меня проблема. Слот для кнопки запуска второго окна void Pass::slotSettingsClicked() { InputDialog *input = new InputDialog(this); delete input; } inputdialog.h #ifndef INPUTDIALOG_H #define INPUTDIALOG_H #include <QtGui> class InputDialog : public QDialog { Q_OBJECT public: InputDialog(QWidget *pwgt); ~InputDialog() {}; }; #endif // INPUTDIALOG_H inputdialog.cpp #include "inputDialog.h" InputDialog::InputDialog(QWidget * pwgt) : QDialog(pwgt, Qt::WindowTitleHint | Qt::WindowSystemMenuHint) { } Мне компилятор выводит ошибку: inputDialog.cpp:3: undefined reference to `vtable for InputDialog' |
|
|
berserk |
30.12.2009, 13:20
Сообщение
#2
|
Студент Группа: Участник Сообщений: 44 Регистрация: 9.2.2009 Пользователь №: 540 Спасибо сказали: 0 раз(а) Репутация: 0 |
void Pass::slotSettingsClicked()
{ InputDialog *input = new InputDialog(this); delete input; } разве так можно? Сообщение отредактировал berserk - 30.12.2009, 13:22 |
|
|
breeve |
30.12.2009, 13:21
Сообщение
#3
|
Участник Группа: Участник Сообщений: 188 Регистрация: 26.12.2009 Пользователь №: 1336 Спасибо сказали: 9 раз(а) Репутация: 1 |
|
|
|
berserk |
30.12.2009, 13:25
Сообщение
#4
|
Студент Группа: Участник Сообщений: 44 Регистрация: 9.2.2009 Пользователь №: 540 Спасибо сказали: 0 раз(а) Репутация: 0 |
насколько я понимаю, new выделяет память для переменной, а delete её освобождает.
|
|
|
breeve |
30.12.2009, 13:33
Сообщение
#5
|
Участник Группа: Участник Сообщений: 188 Регистрация: 26.12.2009 Пользователь №: 1336 Спасибо сказали: 9 раз(а) Репутация: 1 |
насколько я понимаю, new выделяет память для переменной, а delete её освобождает. Да правильно ты все понимаешь.new выделяет память. создается объект. управление передается второму окну. Запускается конструктор. Появляется окно. Пользователь закрывает окно. Управление передается обратно. И delete освобождает память. Проблема не в этом. У меня выводится ошибка из-за не правильной связи этих двух окон. Сообщение отредактировал breeve - 30.12.2009, 13:59 |
|
|
igor_bogomolov |
30.12.2009, 14:12
Сообщение
#6
|
Профессионал Группа: Сомодератор Сообщений: 1215 Регистрация: 22.3.2009 Из: Саратов Пользователь №: 630 Спасибо сказали: 235 раз(а) Репутация: 29 |
Попробуй сделай make clean, затем опять qmake, make.
|
|
|
breeve |
30.12.2009, 15:44
Сообщение
#7
|
Участник Группа: Участник Сообщений: 188 Регистрация: 26.12.2009 Пользователь №: 1336 Спасибо сказали: 9 раз(а) Репутация: 1 |
|
|
|
Litkevich Yuriy |
30.12.2009, 16:16
Сообщение
#8
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
Появляется окно а где в коде видно, что оно появляется, оно тут же убивается (delete) и жизнь остального кода течёт своим чередом.второй окно(диалоговой) должно быть дочерним от виджета это нужно только для центровки дочернего окна относительно родителя
|
|
|
breeve |
30.12.2009, 16:18
Сообщение
#9
|
Участник Группа: Участник Сообщений: 188 Регистрация: 26.12.2009 Пользователь №: 1336 Спасибо сказали: 9 раз(а) Репутация: 1 |
|
|
|
Litkevich Yuriy |
30.12.2009, 16:18
Сообщение
#10
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
|
|
|
Текстовая версия | Сейчас: 3.1.2025, 4:35 |