Is it possible to create a Qt's library project (that uses QThread/QTcpSocket) without QApplication?



  • Hi all,

    I want to use QTcpSocket/QThread in a Qt's library project (dll project). But it could not work without QApplication instance. Is there any solution in order to not use QApplication?

    Thanks advance for your helps and clarifications,



  • You can use this library from an application that creates an instance of "QCoreApplication":http://qt-project.org/doc/qt-4.8/qcoreapplication.html or QApplication.
    If the target application is not used Qt, you must create an instance of QCoreApplication in the library, and take care of their destruction.



  • I am facing exactly the same problem. Could you ellaborate a little bit, Konstantin?

    Thanks in advance.



  • Try to ask author of "this thread":http://qt-project.org/forums/viewthread/26483/, it seems that he has at least partially working solution calling QCoreApplication::exec in separated thread (in dll).



  • Thank you Bogdan. Please forgive my ignorance because I'm a beginner in Qt, but it doesn't seem like the same problem. The author of that thread has a problem regarding the use of QThread with signal and slots. What I need to do is to make several consecutive calls to the methods of QTcpSocket in the same function, such as:

    @
    do_something();
    ...
    socket.write(blahblah);
    ...
    socket.read(blahblah);
    ...
    socket.write(blahblah);
    @

    that is, without signals and sockets.

    Any help in how to structure the code would be greatly appreciated.

    Kind regards.



  • Just do as you wrote, I mean call write/read methods directly, you don't need to use signals/slots. Moreover, as far as I see read/write are not slots so you cannot connect to them even if you want.

    And I suppose you should start separated thread for your problem, as I believe your problem is far different than the main question asked in this thread.


Log in to reply
 

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