QT TableView
QT TableView
Hallo,
ich möchte Daten in einer Tabelle anzeigen, die Daten kommen aus einer SQL Datenbank.
also für die Datenbank nehme ich die DataBase und Query Klasse.
Wenn ich eine Tabelle möchte, die man nur angucken kann,
eignet sich da TableView oder nimmt man da lieber was anderes?
Das möchte ja auch ein QAbstractItemModel haben, jetzt hab ich noch was von einem SQLModel gelesen, was eignet sich denn nun dafür am besten?
und bei diesen QStyles hab ich gelesen, dass man die nicht verwenden soll.
Warum? funktionieren die nicht gut außerhalb von QT?
nvidia
ich möchte Daten in einer Tabelle anzeigen, die Daten kommen aus einer SQL Datenbank.
also für die Datenbank nehme ich die DataBase und Query Klasse.
Wenn ich eine Tabelle möchte, die man nur angucken kann,
eignet sich da TableView oder nimmt man da lieber was anderes?
Das möchte ja auch ein QAbstractItemModel haben, jetzt hab ich noch was von einem SQLModel gelesen, was eignet sich denn nun dafür am besten?
und bei diesen QStyles hab ich gelesen, dass man die nicht verwenden soll.
Warum? funktionieren die nicht gut außerhalb von QT?
nvidia
Also wenn ich das richtig verstanden habe möchtest Du hinterher mit den Daten in der Tabell mix mehr machen? Kontextmenü oder sowas ähnliches?
Dann sollte eigentlich QTabelWidget reichen.
Dann sollte eigentlich QTabelWidget reichen.
"Der erste Trunk aus dem Becher der Naturwissenschaften macht atheistisch, aber auf dem Grund des Bechers wartet Gott."
(W. Heisenberg)
(W. Heisenberg)
Re: QT TableView
QTableView + QSqlQueryModel + QTableView::setEditTriggers(QAbstractItemView::NoEditTriggers);Nvidia hat geschrieben:ich möchte Daten in einer Tabelle anzeigen, die Daten kommen aus einer SQL Datenbank.
also für die Datenbank nehme ich die DataBase und Query Klasse.
Quelle bitte. Das wäre ja ein Krampf wenn man keine QStyles verwenden dürfte...und bei diesen QStyles hab ich gelesen, dass man die nicht verwenden soll.
Warum? funktionieren die nicht gut außerhalb von QT?
-
Troll.Soft
- Beiträge: 190
- Registriert: 18. Juni 2008 09:52
- Wohnort: Hamburg
Du kannst den Typ der Fehlermeldung von lastError() abfragen. Dürfte sich kaum in naher Zukunft ändern und sollte bei unterschiedlichen Datenbanken gleich sein
tschüß
Troll.Soft
Code: Alles auswählen
type() QSqlError::StatementError()Troll.Soft
-
Troll.Soft
- Beiträge: 190
- Registriert: 18. Juni 2008 09:52
- Wohnort: Hamburg
Oops,
obige Antwort gehört eindeutig in einen andern Thread.
Du möchtest wohl so etwas wissen
einfache Sache mit den Qt-Modellen und Views.
tschüß
Troll.Soft
obige Antwort gehört eindeutig in einen andern Thread.
Du möchtest wohl so etwas wissen
Code: Alles auswählen
QSqlTableModel* Model = new QSqlTableModel(Dlg, Db);
Model->setTable(TableName);
Model->select();
View = new QTableView(Dlg);
View->setModel(Model);
View->show();tschüß
Troll.Soft
ja es gibt da so viele tables und modelle
da steht so was, wenn ich das richtig verstehe:
http://doc.trolltech.com/4.6/qwidget.html#setStyle
da steht so was, wenn ich das richtig verstehe:
http://doc.trolltech.com/4.6/qwidget.html#setStyle
Komplett anderer Kontext! Es geht darum, einen Style einem einzelnen Widget zuzuweisen. Dadurch wird die GUI im Aussehen inkonsitent (wenn man sich nicht nen Proxy-Style geschrieben hat).Nvidia hat geschrieben:da steht so was, wenn ich das richtig verstehe:
http://doc.trolltech.com/4.6/qwidget.html#setStyle
Das andere Warning geht um Style Sheets.
Was sollte inkosistent wohl bedeuten? Der vom User gesetzte Style ist dem User bekannt. Der Programmierer meint, er müsste jetzt einzelnen Elementen einen neuen Style verpassen, und verwendet QWidget::setStyle(). Und jetzt sind auf einmal Buttons nicht mehr gerundet sondern Eckig, verwenden die palette() in anderer Art, malen Rahmen anders, uswusf. Und das in Koexistenz mit dem normalen globalen Style in einer App!Nvidia hat geschrieben:was heißt inkonsistent? macht das irgentwas großes aus? oder kann man das missachten
Sowas ist ein Krampf! Fürs Auge und fürs Arbeiten.
Deshalb "use with care"!
Und ich würde (fast) nirgendwo davon ausgehen, dass wenn etwas als "nicht so doll", "falsch" oder (sieht man echt öfters) "undefiniertes Verhalten" bezeichnet ist man die Forderungen missachten sollte... Vor allem nicht wenn es in einer Programmierer-Doku steht und diese auch noch diejenige für Qt ist
ok hab ich verstanden.
Also ich hab jetzt versucht mit Hilfe von dem sql-cachedtable Beispiel
meine Datenbank zu bauen. Aber ich krieg ein paar Fehler.
QSqlDatabase: SQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QODBC3 QODBC
QSqlQuery::prepare: database not open
QSqlQuery::exec: database not open
QSqlQuery::exec: database not open
Driver?! im Beispiel steht nichts weiter von einem Driver.
Aber vielleicht hab ich was vergessen hier mein Code:
//Normale Quelldatei
Was hab ich falsch gemacht?
Also ich hab jetzt versucht mit Hilfe von dem sql-cachedtable Beispiel
meine Datenbank zu bauen. Aber ich krieg ein paar Fehler.
QSqlDatabase: SQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QODBC3 QODBC
QSqlQuery::prepare: database not open
QSqlQuery::exec: database not open
QSqlQuery::exec: database not open
Driver?! im Beispiel steht nichts weiter von einem Driver.
Aber vielleicht hab ich was vergessen hier mein Code:
Code: Alles auswählen
#ifndef SQL_H
#define SQL_H
#include <QSqlQuery>
#include <QSqlDatabase>
static void database()
{
QSqlDatabase db = QSqlDatabase::addDatabase("SQL");
db.open();
QSqlQuery query;
query.prepare("INSERT INTO person (forename, surname) "
"VALUES (:forename, :surname)");
query.bindValue(":forename", "Bart");
query.bindValue(":surname", "Simpson");
query.exec();
}
#endif // SQL_H
Code: Alles auswählen
#include <QApplication>
#include <QtGui>
#include "mainwindow.h"
#include "SQL.h"
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
database();
MainWindow Q;
Q.resize(880,550);
Q.show();
return app.exec();
}
Code: Alles auswählen
QTableView *new_view = new QTableView();
QSqlQueryModel *model = new QSqlQueryModel(new_view);
model->setHeaderData(0, Qt::Horizontal, tr("First name"));
model->setHeaderData(1, Qt::Horizontal, tr("Last name"));
model->setQuery("SELECT firstname, surname FROM person");
new_view->setModel(model);
new_view->setEditTriggers(QAbstractItemView::NoEditTriggers);
QtableWidget
Hallo,
wo wird welcher Treiber geladen???
Ich würde sagen PC ausschalten, in Laden gehen und ein Qt-Buch besorgen.
Das Buch durcharbeiten und wenn dann noch Fragen sind sich wieder melden.
nichts für ungut. bk
wo wird welcher Treiber geladen???
Ich würde sagen PC ausschalten, in Laden gehen und ein Qt-Buch besorgen.
Das Buch durcharbeiten und wenn dann noch Fragen sind sich wieder melden.
nichts für ungut. bk
Doku nicht ordentlich gelesen.Nvidia hat geschrieben:Was hab ich falsch gemacht?
Fehlermeldung nicht gelesen:
Code: Alles auswählen
QSqlDatabase: available drivers: QSQLITE QODBC3 QODBCCode: Alles auswählen
QSqlDatabase db = QSqlDatabase::addDatabase("SQL"); http://doc.qt.nokia.com/4.6/qsqldatabas ... ddDatabase
-
Troll.Soft
- Beiträge: 190
- Registriert: 18. Juni 2008 09:52
- Wohnort: Hamburg
He Jungs,Nvidia hat geschrieben: QSqlDatabase: SQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QODBC3 QODBC
Aber vielleicht hab ich was vergessen hier mein Code:
QSqlDatabase db = QSqlDatabase::addDatabase("SQL");
nun seid nicht zu hart zu ihm. Wenn man sich das erste Mal an Qt-Sql versucht ist nicht alles sofort einsichtig. Auch für einen erfahrenen Programmierer.
Dein System kennt genau die oben aufgeführten Treiber "available drivers: QSQLITE QODBC3 QODBC".
addDatabase erwartet genau einen dieser vorhandenen Treiber.
Code: Alles auswählen
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");Code: Alles auswählen
Driver Class name Constructor arguments File to include
QPSQL QPSQLDriver PGconn *connection qsql_psql.cpp
QMYSQL QMYSQLDriver MYSQL *connection qsql_mysql.cpp
QOCI QOCIDriver OCIEnv *environment, OCISvcCtx *serviceContext qsql_oci.cpp
QODBC QODBCDriver SQLHANDLE environment, SQLHANDLE connection qsql_odbc.cpp
QDB2 QDB2 SQLHANDLE environment, SQLHANDLE connection qsql_db2.cpp
QTDS QTDSDriver LOGINREC *loginRecord, DBPROCESS *dbProcess, const QString &hostName qsql_tds.cpp
QSQLITE QSQLiteDriver sqlite *connection qsql_sqlite.cpp
QIBASE QIBaseDriver isc_db_handle connection qsql_ibase.cpp
Troll.Soft