找回密码
 FreeOZ用户注册
查看: 2159|回复: 11
打印 上一主题 下一主题

[软件技巧] Qt问题求助。

[复制链接]
跳转到指定楼层
1#
发表于 19-5-2009 23:45:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?FreeOZ用户注册

x
我用QSqlQueryTableModel和QTableView来显示和修改数据库。 有几个问题。
1。 我用setEditStrategy( QSqlTableModel::OnManualSubmit        ), 那么是否在 submitAll() 时要检查错误用revertAll()来实现transacetion 的rollback?
2. 怎样在修改时提供数据的validation? 怎样在修改时就validate? 还是只能在submit的时候一起检查?

请高手解说一下吧。
回复  

使用道具 举报

2#
发表于 20-5-2009 00:04:43 | 只看该作者
1. should be ok
2. use appropriate signals
回复  

使用道具 举报

3#
 楼主| 发表于 20-5-2009 22:11:19 | 只看该作者
谢谢core.
我用dataChanged(),但是他是在cell的data changed 之后才发出的。beforeInsert, beforeUpdate 都是对一个ROW的。有没有专门对于cell的beforeChanged之类的?可以在修改前检查新数据,如果不对,可以恢复到原来的数据。
回复  

使用道具 举报

4#
发表于 20-5-2009 22:23:54 | 只看该作者
如果用QTableWidget的话可以用QTableWidget::cellChanged(), 你用dataChanged()也正确,检测完如果不对再改过去就是,也可以检测QTableView的信号,比如键盘和鼠标相关的信号。

如果对默认的编辑行为不满意,还可以通过QAbstractItemView::setItemDelegate()自定义Delegate实现。
回复  

使用道具 举报

5#
 楼主| 发表于 27-5-2009 17:10:35 | 只看该作者
coredump, 又有新问题了。
我用在C++的APP中QWebView,但是因为web用cookie来保存login 信息, 结果,在QWebView中没法用,看了不少地方说QWebView不支持cookie, 请问怎么处理? 谢谢。
回复  

使用道具 举报

6#
发表于 27-5-2009 17:26:28 | 只看该作者

回复 #5 GPS 的帖子

  1. view->page()->networkAccessManager()->cookieJar()
复制代码
see more about QNetworkCookie: http://doc.qtsoftware.com/4.5-snapshot/qnetworkcookie.html
回复  

使用道具 举报

7#
发表于 27-5-2009 18:11:19 | 只看该作者
没用过的人路过...
回复  

使用道具 举报

8#
 楼主| 发表于 28-5-2009 00:40:59 | 只看该作者
我还是不太清楚QWebView。它是不是就象个内嵌的browser? 能不能我把目标的url设了,就可以一直在里面切换? 如果可以,应该怎么样enable cookie?就象一般的浏览器?
麻烦,再讲讲整个 webkit的作用吧。

另外,QSqlDatabase只能在同一个thread里用,那么在 db = QSqlDatabase::addDatabase("PSQL", "connName");
指的是db只能在同一个线程中用吧? 那么"connName"这个名字是不是在不同线程中可以重复用呢?

如果, 在MainWindow下有两个并列的子Dialog,应该是每个Dialog有自己的thread, 在Dialog A 中的db, 可以在B中用马? 或者,在MainWindow中的db能在dialog A /B中用马?

我用QTableView 和 QSqlTableModel 来显示和修改, 可是有些COLUMN,只想显示,不让修改,我用model->record()->setGenerated("col_cant_changed", false);怎么不起作用阿? 好像, model->reocrd()返回的是一个 copy, 我该这个copy,并不能改变model中的那个。 我用model->submitALl()来update.

另外, 在QSqlTableModel中,引用的表没有primary Key, 结果, submitAll并不修改表,加了primary key就可以了, DB 是 postgresql, 是什么原因呢? 能不能不加primarykey, 也可以通过submitALl来修改的?


谢谢。

[ 本帖最后由 GPS 于 28-5-2009 01:06 编辑 ]
回复  

使用道具 举报

9#
发表于 28-5-2009 10:50:23 | 只看该作者

回复 #8 GPS 的帖子

太细节了,这要都讲了,干脆你的活就让我干了得了。

QT的所有源代码都在那里,文档也写得非常棒,还有一大堆demos, examples,关于Webkit的部分,甚至有一个完整的浏览器作为demo(在demos\browser目录下,全部代码也没多少), 细节的东西还是要自己去做实验,钻研钻研,光靠问不行的。
回复  

使用道具 举报

10#
 楼主| 发表于 28-5-2009 11:34:22 | 只看该作者
呵呵,看来要找个QT论坛去了。谢谢。
回复  

使用道具 举报

11#
发表于 28-5-2009 11:44:17 | 只看该作者

回复 #10 GPS 的帖子

http://www.qtcentre.org

or

qt maillists are better places for detail QT questions.
回复  

使用道具 举报

12#
 楼主| 发表于 28-5-2009 11:47:16 | 只看该作者
Thanks. I've found qtcentre too. Will go there.
回复  

使用道具 举报

您需要登录后才可以回帖 登录 | FreeOZ用户注册

本版积分规则

小黑屋|手机版|Archiver|FreeOZ论坛

GMT+10, 28-4-2024 04:42 , Processed in 0.034384 second(s), 27 queries , Gzip On, Redis On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表