假设我想使用QTableView和QAbstractTableModel类实现模型/视图架构.所以我继承了QAbstractTableModel创建类MyModel并实现QAbstractTableModel接口.然后QTableView使用该setModel方法将此模型的实例连接到实例.
#include <QtGui/QApplication>
#include <QtGui/QTableView>
#include "mymodel.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QTableView tableView;
MyModel myModel(0);
tableView.setModel( &myModel );
tableView.show();
return a.exec();
}
Run Code Online (Sandbox Code Playgroud)
但是如何才能使模型只读?我无法申报
const MyModel myModel(0);
Run Code Online (Sandbox Code Playgroud)
因为setModel采用非常量参数.我只重新实现了QAbstractTableModel的常量方法.
const在这种情况下你是什么意思?你想达到什么目的?
您是否希望您的基础数据是不可变的 - 因此该版本QTableView是不可能的?然后就是禁止编辑模型 - 例如,不执行setData.
还要注意的是标准实施的
Qt::ItemFlags QAbstractItemModel::flags ( const QModelIndex & index ) const
Run Code Online (Sandbox Code Playgroud)
将不会返回Qt::ItemIsEditable哪个就足够了.
您必须注意不要在UI之外修改模型(请注意,在不发送适当信号的情况下在外部修改它可能会导致错误的事情).但是因为这是你的代码 - 这应该不是问题.
| 归档时间: |
|
| 查看次数: |
1126 次 |
| 最近记录: |