crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

Rocky
  опции профиля:
сообщение 24.12.2008, 22:16
Сообщение #1


Старейший участник
****

Группа: Участник
Сообщений: 530
Регистрация: 22.12.2008
Из: Санкт-Петербург
Пользователь №: 463

Спасибо сказали: 22 раз(а)




Репутация:   7  


Как сделать, чтобы если пользователь нажимает "ОК", то если небыло введено какое-то значение, то диалоговое окно не закрывалось?

Спасибо!

Потому что как я понимаю обработчик ОК вызывается уже после закрытия самого диалогового окна.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Rocky
  опции профиля:
сообщение 24.12.2008, 23:27
Сообщение #2


Старейший участник
****

Группа: Участник
Сообщений: 530
Регистрация: 22.12.2008
Из: Санкт-Петербург
Пользователь №: 463

Спасибо сказали: 22 раз(а)




Репутация:   7  


Ок, вопрос идиотский я полностью согласен ))) Просто на MFC это делается элементарно. На QT такой фокус не проходит.


//.h
namespace ValtecWarmFloor
{
    class CRoomDialog : public QDialog, public Ui_CRoomDialog
    {
        Q_OBJECT
        ...
private slots:
        ...
        void OnBnClickedBtnOk();
    }
}

//.cpp
CRoomDialog::CRoomDialog(CValtecWarmFloor *pValtecWarmFloor, QWidget* pParent) : QDialog(pParent)
{
    ...
    QDialog::connect(okButton, SIGNAL(clicked()), this, SLOT(OnBnClickedBtnOk()));
    ...
}

void CRoomDialog::OnBnClickedBtnOk()
{
    if (m_pRoomName->text().isEmpty())
    {
        QMessageBox::question(m_pParentWidget, m_pMessage->GetMessage(eHeader),
            m_pMessage->GetMessage(eErrorRoomNameIsEmpty));
        return;
    }
    //другие действия
    ...
}


вот весь код. Если брейкпоинт ставить внутри хм.... слота (обработчика) OnBnClickedBtnOk() то падаю я в него уже после того как диалоговое окно закрылось. Т.е. в данном случае, если содержимое m_pRoomName (LineEdit) пусто, то по return-у я выхожу естественно из слота, но само диалоговое окно уже закрыто. В MFC такой "фокус" прокатывал без проблем... Здесь нет. Поэтому я и спрашиваю, как правильно поступать. Кажется есть такой closeEvent(...). Может его перехватывать, и возвращать код (accepted и пр.) в зависимости от нужд? Или как?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 22.6.2025, 2:24