本文整理汇总了C++中ChordRest::lyricsList方法的典型用法代码示例。如果您正苦于以下问题:C++ ChordRest::lyricsList方法的具体用法?C++ ChordRest::lyricsList怎么用?C++ ChordRest::lyricsList使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ChordRest
的用法示例。
在下文中一共展示了ChordRest::lyricsList方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: addFiguredBass
FiguredBass* Score::addFiguredBass()
{
Element* el = selection().element();
if (el == 0 || (el->type() != NOTE && el->type() != FIGURED_BASS)) {
QMessageBox::information(0,
QMessageBox::tr("MuseScore:"),
QMessageBox::tr("No note or figured bass selected:\n"
"Please select a single note or figured bass and retry operation\n"),
QMessageBox::Ok, QMessageBox::NoButton);
return 0;
}
ChordRest* cr;
if (el->type() == NOTE)
cr = static_cast<Note*>(el)->chord();
else if (el->type() == FIGURED_BASS)
cr = static_cast<FiguredBass*>(el)->chordRest();
else
return 0;
QList<Lyrics*> ll = cr->lyricsList();
int no = ll.size();
FiguredBass* fb = new FiguredBass(this);
fb->setTrack(cr->track());
fb->setParent(cr);
fb->setNo(no);
undoAddElement(fb);
select(fb, SELECT_SINGLE, 0);
return fb;
}
示例2: leadingPattern
void Lyrics::layout1()
{
setPos(textStyle().offset(spatium()));
Text::layout1();
if (!parent()) // palette & clone trick
return;
ChordRest* cr = chordRest();
const QList<Lyrics*>* ll = &(cr->lyricsList());
qreal lh = lineSpacing() * score()->styleD(StyleIdx::lyricsLineHeight);
int line = ll->indexOf(this);
qreal y = lh * line + point(score()->styleS(StyleIdx::lyricsDistance));
qreal x = 0.0;
//
// parse leading verse number and/or punctuation, so we can factor it into layout separately
// TODO: provide a way to disable this
//
bool hasNumber = false; // _verseNumber;
qreal adjust = 0.0;
QString s = plainText(true);
// find:
// 1) string of numbers and non-word characters at start of syllable
// 2) at least one other character (indicating start of actual lyric)
QRegularExpression leadingPattern("(^[\\d\\W]+)([^\\d\\W]+)");
QRegularExpressionMatch leadingMatch = leadingPattern.match(s);
if (leadingMatch.hasMatch()) {
// leading string
QString s1 = leadingMatch.captured(1);
// actual lyric
//QString s2 = leadingMatch.captured(2);
Text leading(*this);
leading.setPlainText(s1);
leading.layout1();
adjust = leading.width();
if (!s1.isEmpty() && s1[0].isDigit())
hasNumber = true;
}
if (textStyle().align() & AlignmentFlags::HCENTER) {
//
// center under notehead, not origin
// however, lyrics that are melismas or have verse numbers will be forced to left alignment
// TODO: provide a way to disable the automatic left alignment
//
qreal maxWidth;
if (cr->type() == Element::Type::CHORD)
maxWidth = static_cast<Chord*>(cr)->maxHeadWidth();
else
maxWidth = cr->width(); // TODO: exclude ledger line for multivoice rest?
qreal nominalWidth = symWidth(SymId::noteheadBlack);
if (!isMelisma() && !hasNumber) // center under notehead
x += nominalWidth * .5 - cr->x() - adjust * 0.5;
else // force left alignment
x += (width() + nominalWidth - maxWidth) * .5 - cr->x() - adjust;
}
else {
// even for left aligned syllables, ignore leading verse numbers and/or punctuation
x -= adjust;
}
rxpos() += x;
rypos() += y;
if (_ticks > 0 || _syllabic == Syllabic::BEGIN || _syllabic == Syllabic::MIDDLE) {
if (_separator == nullptr) {
_separator = new LyricsLine(score());
_separator->setTick(cr->tick());
score()->addUnmanagedSpanner(_separator);
}
_separator->setParent(this);
_separator->setTick(cr->tick());
_separator->setTrack(track());
_separator->setTrack2(track());
#if defined(USE_FONT_DASH_METRIC)
// if font parameters different from font cached values, compute new dash values from font metrics
if (textStyle().family() != g_fontFamily && textStyle().size() != g_fontSize) {
QFontMetricsF fm = textStyle().fontMetrics(spatium());
QRectF r = fm.tightBoundingRect("\u2013"); // U+2013 EN DASH
g_cachedDashY = _dashY = r.y() + (r.height() * HALF);
g_cachedDashLength = _dashLength = r.width();
#if defined(USE_FONT_DASH_TICKNESS)
g_cachedDashThickness = _dashThickness = r.height();
#endif
g_fontFamily = textStyle().family();
g_fontSize = textStyle().size();
}
// if same font, use cached values
else {
_dashY = g_cachedDashY;
_dashLength = g_cachedDashLength;
#if defined(USE_FONT_DASH_TICKNESS)
_dashThickness = g_cachedDashThickness;
#endif
}
#endif
}
else
if (_separator != nullptr) {
//.........这里部分代码省略.........