finke
Eroberer
HI,
da ich notorisch Geburtstage vergesse, Bin ich gerade dabei mir eine SQLite DB aufzubauen, welche die ganzen Daten der leute die ich so in meinem Umfeld nicht vergessen sollte enthält.
Nun Brauche ich nur noch ein Programm zum auslesen. Hab mir gedacht, kannste gleich kombinieren, und schauste obde das Mit QT hin bekommst. Gedacht getan, das Buch über QT4 zur hand genommen, mal bisschen in den Beispielen rumgeblätert, und 2 sachen versucht.
Zuerst eine Ausgabe der Daten in einem Widget nach Buch. Lies sich ausführen, allerdings kam nur ein Weiser Rahen:
Fehlschlag, leeres fenster, ka wieso.
Also ich noch was anderes Probiert:
Resultat: unter Windows nen ominöser Fehlercode (auf Wunsch schau ich nochmal nach welcher), undter Linux nur Speicherzugriffsfehler.
Bin an und für sich nen Anfänger mit QT, kann mir wer sagen, in welcher Zeile ich den Fehler hab?
PS: ich weis das das mit Sicherheit kein sicheres Programm ist, kann mir da wer noch Tipps geben? Oder sollt ich lieber das alles weg werfen und nochmal total neu anfangen?
PS: am ende sollte das mal so sein, das das als ne art Plasmied unter KDE, und halt was vergleichbares unter win läuft, welches mir die nächsten 3 GB's anzeigt. wenn man mit der maus drüber geht und drauf klickt soll ne Tabelle angezeigt werden, in welcher man die Daten ändern kann.
PS: für den unwahrscheinlichen Fall das es heute Leute gibt die mir nen fertiges Programm dazu anbieten, muss ich leider ablehnen, mein Haupt Ziel ist nicht das Programm sondern der Lehrnefekt beim schreiben.
da ich notorisch Geburtstage vergesse, Bin ich gerade dabei mir eine SQLite DB aufzubauen, welche die ganzen Daten der leute die ich so in meinem Umfeld nicht vergessen sollte enthält.
Nun Brauche ich nur noch ein Programm zum auslesen. Hab mir gedacht, kannste gleich kombinieren, und schauste obde das Mit QT hin bekommst. Gedacht getan, das Buch über QT4 zur hand genommen, mal bisschen in den Beispielen rumgeblätert, und 2 sachen versucht.
Zuerst eine Ausgabe der Daten in einem Widget nach Buch. Lies sich ausführen, allerdings kam nur ein Weiser Rahen:
Code:
#ifndef EDITWIDGET_H
#define EDITWIDGET_H
#include <QtGui>
#include <QtSql>
class EditWidget : public QWidget
{
Q_OBJECT
private:
QTableView* tv;
QSqlTableModel* tm;
QSqlDatabase db;
public:
EditWidget(QWidget *parent = 0);
~EditWidget();
};
#endif // EDITWIDGET_H
Code:
#include "editwidget.h"
EditWidget::EditWidget(QWidget *parent)
: QWidget(parent)
{
db= QSqlDatabase::addDatabase("QSQLITE");
tv = new QTableView(this);
tm =new QSqlTableModel();
db.setHostName("MyServer");
db.setDatabaseName("I:/server2go/htdocs/db/.htdaten.db");
if(db.open()){
tm->setTable("daten");
tm->select();
tm->setEditStrategy(QSqlTableModel::OnFieldChange);
tv->setModel(tm);
tv->setWindowTitle("Test");
tv->show();
}
}
EditWidget::~EditWidget()
{
db.close();
}
Code:
#include <QtGui/QApplication>
#include "editwidget.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
EditWidget w;
w.show();
return a.exec();
}
Also ich noch was anderes Probiert:
Code:
#ifndef WINDOW_H
#define WINDOW_H
#include <QWidget>
#include <QGridLayout>
#include <QLabel>
#include <QtSql>
class Window : public QWidget
{
private:
QSqlTableModel* tm;
QSqlDatabase db;
QGridLayout* grid;
QLabel* geb;
QLabel *lab[2][3];
public:
Window();
~Window();
};
#endif // WINDOW_H
Code:
#include "window.h"
#include <QString>
#include <QSqlRecord>
Window::Window()
{
geb = new QLabel("Nächsten Geburtstage am:");
grid = new QGridLayout;
setLayout(grid);
db= QSqlDatabase::addDatabase("QSQLITE");
tm =new QSqlTableModel();
db.setHostName("MyServer");
db.setDatabaseName("/media/disk/server2go/htdocs/db/.htdaten.db");
if(db.open()){
tm->setTable("daten");
tm->setFilter("");
tm->select();
for(int i = 0;i<3;i++){
QSqlRecord record = tm->record(i);
QString tmp;
tmp = record.value("name").toString();
tmp += ", ";
tmp += record.value("vorname").toString();
tmp += ": ";
lab[0][i] = new QLabel(tmp);
lab[1][i] = new QLabel(record.value("geburtstag").toString());
}
grid->addWidget(geb, 0,0);
for(int i = 0; i<2;i++){
for(int j = 0; j<3;i++){
grid->addWidget(lab[i][j],(i+1) ,j);
}
}
}
}
Window::~Window()
{
db.close();
}
Code:
#include <QtGui/QApplication>
#include "window.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Window w;
w.show();
return a.exec();
}
Resultat: unter Windows nen ominöser Fehlercode (auf Wunsch schau ich nochmal nach welcher), undter Linux nur Speicherzugriffsfehler.
Bin an und für sich nen Anfänger mit QT, kann mir wer sagen, in welcher Zeile ich den Fehler hab?
PS: ich weis das das mit Sicherheit kein sicheres Programm ist, kann mir da wer noch Tipps geben? Oder sollt ich lieber das alles weg werfen und nochmal total neu anfangen?
PS: am ende sollte das mal so sein, das das als ne art Plasmied unter KDE, und halt was vergleichbares unter win läuft, welches mir die nächsten 3 GB's anzeigt. wenn man mit der maus drüber geht und drauf klickt soll ne Tabelle angezeigt werden, in welcher man die Daten ändern kann.
PS: für den unwahrscheinlichen Fall das es heute Leute gibt die mir nen fertiges Programm dazu anbieten, muss ich leider ablehnen, mein Haupt Ziel ist nicht das Programm sondern der Lehrnefekt beim schreiben.
Zuletzt bearbeitet: