Russian Qt Forum

Qt => Общие вопросы => Тема начата: qtист от Июнь 01, 2009, 14:42



Название: Консольное приложение без консоли
Отправлено: qtист от Июнь 01, 2009, 14:42
Надо чтоб в консольном приложении не выскакивало
это гадское чёрное окно.
Это реально?


Название: Re: Консольное приложение без консоли
Отправлено: spectre71 от Июнь 01, 2009, 14:51
А подробнее можно?


Название: Re: Консольное приложение без консоли
Отправлено: qtист от Июнь 01, 2009, 14:57
Создан проект Qt Console Application - мне интерфейс не нужен.
 При запуске ессно появляется консоль, то бишь черное окно.
Надо его подавить - чтоб не появлялось совсем. ???


Название: Re: Консольное приложение без консоли
Отправлено: spectre71 от Июнь 01, 2009, 15:05
Не делал Qt Console Application - по нему ничего не скажу

Но, сделай обычное приложение, и:

Код
C++ (Qt)
int main(int argc, char *argv[])
{
 QApplication a(argc, argv);
 
 // Do something
 
 return 0;
//  return a.exec();
}
 
Должно все получиться


Название: Re: Консольное приложение без консоли
Отправлено: qtист от Июнь 01, 2009, 15:13
Пытался:
Код
C++ (Qt)
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
 
   if(argc<=1) return 0;
   myClient * Client = new myClient(argv[1],argv[2],argv[3],argv[4],argv[5]);
   Client->RecFile();
 
   return 0;
 // return a.exec();
}

Класс myClient содержит дохрена всего,в частности всякие там сигналы,слоты
и прочую хрень.
Так они не выполняются - приложение выходит сразу на return 0; :'(



Название: Re: Консольное приложение без консоли
Отправлено: spectre71 от Июнь 01, 2009, 15:28
Класс myClient содержит дохрена всего,в частности всякие там сигналы,слоты
и прочую хрень.
Так они не выполняются - приложение выходит сразу на return 0; :'(
так ты не выходи из
    Client->RecFile();
пока не закончишь обработку.


Название: Re: Консольное приложение без консоли
Отправлено: pastor от Июнь 01, 2009, 15:39
2 qtист: а зачем ты return a.exec(); закаментил?

Также взгляни на:

Цитировать
QApplication::QApplication ( int & argc, char ** argv, bool GUIenabled )

Constructs an application object with argc command line arguments in argv. If GUIenabled is true, a GUI application is constructed, otherwise a non-GUI (console) application is created.

но думаю  QCoreApplication будет придостаточно


Название: Re: Консольное приложение без консоли
Отправлено: spectre71 от Июнь 01, 2009, 15:47
2 qtист: а зачем ты return a.exec(); закаментил?

Закаментил его не он, а я. У него нет окон(надеюсь, иначе зачем бы понадобилось Console Application) a.exec(); сразу выйдет;

QApplication::QApplication ( int & argc, char ** argv, bool GUIenabled )
Так проблема как раз в Console Application


Название: Re: Консольное приложение без консоли
Отправлено: pastor от Июнь 01, 2009, 15:57
Закаментил его не он, а я. У него нет окон(надеюсь, иначе зачем бы понадобилось Console Application) a.exec(); сразу выйдет;

Неверно. Окон у него нет, но есть

Цитировать
Класс myClient содержит дохрена всего,в частности всякие там сигналы,слоты и прочую хрень.

И к тому же, с чего ты взял что exec в консольном приложении сразу завершит работу?

Так проблема как раз в Console Application

А что я нетак написал? У человека проблема в том что выскакивает "гадское чёрное окно". Если задать 3 параметромом "false", то будет тоже консольное приложение.


Название: Re: Консольное приложение без консоли
Отправлено: qtист от Июнь 01, 2009, 16:03
Заменил
QCoreApplication a(argc, argv) на     QApplication a(argc, argv,false)

Не линкуется- грязно ругается,шо найдена неразрешенные внешние ссылки.
 :'(


Название: Re: Консольное приложение без консоли
Отправлено: pastor от Июнь 01, 2009, 16:08
2 qtист: Проверь, есть ли у тебя в профайле строка

CONFIG += console

если есть, удали. Если нету, попробуй написать

CONFIG -= console


Цитировать
Не линкуется- грязно ругается,шо найдена неразрешенные внешние ссылки.


QApplication тянет за собой QtGui, но в твоем случае с головой хватит QCoreApplication


Название: Re: Консольное приложение без консоли
Отправлено: spectre71 от Июнь 01, 2009, 16:09
Правильно.
Из exec() он не выйдет пока не вызовет exit().

Прекомментируем.
Если "// Do something" просто последовательный код, то лучше "return 0;"

Код
C++ (Qt)
int main(int argc, char *argv[])
{
 QApplication a(argc, argv);
 
 // Do something
 
//  return 0;
 return a.exec();
}


Название: Re: Консольное приложение без консоли
Отправлено: qtист от Июнь 01, 2009, 16:15
2 qtист: Проверь, есть ли у тебя в профайле строка

CONFIG += console

если есть, удали. Если нету, попробуй написать

CONFIG -= console

Пишу в VS2008,коммерческая версия QT 4.5
Где это профайл здесь взять?


Название: Re: Консольное приложение без консоли
Отправлено: spectre71 от Июнь 01, 2009, 16:28
2 qtист: Проверь, есть ли у тебя в профайле строка

CONFIG += console

если есть, удали. Если нету, попробуй написать

CONFIG -= console

Пишу в VS2008,коммерческая версия QT 4.5
Где это профайл здесь взять?

У меня VS2005:

Console (/SUBSYSTEM:CONSOLE)
меняешь
на Windows (/SUBSYSTEM:WINDOWS)


Название: Re: Консольное приложение без консоли
Отправлено: qtист от Июнь 01, 2009, 16:41
spectre71  - получилось ::)(к тому же эта утилита будет работать только под Win)
благодарность моя не имеет границ  ;D ;D