QTableView verwenden ohne SQL

Alles rund um die Programmierung mit Qt
Antworten
saoirse
Beiträge: 18
Registriert: 16. April 2011 17:49

QTableView verwenden ohne SQL

Beitrag von saoirse »

Hi,

ich möchte gern eine Tabelle (ähnlich einem Listcontrol in Bericht-Ansicht) erstellen, in der einfach ein paar Daten dargestellt werden sollen. Dabei soll keine Datenbank zum Einsatz kommen. Der Zugriff auf die einzelnen Datenfelder (columns / rows) muss schnell und einfach erfolgen können, da die Daten durch das Programm (nicht durch den User) geändert werden mnüssen.

Die QTableView sieht eigentlich ganz gut aus, aber leider bekomme ich nichts angezeigt. Mittels QT-Designer hab ich ein QTableView item erstellt.

Code: Alles auswählen

class WizardDialog : public QDialog
{
	Q_OBJECT

public:
	WizardDialog(QWidget *parent = 0);
	~WizardDialog();

private slots:
	void testklick(); 

private:
	Ui::WizardDialog ui;
};



WizardDialog::WizardDialog(QWidget *parent)
	: QDialog(parent)
{ 
     ui.setupUi(this);
     
     QSqlTableModel *model = new QSqlTableModel(this);
     model->setTable(tableName);
     model->setEditStrategy(QSqlTableModel::OnManualSubmit);
     model->select();

     model->setHeaderData(0, Qt::Horizontal, tr("ID"));
     model->setHeaderData(1, Qt::Horizontal, tr("First name"));
     model->setHeaderData(2, Qt::Horizontal, tr("Last name"));

      ui.tableview->setModel(model); 
}
Muss ich über das setModel gehen, um überhaupt Daten darstellen zu können? Gibt es ein einfacheres Widget, um das gleiche zu erreichen?

Gruß
saoirse
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

QTableWidget, oder war das jetzt zu einfach?
softwaremaker
Beiträge: 149
Registriert: 1. April 2009 19:25

Widget oder View

Beitrag von softwaremaker »

Es kommt darauf an, wieviele Daten angezeigt werden sollen.
Nur ein paar, dann nimm QTableWidget und für jeden Eintrag erzeugst du ein QTableWidgetItem (ohne Model).

Sind es sehr viele Daten (oder Bilder) dann nehme QTableView mit einem Model (z.b. von QAbstractTableModel ableiten):

Code: Alles auswählen

class MyTableModel : public QAbstractTableModel
{
    Q_OBJECT

public:
    MyTableModel ();

    int rowCount ( const QModelIndex & parent = QModelIndex() ) const;
    int columnCount ( const QModelIndex & parent = QModelIndex() ) const;
    QVariant data ( const QModelIndex & index, int role = Qt::DisplayRole ) const;
    QVariant headerData ( int section, Qt::Orientation orientation, int role = Qt::DisplayRole ) const;

};
Die 4 Funktionen musst du mit Leben füllen (Daten bereitstellen), schaue in die Doku/Beispiele.
padreigh
Beiträge: 340
Registriert: 13. Mai 2010 10:06

Beitrag von padreigh »

Oder nutz QWasAuchImmerView mit QStandardItemModel und füll es mit QStandardItems :) brauchste nix ableiten und das bietet imho gleich ein wenig Zeug zwecks sortieren usw. was du sonst über ein QSortFilterProxyModel zwischenschalten musst ...
Patrick (QtCreator 1.3.1, Qt 4.6.3)
---
template = subdirs
Antworten