44 / 44 / 12
Регистрация: 05.04.2015
Сообщений: 345
1

Уничтожение окна после закрытия

13.02.2016, 17:18. Показов 2113. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Form1 и Form2 наследники QDialog
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
int openForm(const QString &name)
{    
    void *form;
    if(name == "Форма1")
        form = new Form1;
    if(name == "Форма2")
        form = new Form2;
//и так далее
    static_cast<QDialog*>(form)->deleteLater();
    return static_cast<QDialog*>(form)->exec();
}
Не является ли это быдлокодом, вроде ничего не падает, деструктор вызывается.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.02.2016, 17:18
Ответы с готовыми решениями:

Сохранение данных после закрытия окна
]У меня есть программа в которой есть график, слайдер, кнопка и спинбоксы... суть программы такова:...

Вылетает программа после закрытия диалогового окна
Есть диалог в котором открывается qwebview header class webViewDialog: public QDialog { ...

Как поймать нажатие на кнопку закрытия окна?
Проблема в том, что нужно отловить именно нажатие, т.к. только при этом условии должна выполняться...

Сбросить форму после закрытия popup окна
Доброго времени суток всем и с наступающими праздниками, такая вот проблема возникла, необходимо...

2
1069 / 651 / 229
Регистрация: 14.01.2016
Сообщений: 2,031
Записей в блоге: 9
13.02.2016, 18:32 2
Нет, это не является быдлокодом. Это называется самострелом. Если вам надо их удалить при закрытии - вызывайте WA_DeleteOnClose. Хотя быдлокод здесь тоже присутствует в виде void*.
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
int openForm(const QString &name)
{    
    QDialog *form;
    if(name == "Форма1")
        form = new Form1;
    else if(name == "Форма2")
        form = new Form2;
//и так далее
    form->setAttribute(Qt::WA_DeleteOnClose);
    return form->exec();
}
0
Эксперт С++
8385 / 6147 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
13.02.2016, 19:07 3
kolts,
C++ (Qt)
1
 void *form;
от куда появился? Это само по себе должно вызывать подозрения.

Добавлено через 18 минут
Почему нельзя сделать по нормальному?

C++ (Qt)
1
2
3
4
5
6
7
8
enum FormType{  ft1, ft2 /*, ftN ...*/ }; /*Лучше естественно "осмыслить" имена */
 
QDialog::DialogCode execDialog(FormType  ft)
{
    QScopedPointer<QDialog> 
            dialog(ft==ft1 ? new Form1(parent) : new Form2(parent) ); /* Ну или по switch/case */
    return dialog->exec();
}
http://doc.qt.io/qt-5/qscopedpointer.html#details
0
13.02.2016, 19:07
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.02.2016, 19:07
Помогаю со студенческими работами здесь

Сохранение изменений в таблице после закрытия окна
Мучаю машину уже неделю, а до ума все не доведу... Sql код в запросе работает, но при закрытии...

Глюк скролла после закрытия модального окна
Всем привет. сразу скажу - я нуб. Есть сайт http://katet-arch.ru/, потихоньку пилится. В...

Почему процесс продолжает существовать после закрытия окна?
1. К MS Access 2000 подключил COM Add-in написанный на VBA. При соединении Add-in'а вызывается...

Обновить первичное окно после закрытия pop-up окна
Здравствуйте ! Подскажите, пожалуйста, как решить такую задачу: Из окна браузера (назовем его...

Прекращение работы после закрытия окна с результатами (уравнение)
Дали задание: решить уравнение разными 4-мя способами. Этот способ самый трудный - использование...

Принудительное обновление страницы после закрытия модального окна
Всех приветствую. Люди, подскажите пожалуйста, как реализовать следующее. Есть первоначальная...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru