2010-12-06 96 views
2

在我的代码中,我连接MySql数据库和查询数据。
我使用这些数据绘制图形场景。Sql连接和GUI问题

当数据库连接返回false时,
我的程序尝试连接数据库与(db.Open())

与此同时,gui被锁定。
你对这个问题有什么想法吗?
我该如何解决?

+0

甚至没有足够的信息来帮助你。 – 2010-12-06 09:40:59

回答

1

要解决这个问题,您必须创建一个多线程应用程序。一个进程可以有多个线程,这些线程就像是与子进程并行运行的子进程(Slam me for this explanation:P)。有关线程的更多信息,请阅读here

在你的情况下,你必须产生一个线程,在后台创建MySql连接(QT Doc表示“只能在创建它的线程中使用连接”),获取数据从服务器并将其绘制到您想要的小部件。在后台线程执行此操作时,应用程序的主要运行周期不会中断,并且您的应用程序不会无响应。但是,您必须实现一种机制,以确保一次只能存在一个Mysql-Data-Fetcher-Thread,否则它会变得混乱(例如,多个线程想要访问相同的绘图区域,这在QT中是不可能的)。

在QT文档站点上存在非常好的section about threads以及如何在QT中实现它们。如果你不熟悉线程编程,你还应该查阅那里的外部链接。