Re[7]: Создать окна в консольном приложении. Как?
От: B0FEE664  
Дата: 11.11.21 12:54
Оценка:
Здравствуйте, imh0, Вы писали:

BFE>>Насколько я знаю процесс может либо не иметь консоли, либо иметь ровно одну консоль. Так что все окна вам придётся рисовать внутри одной и той же консоли.

I>Ну во первых консолей можно открыть сколько хочешь, и в винде и в линуксе....
И для каждого придётся запустить отдельный процесс.

I>Какие окна рисовать внутри консоли? На консоль пишут printf-ом скажем так... Обычно.

Вы когда-нибудь far видели? Или midnight commander:
  Вот они, окна внутри консоли:
И каждый день — без права на ошибку...
Re[8]: Создать окна в консольном приложении. Как?
От: imh0  
Дата: 11.11.21 12:56
Оценка:
Здравствуйте, B0FEE664, Вы писали:

BFE>>>Насколько я знаю процесс может либо не иметь консоли, либо иметь ровно одну консоль. Так что все окна вам придётся рисовать внутри одной и той же консоли.


I>>Ну во первых консолей можно открыть сколько хочешь, и в винде и в линуксе....

BFE>И для каждого придётся запустить отдельный процесс.

Да ладно...

I>>Какие окна рисовать внутри консоли? На консоль пишут printf-ом скажем так... Обычно.

BFE>Вы когда-нибудь far видели? Или midnight commander:

А эти? )) Ясно.
Re[7]: Создать окна в консольном приложении. Как?
От: B0FEE664  
Дата: 11.11.21 12:57
Оценка:
Здравствуйте, Skorodum, Вы писали:

BFE>>Так что все окна вам придётся рисовать внутри одной и той же консоли.

S>Это какое-то очень странное утверждение.
Ничего странного. Окна не обязаны быть графическими. Их можно рисовать псевдографикой.

BFE>>А вообще интересно: зачем вам такое извращение в двадцать первом веке? Где вы разыскали алфавитно-цифровой дисплей?

S>Работы без окон — вполне стандартное тредование, например когда вывод читается другой программой.
Приложению ничего не мешает иметь одно консольное окно и несколько графических. При этом вывод всё так же может читаться другой программой.
И каждый день — без права на ошибку...
Re[3]: Создать окна в консольном приложении. Как?
От: B0FEE664  
Дата: 11.11.21 13:20
Оценка: -1
Здравствуйте, imh0, Вы писали:

I>Смотрите, вопрос по теме форума, вопрос не простой, вопрос на самом деле актуальный...

Вопрос слишком обширный и не понятно, чего хочет imh0.
Если он хочет несколько консольных окон в одном приложении с одним(!) запущенным процессом — то это не возможно. Однако приложение может запускать самого себя с другими ключами и обеспечивать общение между своими запущенными процессами. Это возможно, но не понятно причём тут Qt.
Если imh0 хочет одно приложение и несколько диалоговых графических окон, то это в Qt делается не то, чтобы совсем просто, но просто.
Есть ещё вариант, обеспечивать окна внутри консоли (псевдографикой). Это возможно и даже имеет смысл, когда приложение запускается на системе, где нет графики, например, внутри соединения по SSH, во встроенных системах, где нет места под обеспечение клиенткой части X Windows.
Возможно imh0 хочет ещё чего-то, чего я не понимаю.

I>Чтобы продемонстрировать это, воспользуюсь темой со стека, из видимо наиболее понятной тут области винды...

I>https://stackoverflow.com/questions/16540743/windows-message-loop-instead-of-qapplicationexec-qapplicationprocesseven
I>В QT есть такие понятия как QApplication QMainWindow QWidget QWindow QDialog и пр. все они строятся на обработке событий.
Ерунда. В Qt есть ровно один цикл обработки сообщений, причём, если мне не изменяет память, он должен находится в основной нитке. Есть возможность встроить свой обработчик внутрь Qt-обработчика, но зачем?!
И как это вообще связано с вопросом imh0?

I>например мы создаем QMainWindow, затем показываем его и запускаем QApplication ... После чего мы получим управление только после того как приложение QApplication завершиться. )) То есть глядя на ответы в теме, так и хочется сказать, коллеги, что вы несете. )

