Angenommen, ich möchte eine Modell-/Ansichtsarchitektur mit den Klassen QTableView
und QAbstractTableModel
implementieren. Also unterlasse ich die Klasse QAbstractTableModel
, um die Klasse MyModel
zu erstellen und die Schnittstelle QAbstractTableModel
zu implementieren. Verbinden Sie dann die Instanz dieses Modells mit der setModel
-Methode mit einer QTableView
-Instanz.Wie kann man ein konstantes schreibgeschütztes Modell/eine reine Architektur in Qt erstellen?
#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();
}
Aber wie kann ich das Modell nur lesen lassen? Ich kann
const MyModel myModel(0);
nicht deklarieren, da setModel ein nicht konstantes Argument verwendet. Ich habe nur konstante Methoden von QAbstractTableModel implementiert.
Ich möchte nur in der Lage sein, das Modell von einem anderen Objekt zu übergeben eine konstante Methode dieses Objekt unter Verwendung von . Es ist kein großes Problem, aber sobald ich eine Methode nicht konstant mache, wenn sie konstant sein soll, dann verbreitet sich das auch auf andere Methoden, die diese Methode verwenden. –
Ich habe Qt-Code gesehen, der sich mit einem solchen Problem beschäftigt, indem er die brutale 'const_cast'-Methode verwendet. Nicht so elegant, potentiell gefährlich, aber ... – Anonymous
das ist genau das, wonach ich gesucht habe –