本文整理汇总了C++中Tileset::takeNextTileId方法的典型用法代码示例。如果您正苦于以下问题:C++ Tileset::takeNextTileId方法的具体用法?C++ Tileset::takeNextTileId怎么用?C++ Tileset::takeNextTileId使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Tileset
的用法示例。
在下文中一共展示了Tileset::takeNextTileId方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: addTiles
void TilesetDock::addTiles()
{
Tileset *tileset = currentTileset();
if (!tileset)
return;
Preferences *prefs = Preferences::instance();
const QString startLocation = QFileInfo(prefs->lastPath(Preferences::ImageFile)).absolutePath();
const QString filter = Utils::readableImageFormatsFilter();
const QStringList files = QFileDialog::getOpenFileNames(window(),
tr("Add Tiles"),
startLocation,
filter);
struct LoadedFile {
QString imageSource;
QPixmap image;
};
QVector<LoadedFile> loadedFiles;
for (const QString &file : files) {
const QPixmap image(file);
if (!image.isNull()) {
loadedFiles.append(LoadedFile { file, image });
} else {
QMessageBox warning(QMessageBox::Warning,
tr("Add Tiles"),
tr("Could not load \"%1\"!").arg(file),
QMessageBox::Ignore | QMessageBox::Cancel,
window());
warning.setDefaultButton(QMessageBox::Ignore);
if (warning.exec() != QMessageBox::Ignore)
return;
}
}
if (loadedFiles.isEmpty())
return;
prefs->setLastPath(Preferences::ImageFile, files.last());
QList<Tile*> tiles;
tiles.reserve(loadedFiles.size());
for (LoadedFile &loadedFile : loadedFiles) {
Tile *newTile = new Tile(tileset->takeNextTileId(), tileset);
newTile->setImage(loadedFile.image);
newTile->setImageSource(loadedFile.imageSource);
tiles.append(newTile);
}
mMapDocument->undoStack()->push(new AddTiles(mMapDocument,
tileset,
tiles));
}
示例2: addTiles
void TilesetEditor::addTiles(const QList<QUrl> &urls)
{
Tileset *tileset = currentTileset();
if (!tileset)
return;
Preferences *prefs = Preferences::instance();
struct LoadedFile {
QUrl imageSource;
QPixmap image;
};
QVector<LoadedFile> loadedFiles;
// If the tile is already in the tileset, warn user and confirm addition
bool dontAskAgain = false;
bool rememberOption = true;
for (const QUrl &url : urls) {
if (!(dontAskAgain && rememberOption) && hasTileInTileset(url, *tileset)) {
if (dontAskAgain)
continue;
QCheckBox *checkBox = new QCheckBox(tr("Apply this action to all tiles"));
QMessageBox warning(QMessageBox::Warning,
tr("Add Tiles"),
tr("Tile \"%1\" already exists in the tileset!").arg(url.toString()),
QMessageBox::Yes | QMessageBox::No,
mMainWindow->window());
warning.setDefaultButton(QMessageBox::Yes);
warning.setInformativeText(tr("Add anyway?"));
warning.setCheckBox(checkBox);
int warningBoxChoice = warning.exec();
dontAskAgain = checkBox->checkState() == Qt::Checked;
rememberOption = warningBoxChoice == QMessageBox::Yes;
if (!rememberOption)
continue;
}
const QPixmap image(url.toLocalFile());
if (!image.isNull()) {
loadedFiles.append(LoadedFile { url, image });
} else {
// todo: support lazy loading of selected remote files
QMessageBox warning(QMessageBox::Warning,
tr("Add Tiles"),
tr("Could not load \"%1\"!").arg(url.toString()),
QMessageBox::Ignore | QMessageBox::Cancel,
mMainWindow->window());
warning.setDefaultButton(QMessageBox::Ignore);
if (warning.exec() != QMessageBox::Ignore)
return;
}
}
if (loadedFiles.isEmpty())
return;
const QString lastLocalFile = urls.last().toLocalFile();
if (!lastLocalFile.isEmpty())
prefs->setLastPath(Preferences::ImageFile, lastLocalFile);
QList<Tile*> tiles;
tiles.reserve(loadedFiles.size());
for (LoadedFile &loadedFile : loadedFiles) {
Tile *newTile = new Tile(tileset->takeNextTileId(), tileset);
newTile->setImage(loadedFile.image);
newTile->setImageSource(loadedFile.imageSource);
tiles.append(newTile);
}
mCurrentTilesetDocument->undoStack()->push(new AddTiles(mCurrentTilesetDocument, tiles));
}