Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Qt] Вызов диалога о сохранении 
:(
    Опции темы
Serbis
Дата 14.3.2008, 23:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 9.12.2007

Репутация: нет
Всего: нет



Помогите найти ляп. Есть функция выводящая предупреждение о том что документ не сохранен, основывающаяся на переменной textChanged, если она равна нулю то вернуть true что должно привести к игнорированию вывода сообщения, если же там число не равное нулю должно быть выдан диалог. Функция вызывается в переопределенном обработчике события QCloseEvent. Ожидаемой функциональности не видно, диалог выводится с полной функциональностью даже при textChanged = = 0.
Код

bool MainWindow::okToContinue()
{
    int r = QMessageBox::warning(this, tr("NFL"),
                    tr("Документ не был сохранен.\n"
                       "Сохранить документ?"),
                    QMessageBox::Yes | QMessageBox::Default,
                    QMessageBox::No,
                    QMessageBox::Cancel | QMessageBox::Escape);

    if (textChanged == 0) {
        return true;
    } else {
        if (r == QMessageBox::Yes) {
            return save();
        } else {
            if (r == QMessageBox::Cancel) {
                   return false;
            }
        }
    }
}

Код

oid MainWindow::closeEvent(QCloseEvent *event)
{
    if (okToContinue()) {
        event->accept();
    } else {
        event->ignore();
    }


Это сообщение отредактировал(а) Serbis - 14.3.2008, 23:36
PM MAIL   Вверх
SABROG
Дата 14.3.2008, 23:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 81
Всего: 91



 smile  молодца, по сути выложил код с проверкой if. А главную часть, где textChanged меняется видимо нам самим домысливать надо... Все-равно что запустить программу и не получив желаемого прийти на форум и спросить "я ее запустил, а она не работает, запускал так: program.exe"


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
creatorcode
Дата 14.3.2008, 23:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 82
Регистрация: 12.6.2006
Где: Ленинград

Репутация: нет
Всего: 4



Может так?
Код

bool MainWindow::okToContinue()
{
    if (textChanged == 0) {
        return true;
    } else {
        int r = QMessageBox::warning(this, tr("NFL"),
                    tr("Документ не был сохранен.\n"
                       "Сохранить документ?"),
                    QMessageBox::Yes | QMessageBox::Default,
                    QMessageBox::No,
                    QMessageBox::Cancel | QMessageBox::Escape);
        if (r == QMessageBox::Yes) {
            return save();
        } else {
            if (r == QMessageBox::Cancel) {
                   return false;
            }
        }
    }
}

PM MAIL   Вверх
nawok78
  Дата 19.3.2008, 08:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 13.3.2008

Репутация: нет
Всего: нет



тогда уж так (ты забыл про "Нет"):
Код

bool MainWindow::okToContinue()
{
    if (!textChanged ) 
        return true;
    switch (QMessageBox::warning(this, tr("NFL"),
                    tr("Документ не был сохранен.\n"
                       "Сохранить документ?"),
                    QMessageBox::Yes | QMessageBox::Default,
                    QMessageBox::No,
                    QMessageBox::Cancel | QMessageBox::Escape))
   {
          case QMessageBox::Yes: return save();
          case QMessageBox::No: return true;
          default : return false; //На тот случай если он просто закрыл диалог (нажал Х)
    }
}


Это сообщение отредактировал(а) nawok78 - 19.3.2008, 08:15
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.0896 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.