Форум программистов, компьютерный форум, киберфорум
C++ Qt
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.87/15: Рейтинг темы: голосов - 15, средняя оценка - 4.87
 Аватар для dark.k
80 / 69 / 9
Регистрация: 11.12.2009
Сообщений: 393

QDialog не закрывается в конструкторе

23.03.2016, 05:27. Показов 3565. Ответов 29
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ребят, не могу понять почему не срабатывает метод close(); || this->close(); когда я в конструкторе срр файла прошу закрыть это окно?

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
DialogPersonalAC::DialogPersonalAC(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::DialogPersonalAC)
{
    ui->setupUi(this);
    this->setWindowTitle("Добавление нового сотрудника");
    QObject::connect(ui->but_Cancel, SIGNAL(clicked(bool)), this, SLOT(close()));
    QObject::connect(ui->but_Ok, SIGNAL(clicked(bool)), SLOT(slotOk()));
    QObject::connect(ui->edit_address, SIGNAL(textEdited(QString)), SLOT(slotUpdateCount()));
    QObject::connect(ui->edit_FIO, SIGNAL(textEdited(QString)), SLOT(slotUpdateCount()));
 
    ui->edit_id->setReadOnly(1);
 
    if(!updateComboBoxFilials())
    {
        QMessageBox::warning(this,"Error", "Добавьте хоть один филиал!");
        this->close();
    }
}
Сообщение выскакивает как и должно, а окно всё равно открывается....
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.03.2016, 05:27
Ответы с готовыми решениями:

Разница между QDialog::exec() и QDialog::Open()
Здравствуйте, уважаемые форумчане! Есть статический метод, который установлен как callback-функция хука для событий клавиатуры. ...

QDialog расположение
Привет. Есть класс(плейлист), наследую от QDialog. При открытии плейлиста, он появляется в середине и перекрывает главное окно. Два...

QDialog close
Если я буду использовать hide() То диалог останется в памяти? И почему close() закрывает и последующее, создающееся окно Что то...

29
 Аватар для icpu
487 / 365 / 93
Регистрация: 10.03.2011
Сообщений: 1,513
Записей в блоге: 5
24.03.2016, 06:52
Студворк — интернет-сервис помощи студентам
QMessageBox::warning(parent,"Error", "Добавьте хоть один филиал!");
0
 Аватар для dark.k
80 / 69 / 9
Регистрация: 11.12.2009
Сообщений: 393
24.03.2016, 07:32  [ТС]
0
137 / 107 / 23
Регистрация: 06.10.2008
Сообщений: 451
24.03.2016, 08:07
А смысл закрывать диалог в конструкторе?
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
void Widget::slotPersonalAC()
{
    DialogPersonalAC *dialPersona = new DialogPersonalAC(this);
    if (dialPersona->updateComboBoxFilials())
    {
        dialPersona->exec();
    }
    else
   {
        QMessageBox::warning(0,"Error", "Добавьте хоть один филиал!");
    }
    dialPersona->deleteLater();
}
0
 Аватар для dark.k
80 / 69 / 9
Регистрация: 11.12.2009
Сообщений: 393
24.03.2016, 08:33  [ТС]
Там, короче моя программа работает с SQL, данный диалог используется для добавления новой записи в БД. В диалоге есть ComboBox который содержит записи существующих внешних ключей другой таблицы. Как бы, если ComboBox будет пуст, я всё равно не смогу добавить новую запись и смысла открывать это диалоговое окно само собой отпадает =)
0
60 / 56 / 21
Регистрация: 31.03.2014
Сообщений: 234
24.03.2016, 10:13
Цитата Сообщение от dark.k Посмотреть сообщение
Как бы, если ComboBox будет пуст, я всё равно не смогу добавить новую запись и смысла открывать это диалоговое окно само собой отпадает
Так это можно проверить из главного окна, и вообще диалоговое не создавать
0
 Аватар для dark.k
80 / 69 / 9
Регистрация: 11.12.2009
Сообщений: 393
24.03.2016, 12:45  [ТС]
Ну понятно что можно, а реализовав через паблик функцию проверки внутри основного виджета, я убил трёх зайцев:
1) не особо код переделывал
2) меньше строк кода потребовалось, т.к. повторно один и тот же код проверки не прогоняю в основном и вдочернем окнах
3) узнал, что эта падла не работает конструкторе, и узнал варианта 3 решения, помимо 4 через - проверки условий в основном окне

Добавлено через 1 минуту
=) ещё вопросы рациональности моих выводов есть?
0
60 / 56 / 21
Регистрация: 31.03.2014
Сообщений: 234
24.03.2016, 12:49
Цитата Сообщение от dark.k Посмотреть сообщение
ещё вопросы рациональности моих выводов есть?
4) Кривой интерфейс. Для того чтобы узнать, что я НЕ МОГУ добавить новую запись мне нужно открыть диалоговое окно???? На мой взгляд любая программа должна стремится к интуитивно понятному интерфейсу, и как можно меньшему тыканью.
0
 Аватар для dark.k
80 / 69 / 9
Регистрация: 11.12.2009
Сообщений: 393
24.03.2016, 12:54  [ТС]
А я по твоему что делал???? =) Я так и реализовал, если нет данных, то смысл открывать диалоговое окно нет, пользователю высвечивается сообщение на что надо обратить внимание.
0
60 / 56 / 21
Регистрация: 31.03.2014
Сообщений: 234
24.03.2016, 13:03
Цитата Сообщение от dark.k Посмотреть сообщение
А я по твоему что делал????
Проглядел. Ну, молодец.
0
 Аватар для dark.k
80 / 69 / 9
Регистрация: 11.12.2009
Сообщений: 393
24.03.2016, 13:39  [ТС]
)))) бывает
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.03.2016, 13:39

Закрытие QDialog
Сразу прошу прощения за глупый вопрос. Есть виджет MainWindows, в нем создаю QDialog в нем всего пара кнопок, как при нажатии кнопки...

Взаимодействие нескольких QDialog
Всем доброго времени суток. Проблема такая: есть два QDialog. Как сделать так, чобы при нажатии кнопки на первом, открывался второй, а...

QDialog, QApplication и exec()
Пишу программу, есть окно авторизации. Собственно в main создаю диалог авторизации (LoginDialog) и необходимо ждать ввода данных от юзера и...

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

Странное поведение QDialog
Есть приложение на Qt под Centos7 - платёжный терминал. Для MainWindow (наследник от QMainWindow) запускаю showFullScreen() - его задача...


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

Или воспользуйтесь поиском по форуму:
30
Ответ Создать тему
Новые блоги и статьи
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru