假設我想使用QTableView
和QAbstractTableModel
類實現模型/視圖體系結構。所以我將QAbstractTableModel
分類以創建類MyModel
並實現QAbstractTableModel
接口。然後使用setModel
方法將此型號的實例連接到QTableView
實例。如何在Qt中創建一個不變的只讀模型/視圖體系結構?
#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();
}
但我該如何讓模型只讀?我無法聲明
const MyModel myModel(0);
因爲setModel採用非常量參數。我只重新實現了QAbstractTableModel的常量方法。
我只是希望能夠通過使用該對象的常數法從另一個對象模型。這不是一個大問題,但是一旦我使某種方法不是恆定的,當它應該是恆定的,那麼這也會擴展到使用這種方法的其他方法。 – 2012-04-03 08:00:17
我看到Qt代碼,使用殘酷'const_cast'方法處理這些問題。不是那種優雅,潛在的危險,但是... – Anonymous 2012-04-03 08:40:35
這正是我一直在尋找的東西 – 2012-04-03 09:59:47