[Qt-interest] Showing a "Please wait" dialog during sql query

Scott Aron Bloom Scott.Bloom at onshorecs.com
Mon Jun 7 20:33:55 CEST 2010


-----Original Message-----
From: qt-interest-bounces at trolltech.com
[mailto:qt-interest-bounces at trolltech.com] On Behalf Of Gillen Daniel
Sent: Monday, June 07, 2010 11:27 AM
To: qt-interest at trolltech.com
Subject: Re: [Qt-interest] Showing a "Please wait" dialog during sql
query

On 06/07/2010 07:47 PM, Scott Aron Bloom wrote:
> Ive had the same problem.  I have worked on it, but no "real" success
> yet..
>
> Mine is a bit harder, because my SQL query is being used in a SQL
Model,
> not just a dialog.
>
> But here is what I am trying.. And in speaking with some trolls,
should
> work if I ever get the full time to devote to it.
>
> Assign the QSqlQuery and QSqlDatabase in a thread dedicated to the
> display class.  In my case a QSqlModel your case is QDialog derived
> class.
>
> Show the dialog, have it start the thread.  Have the threads run emit
a
> signal when its finished, and exit the thread, but do not delete the
> thread.
>
> Use the data from the QSql data from the thread.  Once you are
finished
> retrieving the data, you can delete the thread/QSql data.
>
> The display should stay valid during the exec.
>
> Scott
>
> -----Original Message-----
> From: qt-interest-bounces at trolltech.com
> [mailto:qt-interest-bounces at trolltech.com] On Behalf Of Gillen Daniel
> Sent: Monday, June 07, 2010 10:32 AM
> To: qt-interest at trolltech.com
> Subject: [Qt-interest] Showing a "Please wait" dialog during sql query
>
> Hi @all
>
> I have a massive problem here and don't seem to find a solution for
it.
>
> I'm developping a database application based on a MySQL database and I
> would need to display a "Please wait" dialog while
> populating a QSqlQueryModel. The data from QSqlQueryModel gets
displayed
>
> in a widget in my main window, so I have to exec the query in my main
> thread. The problem is that any dialog I open before querying the data
> hangs as my query blocks the main thread.
>
> Does anyone has an idea on how I could solve this? I would need some
> sort of 2nd thread which displays the dialog with his own event loop
but
>
> as far as I understand, Qt does not support GUI interaction in a
second
> thread. Or is it perhaps possible to exec the query in a second thread
> and then move the whole QSqlQueryModel and database connection to my
> main thread?
>
> Thx in advance
>
>    

As far as I can see it's exactly the same as mine as I also need the 
data in a model that gets displayed in my main window.

The dialog should only inform the user that a query is beeing executed 
and the program hasn't crashed.

So just to clarify this, in my MainWindow I start a thread which opens a

database connection, executes my SQL query, emits a signal to my 
MainWindow and exits. The slot receiving this signal uses the QSqlQuery 
from the thread and assigns it to my QSqlModel which is then assigned 
for ex. to a QTableModel widget?

Sorry but this seems a bit confusing to me or didn't I get it right?
-----------------

Let me work on this a bit, and Ill try to get you a code sample...


Howver, yes in general you got it right...

Scott




More information about the Qt-interest-old mailing list