Управление где? В основной нитке? Ну да. Из этого всего лишь следует, что надо запустить свои нитки до того, как будет запущен QApplication::exec(). В частности, если imh0 хочет работать именно с консолью, то нужна одна отдельная нитка на чтение команд из консоли, например. Но, пока что ещё не ясно, чего хочет imh0.

I>Например этот "перец"....

I>

I>Здравствуйте, Bill Baklushi, Вы писали:
BB>>imh0:
I>>>Народ, есть идеи?
BB>>Конечно есть. Берешь и делаешь. В чем сложность?

I>==
I>Помоему надо уже что-то такое делать, экстраординарное, чтобы форумы спасти ) А может и не надо их спасать, просто по-удалять или по-закрывать... )
Прежде чем что-то отвечать, надо понять, чего хочет imh0 и в чём его сложности.
И каждый день — без права на ошибку...
Re[9]: Создать окна в консольном приложении. Как?
От: B0FEE664  
Дата: 11.11.21 13:22
Оценка:
Здравствуйте, imh0, Вы писали:

BFE>>>>Насколько я знаю процесс может либо не иметь консоли, либо иметь ровно одну консоль. Так что все окна вам придётся рисовать внутри одной и той же консоли.

I>>>Ну во первых консолей можно открыть сколько хочешь, и в винде и в линуксе....
BFE>>И для каждого придётся запустить отдельный процесс.
I>Да ладно...
А есть способ?
И каждый день — без права на ошибку...
Re[10]: Создать окна в консольном приложении. Как?
От: imh0  
Дата: 11.11.21 13:23
Оценка:
Здравствуйте, B0FEE664, Вы писали:

I>>>>Ну во первых консолей можно открыть сколько хочешь, и в винде и в линуксе....

BFE>>>И для каждого придётся запустить отдельный процесс.

I>>Да ладно...

BFE>А есть способ?

Да конечно... ) Но это уже чистый офтопик. )
Re[7]: Создать окна в консольном приложении. Как?
От: Skorodum Россия  
Дата: 11.11.21 13:29
Оценка:
Здравствуйте, imh0, Вы писали:

I>То есть получается кривоватая вешь эта QT... Какая-то в себе скажем так.

Ты хоть пару примеров собери, прежде чем делать такие "авторитетные" заявления. Судя по тому, что ты тут пишешь, складывается ощущение, что ты вообще не понимаешь как работает любое Qt-based приложение.
Re[8]: Создать окна в консольном приложении. Как?
От: Skorodum Россия  
Дата: 11.11.21 13:37
Оценка:
Здравствуйте, B0FEE664, Вы писали:

BFE>Ничего странного. Окна не обязаны быть графическими. Их можно рисовать псевдографикой.

Можно, но речь явно не об этом.

BFE>Приложению ничего не мешает иметь одно консольное окно и несколько графических. При этом вывод всё так же может читаться другой программой.

Это к теме не относится, но интересно как псевдографика будет читаться другой программой? И главное зачем?
Re[4]: Создать окна в консольном приложении. Как?
От: Skorodum Россия  
Дата: 11.11.21 13:43
Оценка:
Здравствуйте, B0FEE664, Вы писали:

BFE>Если imh0 хочет одно приложение и несколько диалоговых графических окон, то это в Qt делается не то, чтобы совсем просто, но просто.

И что же в этом непростого?

BFE>Ерунда. В Qt есть ровно один цикл обработки сообщений, причём, если мне не изменяет память, он должен находится в основной нитке.

Не вводите людей в заблуждение. В каждом потоке свой цикл обработки сообщений. Более того, и их можно создавать локально.

I>>например мы создаем QMainWindow, затем показываем его и запускаем QApplication ... После чего мы получим управление только после того как приложение QApplication завершиться. )) То есть глядя на ответы в теме, так и хочется сказать, коллеги, что вы несете. )

BFE>Управление где? В основной нитке? Ну да. Из этого всего лишь следует, что надо запустить свои нитки до того, как будет запущен QApplication::exec().
Один написал ерунду, другой ответил ерундой...
Re[3]: Создать окна в консольном приложении. Как?
От: Skorodum Россия  
Дата: 11.11.21 13:45
Оценка:
Здравствуйте, imh0, Вы писали:

