On 31 Jan 2014, at 5:49 PM, John Weeks wrote: > Thanks for your comments, Konrad. > > Part of my question is driven by the fact that our currently-shipping non-Qt > version puts up windows while it's not the active application and this does > not make the application activate. We run on both Macintosh and Windows. So > the fact that Qt applications do this makes me believe that this is a Qt > thing. Since that is the case, surely there's a Qt way to avoid doing > something that the underlying OS isn't doing. > >> Why open windows at all if you do not intend to actually show the customer >> anything until you are done? > > Have you worked with scientists? :) Our customers may run a process that > creates literally hundreds of graphs, each in a window, by running an > automated process. > > Our customers can write code in our internal language to do very lengthy > computations analyzing their data. Part of that might include creating a > graph (in a window!) showing the result of some part of the analysis, or of > one of many data sets. Being able to see that graph come up allows them to > monitor the progress of the analysis; having it come up while the application > is not the active application allows them to compose e-mail, browse the web, > etc., during an analysis that might take many minutes or even hours or days. > > So, no, it wouldn't work to make the windows minimized. > > At the end of the process they want a collection of graphs that will most > likely then wind up as the basis for a report or a published paper. > > And, again, Windows and Mac OS X aren't doing this- why does Qt do it?
I suspect that for some reason QWindow::requestActivate() is getting called; you can set a breakpoint there and look at the backtrace to find out why. But I tried that myself, using code like this int main(int argc, char *argv[]) { QApplication a(argc, argv); MainWindow w; w.show(); MainWindow w2; QTimer t; t.singleShot(5000, &w2, SLOT(show())); return a.exec(); } and I don't see the problem, at least not on OSX. After the first window appears, I can bring another application into the foreground, then after 5 seconds the second window will show up in the background without activating the application. Even if w2 is a QDialog rather than a QMainWindow it still doesn't interrupt. _______________________________________________ Interest mailing list Interest@qt-project.org http://lists.qt-project.org/mailman/listinfo/interest