Поиск:

Ответ в темуСоздание новой темы Создание опроса
> restart app 
:(
    Опции темы
daemonaz
Дата 2.11.2012, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Вот такой вопрос, как перезапустить приложение по команде exit(int)?
Иначе говоря, по умолчанию QtCreator генерирует при создании приложении MainWindow
такой код в main.cpp

Код


int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

       MainWindow w;
       w.show();
       result = app.exec();

      return result;


При вызове quit я так понимаю вызывается exit(0), таким образом app.exec выдает 0, однако мне бы хотелось зациклить эти строчки до сих пор пока не появится result = 1, я в mainwindow говорю об этом с помошью exit(1), однако при выходе ничего не происходит.
PM MAIL   Вверх
loneybibi
Дата 3.11.2012, 00:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель
**


Профиль
Группа: Участник
Сообщений: 257
Регистрация: 28.5.2010
Где: Донецк (Украина)

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



Как я понял надо что бы программа сама себя перезапускала.
Не знаю зачем такое надо,  я пробовал у меня получилось только вот что то вроде этого:
Код

#include <QApplication>
#include "mainwindow.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
    
    a.exec();
    main(argc,argv);
    return 0;
}

Этот код будет перезапускать программу до тех пор пока не будет вызван метод exit();

А вообще лучше перезапуск приложения сделать по другому. 
Перегрузить событие QCloseEvent у окна и на него повесить:
Код

QProcess::startDetached("app_name");

После чего программа при закрытии окна или вызове метода close() закроет текущую копию и запустит новую.


Это сообщение отредактировал(а) loneybibi - 3.11.2012, 00:34


--------------------
Red Hat Fedora 17
Qt 4.8.1 (x64), GCC 4.4.3,
G++ 4.4.3, QtCreator 2.4.1
PM MAIL ICQ   Вверх
borisbn
Дата 3.11.2012, 08:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



loneybibi, первый вариант не рабочий
ISO C++ forbids taking address of function '::main'
Он будет работать только на студии.
А второй совершенно нормальный.


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
loneybibi
Дата 3.11.2012, 15:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель
**


Профиль
Группа: Участник
Сообщений: 257
Регистрация: 28.5.2010
Где: Донецк (Украина)

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



Цитата(borisbn @ 3.11.2012,  07:49)
loneybibi, первый вариант не рабочий
ISO C++ forbids taking address of function '::main'
Он будет работать только на студии.
А второй совершенно нормальный.

Не знаю у меня работает под mingw и g++  на ура smile 


--------------------
Red Hat Fedora 17
Qt 4.8.1 (x64), GCC 4.4.3,
G++ 4.4.3, QtCreator 2.4.1
PM MAIL ICQ   Вверх
borisbn
Дата 3.11.2012, 17:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(loneybibi @  3.11.2012,  15:24 Найти цитируемый пост)
 у меня работает под mingw и g++  на ура

не должно. в стандарте сказано, что не должно.
http://liveworkspace.org/code/246000e0c658...9b2b96358116c65


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
loneybibi
Дата 3.11.2012, 17:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель
**


Профиль
Группа: Участник
Сообщений: 257
Регистрация: 28.5.2010
Где: Донецк (Украина)

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



Цитата(borisbn @ 3.11.2012,  16:07)
Цитата(loneybibi @  3.11.2012,  15:24 Найти цитируемый пост)
 у меня работает под mingw и g++  на ура

не должно. в стандарте сказано, что не должно.
http://liveworkspace.org/code/246000e0c658...9b2b96358116c65

Я понимаю что это вообще "велосепед" и работать может и не должен smile Но факт что у меня на Qt 4.8.1 и под windows х32 (mingw) и под Ubuntu x64 (g++\gcc-4.4.3) работает!
Еще я же указал что лучше использовать второй вариант ! smile 


--------------------
Red Hat Fedora 17
Qt 4.8.1 (x64), GCC 4.4.3,
G++ 4.4.3, QtCreator 2.4.1
PM MAIL ICQ   Вверх
daemonaz
Дата 14.11.2012, 15:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Повесил startDetached на closeEvent, не сработало почему-то, что не так делаю?

Код


void MainWindow::closeEvent(QCloseEvent *)
{
 
    QProcess::startDetached(qApp->applicationName());
}


PM MAIL   Вверх
borisbn
Дата 14.11.2012, 16:49 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(daemonaz @  14.11.2012,  15:49 Найти цитируемый пост)
что не так делаю?

applicationName - обычная строка, которая будет пустая, если ты её явно не установил (setApplicationName)
тебе нужен applicationFilePath


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
Snake174
Дата 15.11.2012, 13:56 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



В MainWindow.h объяви:
Код

static int const EXIT_CODE_REBOOT;

В MainWindow.cpp:
Код

int const MainWindow::EXIT_CODE_REBOOT = -123456789;

При закрытии приложения:
Код

qApp->exit( MainWindow::EXIT_CODE_REBOOT );

В main.cpp:
Код

int main( int argc, char *argv[] )
{
  int currentExitCode = 0;
 
  do
  {
    QApplication a( argc, argv );
    MainWindow w;
    w.show();
    currentExitCode = a.exec();
  }
  while (currentExitCode == MainWindow::EXIT_CODE_REBOOT);
 
  return currentExitCode;
}

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


Бывалый
*


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

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



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

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

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


 




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


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

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