19 #include <QApplication>
75 #if defined(Q_OS_LINUX)
117 #if defined(Q_OS_WIN)
159 #if defined(Q_OS_MAC)
202 class PianoKeybd::PianoKeybdPrivate {
204 PianoKeybdPrivate(): m_rotation(0), m_scene(nullptr), m_rawMap(nullptr)
206 ~PianoKeybdPrivate() =
default;
247 d->m_scene->setRawKeyboardMode(
false);
260 return d->m_scene->getPianoHandler();
273 d->m_scene->setPianoHandler(handler);
282 return d->m_scene->getHighlightPalette();
293 d->m_scene->setHighlightPalette(p);
302 return d->m_scene->getBackgroundPalette();
311 d->m_scene->setBackgroundPalette(p);
321 return d->m_scene->getForegroundPalette();
331 d->m_scene->setForegroundPalette(p);
340 return d->m_scene->showColorScale();
349 d->m_scene->setShowColorScale(show);
363 d->m_scene->useCustomNoteNames(names);
372 d->m_scene->useStandardNoteNames();
381 return d->m_scene->customNoteNames();
390 return d->m_scene->standardNoteNames();
400 d->m_scene->retranslate();
412 d->m_scene =
new PianoScene(base, num, strt, c,
this);
417 setScene(d->m_scene);
426 setAttribute(Qt::WA_AcceptTouchEvents);
427 setAttribute(Qt::WA_InputMethodEnabled,
false);
428 setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
429 setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
430 setViewportUpdateMode(MinimalViewportUpdate);
431 setRenderHints(QPainter::Antialiasing|QPainter::TextAntialiasing|QPainter::SmoothPixmapTransform);
432 setOptimizationFlag(DontClipPainter,
true);
433 setOptimizationFlag(DontSavePainterState,
true);
434 setOptimizationFlag(DontAdjustForAntialiasing,
true);
445 QGraphicsView::resizeEvent(event);
446 fitInView(d->m_scene->sceneRect(), Qt::KeepAspectRatio);
458 if ( numKeys != d->m_scene->numKeys() ||
startKey != d->m_scene->startKey() )
460 QByteArray dataBuffer;
461 int baseOctave = d->m_scene->baseOctave();
462 QColor color = d->m_scene->getKeyPressedColor();
464 KeyboardMap* keyMap = d->m_scene->getKeyboardMap();
465 d->m_scene->saveData(dataBuffer);
468 d->m_scene->loadData(dataBuffer);
469 d->m_scene->setPianoHandler(handler);
470 d->m_scene->setKeyboardMap(keyMap);
471 d->m_scene->hideOrShowKeys();
472 d->m_scene->refreshKeys();
473 d->m_scene->refreshLabels();
474 fitInView(d->m_scene->sceneRect(), Qt::KeepAspectRatio);
484 if (r != d->m_rotation) {
487 rotate(d->m_rotation);
488 fitInView(d->m_scene->sceneRect(), Qt::KeepAspectRatio);
498 return mapFromScene(sceneRect()).boundingRect().size();
504 if (d->m_scene->isKeyboardEnabled() && d->m_rawMap !=
nullptr && d->m_rawMap->contains(keycode)) {
505 d->m_scene->keyOn(d->m_rawMap->value(keycode));
513 if (d->m_scene->isKeyboardEnabled() && d->m_rawMap !=
nullptr && d->m_rawMap->contains(keycode)) {
514 d->m_scene->keyOff(d->m_rawMap->value(keycode));
528 d->m_scene->setKeyPicture(natural, pix);
538 return d->m_scene->getKeyPicture(natural);
547 d->m_scene->setUseKeyPictures(enable);
556 return d->m_scene->getUseKeyPictures();
564 int PianoKeybd::baseOctave()
const
566 return d->m_scene->baseOctave();
575 d->m_scene->setBaseOctave(baseOctave);
583 int PianoKeybd::numKeys()
const
585 return d->m_scene->numKeys();
594 return d->m_scene->startKey();
603 return d->m_rotation;
612 return d->m_scene->getKeyPressedColor();
623 d->m_scene->setKeyPressedColor(c);
631 d->m_scene->resetKeyPressedColor();
641 return d->m_scene->showLabels();
651 d->m_scene->setShowLabels(show);
661 return d->m_scene->alterations();
671 d->m_scene->setAlterations(use);
681 return d->m_scene->getOrientation();
691 d->m_scene->setOrientation(orientation);
701 return d->m_scene->getOctave();
711 d->m_scene->setOctave(octave);
721 return d->m_scene->getTranspose();
731 d->m_scene->setTranspose(t);
740 return d->m_scene->getChannel();
749 d->m_scene->setChannel(c);
759 return d->m_scene->getVelocity();
769 d->m_scene->setVelocity(v);
778 return d->m_scene->isKeyboardEnabled();
787 d->m_scene->setKeyboardEnabled(enable);
796 return d->m_scene->isMouseEnabled();
805 d->m_scene->setMouseEnabled(enable);
814 return d->m_scene->isTouchEnabled();
823 d->m_scene->setTouchEnabled(enable);
832 return d->m_scene->velocityTint();
842 d->m_scene->setVelocityTint(enable);
850 d->m_scene->allKeysOff();
859 d->m_scene->setKeyboardMap(m);
868 return d->m_scene->getKeyboardMap();
885 return d->m_scene->getRawKeyboardMode();
894 d->m_scene->setRawKeyboardMode(b);
931 d->m_scene->showNoteOn(note, color, vel);
941 d->m_scene->showNoteOn(note, vel);
951 d->m_scene->showNoteOff(note, vel);
960 QWidget::setFont(font);
961 d->m_scene->setFont(font);
962 d->m_scene->refreshLabels();
The QGraphicsView class provides a widget for displaying the contents of a QGraphicsScene.
PianoScene class declaration.