[SOLVED] How would I go about accessing Ui from another function in a different source file?



  • For example: in this chunk of code:

    SOLVED by using simple Signals and Slots implementation. See below.



  • Try @setPlainText ( const QString & text )@


  • Moderators

    If your tCamera class is separate from the class which contains the Ui, then create a signal in your tCamera class which emits the QString you want to display. In your UI class, create a slot which receives a QString and sets the TextBrowser's text with that screen. Then somewhere outside of both classes, connect that signal to that slot.



  • Thanks mlong. I really appreciate your input on my other threads as well.


  • Moderators

    My pleasure! I hope this helps. If so, please edit your first post and add [Solved] to the title. Thanks!



  • [quote author="mlong" date="1336501102"]If your tCamera class is separate from the class which contains the Ui, then create a signal in your tCamera class which emits the QString you want to display. In your UI class, create a slot which receives a QString and sets the TextBrowser's text with that screen. Then somewhere outside of both classes, connect that signal to that slot.

    [/quote]

    I've to clarify something about creating the signal. So you how would I create a signal emitting the string? Would it just be something like void sendSignal ("This is a string") ? I suppose if it is implemented this way, the connect function would make "This is a string" a parameter to the slot function, but I was just wondering how a void function with a parameter could transfer information in that way (If I am not misunderstanding anything)


  • Moderators

    You don't know much about signals and slots, do you? ;) Knowing that stuff is probably one of the most important things you'll need to know to do any substantive work with Qt. I'd insist upon you going through the "documentation":/doc/qt-4.8/signalsandslots.html that covers it. (It's stuff you have to know cold.)

    But, in short (though I'm reluctant to spoon feed it...)

    you would define a signal such as:
    @
    signals:
    void mySignal(QString);
    @
    (you don't have to write the implementation of this. It will be autogenerated.)

    and to use it in your code you use:
    @
    emit mySignal("Whatever text I want to send.");
    @

    That signal would ideally be connected to a slot with a compatible signature:
    @
    connect(sourcePointer, SIGNAL(mySignal(QString)),
    destPointer, SLOT(someSlot(QString)));
    @

    Edit to add:

    Since the code for the body of the signal is generated by MOC, the return type of the signal is void. The string you want to pass in is a parameter because the MOC-generated code knows how to take that value passed in as a parameter and poke it into the corresponding parameter in the connected slot.


Log in to reply
 

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