本文整理汇总了C++中QSqlTableModel::fetchMore方法的典型用法代码示例。如果您正苦于以下问题:C++ QSqlTableModel::fetchMore方法的具体用法?C++ QSqlTableModel::fetchMore怎么用?C++ QSqlTableModel::fetchMore使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类QSqlTableModel
的用法示例。
在下文中一共展示了QSqlTableModel::fetchMore方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: showChildrenOf
void CollectionTreeWidget::showChildrenOf(QModelIndex index) {
CollectionTreeWidgetItem *item = (CollectionTreeWidgetItem*)itemFromIndex(index);
// If the item pressed was an artist, add albums
if (item->getNodeLevel() == LevelArtist) {
QString artist = item->text(0).toUtf8();
// Looks for artist id
QString artistId = QString::number(item->getId());
// Looks for artist albums
QSqlTableModel *albumModel = service->albumModel();
albumModel->setFilter("id_artist = " + artistId);
albumModel->select();
while (albumModel->canFetchMore()) albumModel->fetchMore();
int total = albumModel->rowCount();
for (int i = 0; i < total; i++) {
QString album = albumModel->record(i).value(albumModel->fieldIndex("title")).toString();
unsigned int id = albumModel->record(i).value(albumModel->fieldIndex("id")).toInt();
addAlbum(artist, album, id);
}
delete albumModel;
}
// If the item pressed was an album, add songs
else if (item->getNodeLevel() == LevelAlbum) {
QString albumId = QString::number(item->getId());
QSqlTableModel *musicModel = service->musicModel();
musicModel->setFilter("id_album = " + albumId);
musicModel->setSort(musicModel->fieldIndex("track_number"), Qt::AscendingOrder);
musicModel->select();
while (musicModel->canFetchMore()) musicModel->fetchMore();
int total = musicModel->rowCount();
for (int i = 0; i < total; i++) {
QString path = musicModel->record(i).value(musicModel->fieldIndex("path")).toString();
unsigned int id = musicModel->record(i).value(musicModel->fieldIndex("id")).toInt();
Music *music = new Music(QUrl(path));
addMusic(music, id);
delete music;
}
}
expand(index);
}
示例2: parseQuestions
void EngineerExam::parseQuestions(QString filename) {
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName(filename);
if (!db.open()) {
qCritical() << trUtf8("Nie można otworzyć bazy danych!");
}
QSqlTableModel question;
question.setTable("Question");
question.select();
QSqlTableModel answers;
answers.setTable("Answer");
answers.select();
QStringList qsl;
int i = 0;
while (question.canFetchMore()) {
question.fetchMore();
for (; i < question.rowCount(); ++i) {
qsl.clear();
quint32 id = question.record(i).value("Id").toUInt();
QString text = question.record(i).value("Text").toString();
Question q;
q.setId(id);
q.setQuestion(text);
answers.setFilter(QString("`id_Question` = %1").arg(id));
QString a1 = answers.record(0).value("Text").toString();
QString a2 = answers.record(1).value("Text").toString();
QString a3 = answers.record(2).value("Text").toString();
qsl << a1 << a2 << a3;
bool correct1 = answers.record(0).value("IsTrue").toBool();
bool correct2 = answers.record(1).value("IsTrue").toBool();
bool correct3 = answers.record(2).value("IsTrue").toBool();
if (correct1) {
q.setCorrectAnswer(0);
} else if (correct2) {
q.setCorrectAnswer(1);
} else if (correct3) {
q.setCorrectAnswer(2);
}
q.setAnswers(qsl);
tmpList.append(q);
}
}
}
示例3: QString
QTreeWidgetItem *CollectionTreeWidget::addAlbum(QString artist, QString album, unsigned int albumId) {
// Find id in database if we don't have it
if (albumId == 0) {
QSqlTableModel *model = service->collectionModel();
// SQLite used two single quotes to escape a single quote! :)
QString filter = "artist = '" + QString(artist).replace("'","''") + "' AND "
"album = '" + QString(album).replace("'","''") + "'";
model->setFilter(filter);
model->select();
while (model->canFetchMore()) model->fetchMore();
int total = model->rowCount();
if (total > 0) {
albumId = model->record(0).value(model->fieldIndex("id_album")).toInt();
}
else {
qDebug("ERROR: no album found! -- " + model->filter().toUtf8());
return NULL;
}
}
// Looks for the artist
QTreeWidgetItem *newAlbumNode; // The node with the album, whether it exists or not
QTreeWidgetItem *artistItem;
artistItem = addArtist(artist);
// Look for album
for (int i = 0; i < artistItem->childCount(); i++) {
if (artistItem->child(i)->text(0) == album) {
newAlbumNode = artistItem->child(i);
return newAlbumNode;
}
}
// Create our new album node and add it if it was not found
newAlbumNode = new CollectionTreeWidgetItem(LevelAlbum, albumId, (QTreeWidget*)0);
newAlbumNode->setText(0, album);
newAlbumNode->setChildIndicatorPolicy(QTreeWidgetItem::ShowIndicator);
// Set icon
newAlbumNode->setIcon(0, IconFactory::fromTheme("media-cdrom"));
artistItem->addChild(newAlbumNode);
artistItem->sortChildren(0, Qt::AscendingOrder);
return newAlbumNode;
}
示例4: setColumnCount
/// @brief Constructor
CollectionTreeWidget::CollectionTreeWidget()
{
setColumnCount(1);
header()->hide(); // hide headers
setDragEnabled(true);
setAcceptDrops(true);
setSelectionMode(QAbstractItemView::ExtendedSelection);
service = new CollectionService();
// Add songs that currently exist on database
QSqlTableModel *artistModel = service->artistModel();
artistModel->select();
// TODO: verify if we can put fetchmore() inside the for loop.
// TODO: put this task in background... URGENT
while (artistModel->canFetchMore()) artistModel->fetchMore();
int total = artistModel->rowCount();
for (int i = 0; i < total; i++) {
QString artist = artistModel->record(i).value(artistModel->fieldIndex("name")).toString();
unsigned int id = artistModel->record(i).value(artistModel->fieldIndex("id")).toInt();
addArtist(artist, id);
}
delete artistModel;
/*
* TODO: modify the slots in order to add only the artist, not the music.
* The album and song must be shown only if the node is already expanded.
*/
connect(service, SIGNAL(songAdded(Music*)), this, SLOT(addMusic(Music*)));
connect(service, SIGNAL(songRemoved(unsigned int)), this, SLOT(removeMusic(uint)));
connect(this, SIGNAL(doubleClicked(QModelIndex)), this, SLOT(doubleClickAt(QModelIndex)));
connect(this, SIGNAL(expanded(QModelIndex)), this, SLOT(showChildrenOf(QModelIndex)));
/*
* We shall emit those signals to show or hide the widget that will
* give the feedback that the collection is being scanned.
*/
connect(service, SIGNAL(scanning()), this, SIGNAL(scanning()));
connect(service, SIGNAL(listUpdated()), this, SIGNAL(listUpdated()));
// Start service to find new songs and remove the inexistent ones
service->start(QThread::LowestPriority);
}
示例5: while
CollectionTreeWidgetItem *CollectionTreeWidget::addMusic(Music *music, unsigned int id) {
// Find id in database if we don't have it
if (id == 0) {
QSqlTableModel *model = service->collectionModel();
// SQLite used two single quotes to escape a single quote! :)
QString filter = "artist = '" + music->getArtist().replace("'","''") + "' AND "
"album = '" + music->getAlbum().replace("'","''") + "' AND "
"music = '" + music->getTitle().replace("'","''") + "'";
model->setFilter(filter);
model->select();
while (model->canFetchMore()) model->fetchMore();
int total = model->rowCount();
if (total > 0) {
id = model->record(0).value(model->fieldIndex("id_music")).toInt();
}
else {
qDebug("ERROR: no songs found! -- " + model->filter().toUtf8());
return NULL;
}
}
// Looks for the album
QTreeWidgetItem *albumItem = addAlbum(music->getArtist(), music->getAlbum());
// Create our new music node and add it if it was not found
removeMusic(id);
CollectionTreeWidgetItem *newMusicNode = new CollectionTreeWidgetItem(LevelMusic, id, (QTreeWidget*)0);
newMusicNode->setText(0, music->getTitle());
newMusicNode->setIcon(0, IconFactory::fromTheme("sound"));
albumItem->addChild(newMusicNode);
musicList.append(newMusicNode);
return newMusicNode;
}