Я разрабатываю приложение с QT на macOS. Предполагается, что одна из функций этого приложения будет активировать команду Ollama Run вместе со строкой. Вывод показан в новом диалоге, который эффективно открывается. Я полагаю, что это связано с тем, что во втором случае ИИ требуется пару минут, чтобы дать полный вывод, и текст не дается мгновенно, и команды QT принимают только выход, предоставленный только после запуска команды. < /P>
Можете ли вы оказать какую -либо помощь? Спасибо. Здесь ниже я публикую функцию. < /P>
void TranslateHelper::onTranslateClicked() {
QString selectedText = textEdit->textCursor().selectedText();
if (selectedText.trimmed().isEmpty())
return;
QDialog *transDialog = new QDialog(dialog);
transDialog->setWindowTitle("Traduzione");
transDialog->resize(500, 200);
QVBoxLayout *layout = new QVBoxLayout(transDialog);
QLabel *label = new QLabel("Traduzione:", transDialog);
QPlainTextEdit *output = new QPlainTextEdit(transDialog);
output->setReadOnly(true);
layout->addWidget(label);
layout->addWidget(output);
QString prompt = QString("Traduci in italiano questa frase senza commenti ulteriori: \"%1\"").arg(selectedText);
QString command = "ollama";
QStringList args = {"run", "gemma3:4b", prompt};
QProcess *process = new QProcess(transDialog);
process->setProcessChannelMode(QProcess::MergedChannels);
QObject::connect(process, &QProcess::readyReadStandardOutput, [process, output]() {
QByteArray data = process->readAllStandardOutput();
if (!data.isEmpty()) {
output->moveCursor(QTextCursor::End);
output->insertPlainText(QString::fromUtf8(data));
output->ensureCursorVisible();
}
});
QObject::connect(process, &QProcess::readyReadStandardError, [process, output]() {
QByteArray err = process->readAllStandardError();
if (!err.isEmpty()) {
output->moveCursor(QTextCursor::End);
output->insertPlainText("ERROR: " + QString::fromUtf8(err));
output->ensureCursorVisible();
}
});
QObject::connect(process, QOverload::of(&QProcess::finished),
[process, output](int exitCode, QProcess::ExitStatus exitStatus) {
output->moveCursor(QTextCursor::End);
output->insertPlainText(QString("\n--- Processo terminato (Exit Code: %1, Status: %2) ---\n")
.arg(exitCode).arg(exitStatus == QProcess::NormalExit ? "Normal" : "Crash"));
output->ensureCursorVisible();
process->deleteLater();
});
QObject::connect(transDialog, &QDialog::finished, [process](int) {
if (process && process->state() != QProcess::NotRunning) {
process->kill();
process->waitForFinished(3000);
}
});
output->clear();
process->start(command, args);
transDialog->exec();
button->setVisible(false);
}
Подробнее здесь: https://stackoverflow.com/questions/796 ... nal-output
Приложение QT не загружает выход терминала ⇐ C++
Программы на C++. Форум разработчиков
-
Anonymous
1750698170
Anonymous
Я разрабатываю приложение с QT на macOS. Предполагается, что одна из функций этого приложения будет активировать команду Ollama Run вместе со строкой. Вывод показан в новом диалоге, который эффективно открывается. Я полагаю, что это связано с тем, что во втором случае ИИ требуется пару минут, чтобы дать полный вывод, и текст не дается мгновенно, и команды QT принимают только выход, предоставленный только после запуска команды. < /P>
Можете ли вы оказать какую -либо помощь? Спасибо. Здесь ниже я публикую функцию. < /P>
void TranslateHelper::onTranslateClicked() {
QString selectedText = textEdit->textCursor().selectedText();
if (selectedText.trimmed().isEmpty())
return;
QDialog *transDialog = new QDialog(dialog);
transDialog->setWindowTitle("Traduzione");
transDialog->resize(500, 200);
QVBoxLayout *layout = new QVBoxLayout(transDialog);
QLabel *label = new QLabel("Traduzione:", transDialog);
QPlainTextEdit *output = new QPlainTextEdit(transDialog);
output->setReadOnly(true);
layout->addWidget(label);
layout->addWidget(output);
QString prompt = QString("Traduci in italiano questa frase senza commenti ulteriori: \"%1\"").arg(selectedText);
QString command = "ollama";
QStringList args = {"run", "gemma3:4b", prompt};
QProcess *process = new QProcess(transDialog);
process->setProcessChannelMode(QProcess::MergedChannels);
QObject::connect(process, &QProcess::readyReadStandardOutput, [process, output]() {
QByteArray data = process->readAllStandardOutput();
if (!data.isEmpty()) {
output->moveCursor(QTextCursor::End);
output->insertPlainText(QString::fromUtf8(data));
output->ensureCursorVisible();
}
});
QObject::connect(process, &QProcess::readyReadStandardError, [process, output]() {
QByteArray err = process->readAllStandardError();
if (!err.isEmpty()) {
output->moveCursor(QTextCursor::End);
output->insertPlainText("ERROR: " + QString::fromUtf8(err));
output->ensureCursorVisible();
}
});
QObject::connect(process, QOverload::of(&QProcess::finished),
[process, output](int exitCode, QProcess::ExitStatus exitStatus) {
output->moveCursor(QTextCursor::End);
output->insertPlainText(QString("\n--- Processo terminato (Exit Code: %1, Status: %2) ---\n")
.arg(exitCode).arg(exitStatus == QProcess::NormalExit ? "Normal" : "Crash"));
output->ensureCursorVisible();
process->deleteLater();
});
QObject::connect(transDialog, &QDialog::finished, [process](int) {
if (process && process->state() != QProcess::NotRunning) {
process->kill();
process->waitForFinished(3000);
}
});
output->clear();
process->start(command, args);
transDialog->exec();
button->setVisible(false);
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79676526/qt-application-not-loading-terminal-output[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия