|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- #include "PianoKeyBoard.h"
- #include "MainWindow.h"
- #include <QGraphicsSceneMouseEvent>
- #include <QColorDialog>
-
- PianoKeyBoard::PianoKeyBoard(qreal x, qreal y, qreal w, qreal h, MainWindow *parent): QGraphicsScene(x,y,w,h){
-
- addItem(keys[0] = new PianoKey(parent->colorScale.getToneByName("C")));
- addItem(keys[1] = new PianoKey(parent->colorScale.getToneByName("Cis")));
- addItem(keys[2] = new PianoKey(parent->colorScale.getToneByName("D")));
- addItem(keys[3] = new PianoKey(parent->colorScale.getToneByName("Dis")));
- addItem(keys[4] = new PianoKey(parent->colorScale.getToneByName("E")));
- addItem(keys[5] = new PianoKey(parent->colorScale.getToneByName("F")));
- addItem(keys[6] = new PianoKey(parent->colorScale.getToneByName("Fis")));
- addItem(keys[7] = new PianoKey(parent->colorScale.getToneByName("G")));
- addItem(keys[8] = new PianoKey(parent->colorScale.getToneByName("Gis")));
- addItem(keys[9] = new PianoKey(parent->colorScale.getToneByName("A")));
- addItem(keys[10] = new PianoKey(parent->colorScale.getToneByName("Ais")));
- addItem(keys[11] = new PianoKey(parent->colorScale.getToneByName("H")));
-
- for(int i=0; i<12; i++)
- QObject::connect(keys[i]->getTone(), &Tone::colorchanged, keys[i], &PianoKey::redraw);
-
- };
-
- void PianoKeyBoard::mousePressEvent(QGraphicsSceneMouseEvent *event){
- QString title = "Bitte Farbe wählen für Ton ";
- if(event->button() == Qt::LeftButton){
- //first check "black" Piano keys as they are in foreground
- for(int i=6; i<12; i++){
- if(keys[i]->sceneBoundingRect().contains(event->scenePos())){
- keys[i]->getTone()->setColor(
- QColorDialog::getColor(
- keys[i]->getTone()->getColor(),
- nullptr,
- title.append(keys[i]->getTone()->getName()),
- QColorDialog::DontUseNativeDialog
- )
- );
- return;
- }
- }
- for(int i=0; i<6; i++){
- if(keys[i]->sceneBoundingRect().contains(event->scenePos())){
- keys[i]->getTone()->setColor(
- QColorDialog::getColor(
- keys[i]->getTone()->getColor(),
- nullptr,
- title.append(keys[i]->getTone()->getName()),
- QColorDialog::DontUseNativeDialog
- )
- );
- return;
- }
- }
- }
- };
- PianoKey * PianoKeyBoard::getKey(int number)const{
- return keys[number];
- };
- PianoKeyBoard::~PianoKeyBoard(){
-
- };
|