I>например мы создаем QMainWindow, затем показываем его и запускаем QApplication ... После чего мы получим управление только после того как приложение QApplication завершиться. ))

Это какой-то бред. Сделать так можно, но зачем?

I>То есть глядя на ответы в теме, так и хочется сказать, коллеги, что вы несете. )

Вот именно.
Re[8]: Создать окна в консольном приложении. Как?
От: imh0  
Дата: 11.11.21 13:57
Оценка: -3
Здравствуйте, Skorodum, Вы писали:

I>>То есть получается кривоватая вешь эта QT... Какая-то в себе скажем так.


S>Ты хоть пару примеров собери, прежде чем делать такие "авторитетные" заявления. Судя по тому, что ты тут пишешь, складывается ощущение, что ты вообще не понимаешь как работает любое Qt-based приложение.


Ты крут, мне мрям так сразу помогли твои советы... Спасибо друг. Пиши еще. )
Re[9]: Создать окна в консольном приложении. Как?
От: imh0  
Дата: 11.11.21 14:00
Оценка: -2 :)
Здравствуйте, Skorodum, Вы писали:

BFE>>Приложению ничего не мешает иметь одно консольное окно и несколько графических. При этом вывод всё так же может читаться другой программой.

S>Это к теме не относится, но интересно как псевдографика будет читаться другой программой? И главное зачем?

Фигасе, ты оказывается понял почти ничего из того что он сказал. Но ты всех учишь... Ты крут. Все спасибо. Мне достаточно. Ты помог. )
Re[9]: Создать окна в консольном приложении. Как?
От: Skorodum Россия  
Дата: 11.11.21 14:00
Оценка:
Здравствуйте, imh0, Вы писали:

I>Ты крут, мне мрям так сразу помогли твои советы... Спасибо друг. Пиши еще. )

Зря ерничаешь Я тебе по существу ответил.
Тебе надо Qt хоть немного понять, и чтобы вопрос нормально сформулировать и чтобы ответы понимать.
Re[5]: Создать окна в консольном приложении. Как?
От: B0FEE664  
Дата: 11.11.21 14:03
Оценка:
Здравствуйте, Skorodum, Вы писали:

BFE>>Если imh0 хочет одно приложение и несколько диалоговых графических окон, то это в Qt делается не то, чтобы совсем просто, но просто.

S>И что же в этом непростого?
Ввод из консоли.

BFE>>Ерунда. В Qt есть ровно один цикл обработки сообщений, причём, если мне не изменяет память, он должен находится в основной нитке.

S>Не вводите людей в заблуждение. В каждом потоке свой цикл обработки сообщений. Более того, и их можно создавать локально.
Хорошо, уточняю: речь про события отрисовки окон. Все окна должны создаваться и отрисовываться в одной нитке, если я правильно помню.

I>>>например мы создаем QMainWindow, затем показываем его и запускаем QApplication ... После чего мы получим управление только после того как приложение QApplication завершиться. )) То есть глядя на ответы в теме, так и хочется сказать, коллеги, что вы несете. )

BFE>>Управление где? В основной нитке? Ну да. Из этого всего лишь следует, что надо запустить свои нитки до того, как будет запущен QApplication::exec().
S>Один написал ерунду, другой ответил ерундой...
Покажите мне код, где два окна Qt создаются и рисуются независимо/параллельно в двух отдельных нитках.
И каждый день — без права на ошибку...
Re[10]: Создать окна в консольном приложении. Как?
От: imh0  
Дата: 11.11.21 14:05
Оценка: -1
Здравствуйте, Skorodum, Вы писали:

S>Здравствуйте, imh0, Вы писали:


I>>Ты крут, мне мрям так сразу помогли твои советы... Спасибо друг. Пиши еще. )

S>Зря ерничаешь Я тебе по существу ответил.

Application a(argc, argv);
a.exec();


Честно? Твой ответ вообще не по теме. Мне надо после a.exec() работать, ты мне привел пример того что и так ясно... Но я уже сказал — извини, но таким тоном можешь разговаривать дома. А лучше и там не надо.

S>Тебе надо Qt хоть немного понять, и чтобы вопрос нормально сформулировать и чтобы ответы понимать.


