[Moved] QT and data input in ubuntu terminal



  • When I start a simple program that needs to input data in terminal (Ubuntu) - I cant do it. In the console window i can input everything but the programm doesnt respond.
    Please tell me what is wrong?



  • Probably your code is wrong.

    Sorry, that's much too less information to give you a reasonable answer. You can provide us the source code for a

    • short
    • complete
    • compilable
    • runnable

    program that demonstrates us the problem and we'll have a look.



  • Here is the code:

    @
    #include <iostream>
    using namespace std;
    #include <cctype>

    int fuct (int);

    int main()
    {
    int n;

        cout << "Input number: ";
        while (cin >> n)
        {
                int fk = fuct (n);
                cout << "\nFactorial: " << fk << "\n";
                cout << "Input number: ";
        }
    
        return 0;
    

    }

    int fuct (int n)
    {
    if (n == 0) return 1;
    else if (n == 1) return 1;
    else return n * fuct(n-1);
    }
    @

    [EDIT: code formatting, please use @-tags, Volker]


  • Moderators

    How does this code relate to Qt?



  • Sorry, the code was displayed wrong in the previous post:

    @
    #include <iostream>
    using namespace std;
    #include <cctype>

    int fuct (int);

    int main()
    {
    int n;

        cout << "Input number: ";
        while (cin >> n)
        {
                int fk = fuct (n);
                cout << "\nFactorial: " << fk << "\n";
                cout << "Input number: ";
        }
    
        return 0;
    

    }

    int fuct (int n)
    {
    if (n == 0) return 1;
    else if (n == 1) return 1;
    else return n * fuct(n-1);
    }
    @

    [EDIT: code formatting, Volker]



  • so, if it has not relation to Qt it will not work properly?



  • Nothing is wrong, it works for me.

    Also this has nothing to do with Qt.



  • I have understood about Qt, but input data doesn`t work in the console:


    Launching /home/denis/tutorial-build-desktop/tutorial...
    Input number: 1

    1
    2
    2w

    d
    c

    I can input everything and the programm doesn`t have any reaction.



  • The debugger wrote:

    &"warning: GDB: Failed to set controlling terminal: \320\235\320\265\320\264\320\276\320\277\321\203\321\201\321\202\320\270\320\274\321\213\320\271 \320\260\321\200\320\263\321\203\320\274\320\265\320\275\321\202\n"



  • If you have a console application that reads from the console then please do start it on the console and neither in a debugger nor in your IDE.

    EDIT: PS: If you had provided us that information before, you would have got an answer.



  • Moved to tools forum, as it seems to be an issue with how to use Qt Creator properly.



  • Hi, Volker -

    So, do I understand from your post above that if a program needs console input, we can't/shouldn't launch it from Creator?



  • At least it's hard to debug, because you have no means to input your data (at least I'm not aware of one), so your program hangs once it tries to read from stdin.



  • OK, thanks. I suppose that, given that Qt is a GUI development system, this is reasonable, though it may surprise some people who come from a more conventional IDE like Eclipse.

    Is there at least a way to launch the terminal from Qt? Some minor level of integration would make it a little easier.

    EDIT: let me rephrase that: there does appear to be some kind of terminal integration (though I can't get it to work for me); can one launch an app to terminal from Qt while still controlling the app through the Qt debugger? That would be slick.



  • It's not a problem of GUI or console development. You can have console input on a GUI program too :-)

    Ah, seems that I was wrong!

    In the run settings (project view of Creator) you can check a checkbox "run in terminal", this might be what you want. It's a bit cumbersome on the mac though (I remember you being on OS X, right?). You must set the terminal application on the mac to

    /Applications/Utilities/Terminal.app/Contents/MacOS/Terminal

    (Settings, Environment, first tab)



  • That sure seems like it should work, doesn't it? But, when I try to start a debug session, I get an error message at launch, saying it can't start the terminal emulator '/Applications/Utilities/Terminal.app/Contents/MacOS/Terminal'. Dunno...


  • Moderators

    There actually is a "launch in terminal" in the run settings of your project in Qt Creator... Go to project mode and visit the run settings there.



  • I assume you mean the "Run in terminal" check box? I have that checked. Still doesn't go.



  • [quote author="mzimmers" date="1302358795"]That sure seems like it should work, doesn't it? But, when I try to start a debug session, I get an error message at launch, saying it can't start the terminal emulator '/Applications/Utilities/Terminal.app/Contents/MacOS/Terminal'. Dunno...
    [/quote]

    This should work. Where is your Terminal.app located? You'll need to enter

    /path/to/Terminal.app/Contents/MacOS/Terminal

    into the config field.

    EDIT: You actually are on a Mac, aren't you?



  • Heh...yes, I'm on a Mac, and the path you provided above is indeed the correct one. No idea why it's not working.



  • For me it works, but the new terminal window is launched in the background. You have to select it via the dock or the running apps selector (cmd-tab). Also, the newly opened terminal is not quit once you terminate your application, you have to quit it manually (and watch out that you do not quit your regular terminal!)



  • Oho!

    I just went back into preferences, and this time, I hit the apply button. This time the terminal launched. I had assumed just hitting "OK" would have done this for me.

    Thanks for the help.

    EDIT: just as an FYI for anyone reading this thread, note that while Terminal will launch your application, it will do so from the context of the default directory for your user account, NOT the directory that the application is in. You may need to move around data files or engage in directory processing within your program to achieve the desired results.



  • Also, the newly opened terminal is not quit once you terminate your application, you have to quit it manually (and watch out that you do not quit your regular terminal!)

    I seem to be having the opposite problem. My terminal window goes away, but according to the Application Output view, the app hasn't terminated yet. I hit the red square, and get a warning that the app is still running. Not a showstopper, but odd...



  • Yes, unless you do not have a means to quit the application, say ctrl-c, it works this way :-( You'll have to quit the app via the kill button in Creator.



  • Well...I thought I had this whipped, but...I just tried actually a console app with the debugger, and...it ignores all the debug commands (like breakpoints, etc.). Any idea what's going on? It seems as though the terminal window and the debugger aren't talking to each other very well.



  • How funny to browse through old posts looking for a solution, and realize you had the same problem on a different platform nearly a year ago.

    I'm now trying to get Creator and GDB working together on ubuntu, without success. Seems like the same issue. Just bumping this thread to see if anyone knows of a solution...



  • mzimmers,
    I was able to get my QtCreator reading/writing from/to cin/cout thanks to your questions/post. And it's running fine here with GDB on Ubuntu 12.04. Thanks for your help, and hope your's is running fine now.


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.