首先,Qt与Ice有不同的事件处理循环,所以要想Ice服务(而非客户端)与Qt的事件循环一起工作,则须Ice主循环放到另一个Qt线程中,当然如不退出Ice事件循环,则其所在的Qt线程无法进行自己的事件循环。目前我只知道这么多,没有细究它们各自的事件循环处理方式,或许有更好的处理方法。当然,Ice客户端一般来说没有事件循环,所以直接在Qt中用即可。在Ice服务程序中,当然你可以使用Qt的一些类,不使用signal/slot机制即可。
客户端发出select查询,服务器端ice进行数据库查询并返回结果是可以的,不过你最好设置数据集的每次获取数量(比如在sql语句中加limit 100这样的限制返回结果集的语句),因为Ice的缓存大小是有限制的(在ice配置文件中设置)。