Ага еще раз спасибо )
Re[11]: Создать окна в консольном приложении. Как?
От: B0FEE664  
Дата: 11.11.21 14:08
Оценка:
Здравствуйте, imh0, Вы писали:

I>>>>>Ну во первых консолей можно открыть сколько хочешь, и в винде и в линуксе....

BFE>>>>И для каждого придётся запустить отдельный процесс.
I>>>Да ладно...
BFE>>А есть способ?
I>Да конечно... ) Но это уже чистый офтопик. )

Елки-палки! Опять это секретное знание ускользнёт от меня. Ну намекните хотя бы, в какое из множества консольных окон будет направлен вывод printf?
И каждый день — без права на ошибку...
Re[11]: Создать окна в консольном приложении. Как?
От: Skorodum Россия  
Дата: 11.11.21 14:12
Оценка:
Здравствуйте, imh0, Вы писали:

I>Мне надо после a.exec() работать

После у тебя нет цикла обработки сообщиний, сигналы и слоты работать не будут, соответственно окна работать не будут.
Хочешь окна — работай при живом цикле обработки сообщений.

I>Ага еще раз спасибо )

И тебе не кашлять
Re[6]: Создать окна в консольном приложении. Как?
От: Skorodum Россия  
Дата: 11.11.21 14:18
Оценка:
Здравствуйте, B0FEE664, Вы писали:

BFE>>>Если imh0 хочет одно приложение и несколько диалоговых графических окон, то это в Qt делается не то, чтобы совсем просто, но просто.

S>>И что же в этом непростого?
BFE>Ввод из консоли.
Выделил начальное утверждение. Что в нем непростого?
Ну ок, изменим условние — добавим ввод из консоли. Что усложнилось-то?

BFE>Хорошо, уточняю: речь про события отрисовки окон. Все окна должны создаваться и отрисовываться в одной нитке, если я правильно помню.

Вот это верно.

BFE>Покажите мне код, где два окна Qt создаются и рисуются независимо/параллельно в двух отдельных нитках.

Зачем? В чем проблема получать события в рабочих потоках и рисовать окна в основном потоке
Re[10]: Создать окна в консольном приложении. Как?
От: Skorodum Россия  
Дата: 11.11.21 14:26
Оценка:
Здравствуйте, imh0, Вы писали:

I>Фигасе, ты оказывается понял почти ничего из того что он сказал.

Ты все понял? Ну так ответь можно ли рисовать окошки с помощью ncurses и писать в коносль с помощью printf?
Мне вот такое никогда не требовалось, я не знаю и прямо спрашиваю

I>Но ты всех учишь... Ты крут. Все спасибо. Мне достаточно. Ты помог. )

Всегда обращайся
imh0
Re[7]: Создать окна в консольном приложении. Как?
От: B0FEE664  
Дата: 11.11.21 14:35
Оценка:
Здравствуйте, Skorodum, Вы писали:

BFE>>>>Если imh0 хочет одно приложение и несколько диалоговых графических окон, то это в Qt делается не то, чтобы совсем просто, но просто.

S>>>И что же в этом непростого?
BFE>>Ввод из консоли.
S>Выделил начальное утверждение. Что в нем непростого?
S>Ну ок, изменим условние — добавим ввод из консоли.
Что значит, "изменим условние"? Название темы однозначно говорит о консольном приложении.

S>Что усложнилось-то?

Например, выход из приложения. Как корректно выйти из консольного приложения (с графическими окнами) ожидающего ввод пользователя при shutdown?

BFE>>Покажите мне код, где два окна Qt создаются и рисуются независимо/параллельно в двух отдельных нитках.

S>Зачем? В чем проблема получать события в рабочих потоках и рисовать окна в основном потоке
Проблемы могут быть связаны со скоростью: вывод в одно окно тормозит вывод во всех других окнах. Так же и обратные сообщения от ввода в окнах: данные к отдельным ниткам проходят через общий цикл, если не делать специальных ухищрений. Так же могут возникнуть проблемы при завершении отдельных потоков.
И каждый день — без права на ошибку...
Отредактировано 11.11.2021 14:46 B0FEE664 . Предыдущая версия .
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.