Embedded Console in Qt GUI
-
wrote on 7 Jun 2011, 20:40 last edited by
Hi, I'm a relatively new Qt user and would like a bit of advice. I'm working on a C++ Qt program where it would be useful for "advanced" users to have access to a terminal or console window embedded in the GUI itself. Is there a stock widget that models the behaviour of a console window (Captures input and can display output messages)? If not, can anyone offer some potentially useful implementation tips or reccomend which widgets I should look at first? I currently have a QTextBrowser that I am directing output messages to, but that particular widget can not capture user input. Thanks for your help.
-
wrote on 7 Jun 2011, 21:17 last edited by
Maybe a QPlainText? You could overload keyPressEvent() to make it behave more like a terminal.
-
wrote on 9 Jun 2011, 00:36 last edited by
Maybe you can take a look at this files:
http://code.google.com/p/ninja-ide/source/browse/ninja_ide/gui/misc/console_widget.py
http://code.google.com/p/ninja-ide/source/browse/ninja_ide/tools/console.pyUsing that I wrote a Python Console, maybe you can use something like that and send commands to the OS and print the answer in that QPlainTextEdit.
You can see at the ConsoleWidget Class how to handle history and avoid to let the user modify everywhere in the QPlainTextEdit, to behave as a console.
Regards
-
wrote on 2 Sept 2012, 16:07 last edited by
Please take look at this open source project:
http://sourceforge.net/projects/qconsole
It's a Qt / C++ console widget, currently supporting TCL and Python languages but it is completely extensible...
-
wrote on 2 Sept 2012, 16:15 last edited by
I am working on that too, everything you need it's just to handle position of cursor inside of keyPressEvent.
-
wrote on 2 Sept 2012, 16:34 last edited by
[quote author="Peppy" date="1346602509"]I am working on that too, everything you need it's just to handle position of cursor inside of keyPressEvent.[/quote]
It's indeed an important part but you quickly realize that more and more features must be added : Just take a look at QConsole code and try it...
-
wrote on 2 Sept 2012, 17:24 last edited by
This one is quite fancy:
"https://github.com/kmatheussen/radium/blob/master/Qt/Qt_ReqType.cpp":https://github.com/kmatheussen/radium/blob/master/Qt/Qt_ReqType.cppIt uses a label to display output text and opens a new QLineEdit widget for each input line.
-
wrote on 2 Sept 2012, 18:36 last edited by
[quote author="Peppy" date="1346609672"]@Houssem:
No thanks, it's under GPL, I won't use that due to license infringements.[/quote]I've just changed it to LGPL v2, as Qt licence !
Please let me know if this is sufficient or more things need to be done... -
wrote on 2 Sept 2012, 19:36 last edited by
Sorry man, you are using tcl.h (inside of QTclConsole), what is non-standard library, thus I can't compile it.
-
wrote on 6 Sept 2012, 15:39 last edited by
There is QTermWidget
https://github.com/zester/Quantum/tree/master/QTermWidgetHere is an example application using it.
https://github.com/zester/Quantum/tree/master/QTerminal