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

Gillen Daniel gillen.daniel at gmail.com
Mon Jun 7 20:44:51 CEST 2010


On 06/07/2010 08:33 PM, Scott Aron Bloom wrote:
> -----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
>    

Ok, a code sample would be great ;)

Thx a lot

-- 
Unix _IS_ user friendly - it's just
selective about who its friends are!




More information about the Qt-interest-old mailing list