MySql QTableView und Suche
Verfasst: 14. Mai 2007 15:01
Lb. QT Freaks
Habe vor einer Woche mit C++ und QT begonnen. Bitte steinigt mich nicht mit fehlt noch der absolute Durchblick.
Zu meinem Problem:
Ich möchte ein kleines Programmschreiben, welches mir Daten aus der DB (MySQL) in einer Tablle (QTableView) anzeigt. Nun würde ich gerne eine kleine Suchfunktion integrien. Leider scheitere ich dabei total. Kann mir jemand weiterhelfen?
Ich habe im Moment 3 Files. main.cpp, mainWindow.cpp, und find.cpp.
Da mein Programm etwas umfangreicher wird, habe ich die Suchfunktion ausgelagert. In mainWindow.cpp erstelle ich die QTableView und das QSqlModel. Die DB Verbindung funktioniert und die Daten werden angezeigt. Die Suchfunktion wird in einem eigenen Widget aufgerufen. Wie kann ich nun in der DB bzw. Tabelle suchen??? Hat jemand eine Anleitung oder eine Idee.
Hier ein wenig Code:
Die find.cpp wurde aus einem Tutorial übernommen! Leider habe ich keine Ahnung wie ich diese ändern muss, wenn ich in der Tablle bzw. DB suchen will.
Habe vor einer Woche mit C++ und QT begonnen. Bitte steinigt mich nicht mit fehlt noch der absolute Durchblick.
Zu meinem Problem:
Ich möchte ein kleines Programmschreiben, welches mir Daten aus der DB (MySQL) in einer Tablle (QTableView) anzeigt. Nun würde ich gerne eine kleine Suchfunktion integrien. Leider scheitere ich dabei total. Kann mir jemand weiterhelfen?
Ich habe im Moment 3 Files. main.cpp, mainWindow.cpp, und find.cpp.
Da mein Programm etwas umfangreicher wird, habe ich die Suchfunktion ausgelagert. In mainWindow.cpp erstelle ich die QTableView und das QSqlModel. Die DB Verbindung funktioniert und die Daten werden angezeigt. Die Suchfunktion wird in einem eigenen Widget aufgerufen. Wie kann ich nun in der DB bzw. Tabelle suchen??? Hat jemand eine Anleitung oder eine Idee.
Hier ein wenig Code:
Die find.cpp wurde aus einem Tutorial übernommen! Leider habe ich keine Ahnung wie ich diese ändern muss, wenn ich in der Tablle bzw. DB suchen will.
Code: Alles auswählen
// mainWindow.cpp
void epmanager::createWindows()
{
// SQL Table Model inizialisieren
model = new QSqlTableModel(this);
model->setTable("tx_submission_data");
model->setEditStrategy(QSqlTableModel::OnFieldChange);
model->removeColumns(0,8);
model->removeColumn(15);
model->removeColumn(16);
model->removeColumn(18);
model->removeColumn(19);
model->removeColumn(22);
model->setSort(1, Qt::AscendingOrder);
model->setHeaderData(0, Qt::Horizontal, QObject::tr("Vorname"));
model->setHeaderData(1, Qt::Horizontal, QObject::tr("Nachname"));
model->setHeaderData(2, Qt::Horizontal, QObject::tr("Geschlecht"));
model->setHeaderData(18, Qt::Horizontal, QObject::tr("Startnummer"));
model->setHeaderData(19, Qt::Horizontal, QObject::tr("Gesamt-Status"));
model->select();
//Detail Ansicht TableView
detailView = new QTableView();
detailView->setModel(model);
detailView->setSortingEnabled(true);
detailView->setAlternatingRowColors(true);
setCentralWidget(detailView);
}
Code: Alles auswählen
//find.cpp
#include <QtGui>
#include "finddialog.h"
FindDialog::FindDialog(QWidget *parent)
: QDialog(parent)
{
label = new QLabel(tr("Suche &nach &Name:"));
lineEdit = new QLineEdit;
label->setBuddy(lineEdit);
caseCheckBox = new QCheckBox(tr("Großschreibung beachten:"));
backwardCheckBox = new QCheckBox(tr("Suche &rueckwaerts:"));
findButton = new QPushButton(tr("&Suchen"));
findButton->setDefault(true);
findButton->setEnabled(false);
closeButton = new QPushButton(tr("Schliessen"));
connect(lineEdit, SIGNAL(textChanged(const QString &)),
this, SLOT(enableFindButton(const QString &)));
connect(findButton, SIGNAL(clicked()),
this, SLOT(findClicked()));
connect(closeButton, SIGNAL(clicked()),
this, SLOT(close()));
QHBoxLayout *topLeftLayout = new QHBoxLayout;
topLeftLayout->addWidget(label);
topLeftLayout->addWidget(lineEdit);
QVBoxLayout *leftLayout = new QVBoxLayout;
leftLayout->addLayout(topLeftLayout);
leftLayout->addWidget(caseCheckBox);
leftLayout->addWidget(backwardCheckBox);
QVBoxLayout *rightLayout = new QVBoxLayout;
rightLayout->addWidget(findButton);
rightLayout->addWidget(closeButton);
rightLayout->addStretch();
QHBoxLayout *mainLayout = new QHBoxLayout;
mainLayout->addLayout(leftLayout);
mainLayout->addLayout(rightLayout);
setLayout(mainLayout);
setWindowTitle(tr("Suchen und Finden"));
setFixedHeight(sizeHint().height());
}
void FindDialog::findClicked()
{
QString text = lineEdit->text();
Qt::CaseSensitivity cs =
caseCheckBox->isChecked() ? Qt::CaseSensitive
: Qt::CaseInsensitive;
if (backwardCheckBox->isChecked()) {
emit findPrevious(text, cs);
} else {
emit findNext(text, cs);
}
}
void FindDialog::enableFindButton(const QString &text)
{
findButton->setEnabled(!text.isEmpty());
}