本文整理汇总了C++中KeySigEvent::setKey方法的典型用法代码示例。如果您正苦于以下问题:C++ KeySigEvent::setKey方法的具体用法?C++ KeySigEvent::setKey怎么用?C++ KeySigEvent::setKey使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类KeySigEvent
的用法示例。
在下文中一共展示了KeySigEvent::setKey方法的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: newKeySigPalette
Palette* MuseScore::newKeySigPalette(bool basic)
{
Palette* sp = new Palette;
sp->setName(QT_TRANSLATE_NOOP("Palette", "Key Signatures"));
sp->setMag(1.0);
sp->setGrid(56, 64);
sp->setYOffset(0.0);
for (int i = 0; i < 7; ++i) {
KeySig* k = new KeySig(gscore);
k->setKey(Key(i + 1));
sp->append(k, qApp->translate("MuseScore", keyNames[i*2]));
}
for (int i = -7; i < 0; ++i) {
KeySig* k = new KeySig(gscore);
k->setKey(Key(i));
sp->append(k, qApp->translate("MuseScore", keyNames[(7 + i) * 2 + 1]));
}
KeySig* k = new KeySig(gscore);
k->setKey(Key::C);
sp->append(k, qApp->translate("MuseScore", keyNames[14]));
if (!basic) {
// atonal key signature
KeySigEvent nke;
nke.setKey(Key::C);
nke.setCustom(true);
nke.setMode(KeyMode::NONE);
KeySig* nk = new KeySig(gscore);
nk->setKeySigEvent(nke);
sp->append(nk, qApp->translate("MuseScore", keyNames[15]));
}
return sp;
}
示例2: key
KeySigEvent KeyList::key(int tick) const
{
KeySigEvent ke;
ke.setKey(Key::C);
if (empty())
return ke;
auto i = upper_bound(tick);
if (i == begin())
return ke;
return (--i)->second;
}
示例3: prevKey
KeySigEvent KeyList::prevKey(int tick) const
{
KeySigEvent kc;
kc.setKey(Key::C);
if (empty())
return kc;
auto i = upper_bound(tick);
if (i == begin())
return kc;
--i;
if (i == begin())
return kc;
return (--i)->second;
}
示例4: read
void KeyList::read(XmlReader& e, Score* cs)
{
while (e.readNextStartElement()) {
if (e.name() == "key") {
Key k;
int tick = e.intAttribute("tick", 0);
if (e.hasAttribute("custom"))
k = Key::C; // ke.setCustomType(e.intAttribute("custom"));
else
k = Key(e.intAttribute("idx"));
KeySigEvent ke;
ke.setKey(k);
(*this)[cs->fileDivision(tick)] = ke;
e.readNext();
}
else
e.unknown();
}
}
示例5: recognizeMainKeySig
void recognizeMainKeySig(QList<MTrack> &tracks)
{
bool needToFindKey = false;
const auto &opers = preferences.midiImportOperations;
const bool isHuman = opers.data()->trackOpers.isHumanPerformance.value();
if (isHuman)
needToFindKey = true;
if (!needToFindKey) {
for (const MTrack &track: tracks) {
if (track.mtrack->drumTrack())
continue;
if (!track.hasKey) {
needToFindKey = true;
break;
}
}
}
if (!needToFindKey)
return;
const Key key = findKey(tracks);
for (MTrack &track: tracks) {
if (track.mtrack->drumTrack())
continue;
if (!track.hasKey || isHuman) {
KeySigEvent ke;
ke.setKey(key);
KeyList &staffKeyList = *track.staff->keyList();
staffKeyList[0] = ke;
assignKeyListToStaff(staffKeyList, track.staff);
}
}
}
示例6: readScore
void TestSpanners::spanners04()
{
MasterScore* score = readScore(DIR + "glissando-cloning01.mscx");
QVERIFY(score);
score->doLayout();
// add a linked staff to the existing staff
// (copied and adapted from void MuseScore::editInstrList() in mscore/instrdialog.cpp)
Staff* oldStaff = score->staff(0);
Staff* newStaff = new Staff(score);
newStaff->setPart(oldStaff->part());
newStaff->initFromStaffType(oldStaff->staffType());
newStaff->setDefaultClefType(ClefTypeList(ClefType::G));
KeySigEvent ke;
ke.setKey(Key::C);
newStaff->setKey(0, ke);
score->undoInsertStaff(newStaff, 1, false);
cloneStaff(oldStaff, newStaff);
QVERIFY(saveCompareScore(score, "glissando-cloning01.mscx", DIR + "glissando-cloning01-ref.mscx"));
delete score;
}
示例7: setKey
void KeySig::setKey(Key key)
{
KeySigEvent e;
e.setKey(key);
setKeySigEvent(e);
}
示例8: editInstrList
void MuseScore::editInstrList()
{
if (cs == 0)
return;
if (!instrList)
instrList = new InstrumentsDialog(this);
else if (instrList->isVisible()) {
instrList->done(0);
return;
}
instrList->init();
MasterScore* masterScore = cs->masterScore();
instrList->genPartList(masterScore);
masterScore->startCmd();
masterScore->deselectAll();
int rv = instrList->exec();
if (rv == 0) {
masterScore->endCmd();
return;
}
ScoreView* csv = currentScoreView();
if (csv && csv->noteEntryMode()) {
csv->cmd(getAction("escape"));
qApp->processEvents();
updateInputState(csv->score());
}
masterScore->inputState().setTrack(-1);
// keep the keylist of the first pitched staff to apply it to new ones
KeyList tmpKeymap;
Staff* firstStaff = 0;
for (Staff* s : masterScore->staves()) {
KeyList* km = s->keyList();
if (!s->isDrumStaff(Fraction(0,1))) { // TODO
tmpKeymap.insert(km->begin(), km->end());
firstStaff = s;
break;
}
}
Key normalizedC = Key::C;
// normalize the keyevents to concert pitch if necessary
if (firstStaff && !masterScore->styleB(Sid::concertPitch) && firstStaff->part()->instrument()->transpose().chromatic ) {
int interval = firstStaff->part()->instrument()->transpose().chromatic;
normalizedC = transposeKey(normalizedC, interval);
for (auto i = tmpKeymap.begin(); i != tmpKeymap.end(); ++i) {
int tick = i->first;
Key oKey = i->second.key();
tmpKeymap[tick].setKey(transposeKey(oKey, interval));
}
}
// create initial keyevent for transposing instrument if necessary
auto i = tmpKeymap.begin();
if (i == tmpKeymap.end() || i->first != 0)
tmpKeymap[0].setKey(normalizedC);
//
// process modified partitur list
//
QTreeWidget* pl = instrList->partiturList();
Part* part = 0;
int staffIdx = 0;
QTreeWidgetItem* item = 0;
for (int idx = 0; (item = pl->topLevelItem(idx)); ++idx) {
PartListItem* pli = static_cast<PartListItem*>(item);
// check if the part contains any remaining staves
// mark to remove part if not
QTreeWidgetItem* ci = 0;
int staves = 0;
for (int cidx = 0; (ci = pli->child(cidx)); ++cidx) {
StaffListItem* sli = static_cast<StaffListItem*>(ci);
if (sli->op() != ListItemOp::I_DELETE)
++staves;
}
if (staves == 0)
pli->op = ListItemOp::I_DELETE;
}
item = 0;
for (int idx = 0; (item = pl->topLevelItem(idx)); ++idx) {
int rstaff = 0;
PartListItem* pli = static_cast<PartListItem*>(item);
if (pli->op == ListItemOp::I_DELETE)
masterScore->cmdRemovePart(pli->part);
else if (pli->op == ListItemOp::ADD) {
const InstrumentTemplate* t = ((PartListItem*)item)->it;
part = new Part(masterScore);
part->initFromInstrTemplate(t);
masterScore->undo(new InsertPart(part, staffIdx));
pli->part = part;
QList<Staff*> linked;
for (int cidx = 0; pli->child(cidx); ++cidx) {
StaffListItem* sli = static_cast<StaffListItem*>(pli->child(cidx));
Staff* staff = new Staff(masterScore);
staff->setPart(part);
sli->setStaff(staff);
staff->init(t, sli->staffType(), cidx);
//.........这里部分代码省略.........
示例9: if
//.........这里部分代码省略.........
if ((tick == m->tick()) && m->prevMeasure())
m = m->prevMeasure();
Segment* seg = m->getSegment(Segment::Type::Clef, tick);
if (seg->element(track))
static_cast<Clef*>(seg->element(track))->setGenerated(false);
else {
Clef* clef = new Clef(this);
clef->setClefType(clefId);
clef->setTrack(track);
clef->setParent(seg);
clef->setGenerated(false);
seg->add(clef);
}
}
// create missing KeySig
KeyList* km = s->keyList();
for (auto i = km->begin(); i != km->end(); ++i) {
int tick = i->first;
if (tick < 0) {
qDebug("read114: Key tick %d", tick);
continue;
}
if (tick == 0 && i->second == Key::C)
continue;
Measure* m = tick2measure(tick);
if (!m) //empty score
break;
Segment* seg = m->getSegment(Segment::Type::KeySig, tick);
if (seg->element(track))
static_cast<KeySig*>(seg->element(track))->setGenerated(false);
else {
KeySigEvent ke;
ke.setKey(i->second);
KeySig* ks = keySigFactory(ke);
if (ks) {
ks->setParent(seg);
ks->setTrack(track);
ks->setGenerated(false);
seg->add(ks);
}
}
}
}
for (std::pair<int,Spanner*> p : spanner()) {
Spanner* s = p.second;
if (s->type() != Element::Type::SLUR) {
if (s->type() == Element::Type::VOLTA) {
Volta* volta = static_cast<Volta*>(s);
volta->setAnchor(Spanner::Anchor::MEASURE);
}
}
if (s->type() == Element::Type::OTTAVA
|| s->type() == Element::Type::PEDAL
|| s->type() == Element::Type::TRILL
|| s->type() == Element::Type::TEXTLINE) {
qreal yo = 0;
if (s->type() == Element::Type::OTTAVA) {
// fix ottava position
yo = styleS(StyleIdx::ottavaY).val() * spatium();
if (s->placement() == Element::Placement::BELOW)
yo = -yo + s->staff()->height();
}
else if (s->type() == Element::Type::PEDAL) {