2014-02-03 3 views
0

Я новичок в программировании Qt, я сделал простой gui с помощью одной кнопки. В принципе, я написал программу на C++, теперь хочу сделать Gui для моего проекта. Я хочу отобразить вывод всей инструкции printf в моем gui. printf, показывающие их вывод в консоли, но я хочу добавить что-то похожее на консоль в моем gui, чтобы всякий раз, когда я вызываю printf, он показывает его результат в gui. Не могли бы вы посоветовать мне, как я могу это сделать?display printf output в главном окне в QT

ответ

2

Вы можете использовать QLabel, чтобы показать свой результат в графическом интерфейсе.

Каждый раз, когда вы вызываете printf, вместо этого вы вызываете setText(...). Теперь текст отладки будет отображаться в текстовой метке в вашем графическом интерфейсе.

Вы можете добавить несколько QLabels для различных отладочных выходов, если хотите.

EDIT:

This также может представлять интерес.

+0

Это так низкопроизводительное решение –

+0

@KamilKlimek: Возможно, вы обрабатываете богатый текст вместо обычного текста, я могу себе представить, что это занимает больше времени. Попробуйте установить обычный текст с помощью [textFormat()] (http://qt-project.org/doc/qt-4.8/qlabel.html#textFormat-prop), если вы используете только обычный текст. – gartenriese

+0

Я использую операционную систему реального времени, такую ​​как xenomai, и я использую rt_printf вместо printf, потому что printf работает слишком медленно. не могли бы вы сообщить мне, как я могу использовать rt_printf в qt или чередуться с тем же? – nabeel

0

использование QProcess запустить программу CLI и использовать readData/WriteData, чтобы получить информацию и поместить их в QTextEdit

0

я нашел ответ на мой вопрос, я использовал textbrowser в графическом интерфейсе и сделать функцию, которую я позвоните для печати моих данных в gui. Я не могу показать картинку моего ги, потому что у меня меньше репутации.

здесь функция, которую я использовал для печати.

void MainWindow::print(const QString &input){ 

data_lab += input;//to display all data in stream 
ui->label->setText(input); 
ui->textBrowser->setText(data_lab); 


} 

и вот вызов функции из основного.

w.print("hellok\n"); 
w.print("l\n"); 

Я надеюсь, что это поможет кому-то вроде меня.

+0

Вы также можете использовать [QTextEdit :: append (const QString & text)] (http://qt-project.org/doc/qt-5.0/qtwidgets/qtextedit.html#append).Таким образом, вам не нужно сохранять переменную, содержащую все печатные данные, вы можете просто добавить новые строки в текстовый браузер. 'ui-> textBrowser-> append (input);' – thuga

+0

Если вы так обеспокоены производительностью, добавление и переустановка текста в поле так плохо. –

+0

Если это не так хорошо, что это хороший метод? – Goddard

Смежные вопросы