• 4909阅读
  • 7回复

M/C下一定要委托么 [复制链接]

上一主题 下一主题
离线shy_ness
 

只看楼主 倒序阅读 楼主  发表于: 2013-07-31
关键词: 委托M/C数据库
最近写了一个用户管理程序,需要连接到数据库MYsql,使用Qsqltablemodel和Qtableview来实现,在修改数据厚往里插入后,数据库没有插入的数据,难道非要使用委托么?
离线XChinux

只看该作者 1楼 发表于: 2013-07-31
这个似乎与委托没什么关系,注意调用submit().
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线XChinux

只看该作者 2楼 发表于: 2013-07-31
不用搞那么复杂,用最简单的QStandardItemModel+QTableView+EditItemDialog/AddItemDialog解决,逻辑简单清晰。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线shy_ness

只看该作者 3楼 发表于: 2013-07-31
关键EditItemDialog/AddItemDialog需要弹出窗体,如果仅停留在这样一个界面上,直接编辑,我想应该只能用代理来实现吧
离线shy_ness

只看该作者 4楼 发表于: 2013-07-31
回 2楼(XChinux) 的帖子
你的解决方案的确是个不错的选择,谢谢你的方案
离线XChinux

只看该作者 5楼 发表于: 2013-08-01
写delegate提供编辑功能确实不错,但写起来要比EditXXXDialog、AddXXXDialog复杂,有些复杂的东西,它还做不来,所以一般情况下我写此类功能时,都是提供EditXXXDialog、AddXXXDialog来处理。如果用户确实有特殊编辑功能需求,才写delegate.

QSqlTableModel,这个应该是不需要写delegate的。但它灵活性比较差,比如一些字段的特殊显示,那就得写delegate或者从写QSqlTableModel派生类重新实现data()函数。所以平常我都使用QStandardItemModel或TcVariantMapTableModel(配合TcDataAccess使用,这两个类全是tianchi库里的),如果是数据量少(普通的数据量,三、五万应该不成问题)则配合TcFunctionalSortFilterProxyModel做过滤、排序,直接用TcDataAccess全取出数据来,如果数据多,则使用分页(使用TcSortPaginationTableView ,提供分页信号的功能,排序则是数据库排序了)、

这里tianchi中涉及到数据库查询表格编辑的几个类TcVariantMapTableModel、TcDataAccess、TcDataAccessStatement、TcFunctionalSortFilterProxyModel、TcSortPaginationTableView ,这几个类,你可看一下,里面我都有写使用说明。

http://www.qtcn.org/bbs/read-htm-tid-54310.html
http://www.qtcn.org/tianchi/docs/0.0.2
http://www.qtcn.org/tianchi/docs/0.0.2/class_tc_sort_pagination_table_view.html
http://www.qtcn.org/tianchi/docs/0.0.2/class_tc_variant_map_table_model.html
http://www.qtcn.org/tianchi/docs/0.0.2/class_tc_functional_sort_filter_proxy_model.html
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线jdwx

只看该作者 6楼 发表于: 2013-08-01
EditXXXDialog、AddXXXDialog是个好方案,尤其是数据多的时候,用代理直接在表格里编辑,一会就晕了,数据很容易填错地方。
用对话框可以设计出有特色的界面,数据分组,数据填在哪里,很容易找。
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线XChinux

只看该作者 7楼 发表于: 2013-08-01
我遇到的客户中,大多是平常用Excel用的多,所以希望项目软件中也能提供类似于Excel的编辑功能、快捷键等,这时,就需要特殊定制些delegate来满足需要了。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
快速回复
限100 字节
 
上一个 下一个