sequenz editor

Alles rund um die Programmierung mit Qt
Antworten
surfman19
Beiträge: 52
Registriert: 22. August 2008 18:20

sequenz editor

Beitrag von surfman19 »

Hallo,

ich will einen sequenz editor bauen, sowas in der art wie musik maker oder adobe macromedia flash! man hat fertige sequenzen die man in die timeline reinziehen kann usw.

was ist da zu tun:
- timeline zeichnen
- elemente per drag und drop reihnziehen
- spuren hinzufügen
- koordinatensystem um zu bestimmen wann und wie lange eine sequenz aktiv ist.

jemand tipps wie man das umsetzen kann?

bye
-=Freaky=-
Beiträge: 503
Registriert: 29. Dezember 2006 22:54
Wohnort: HL

Beitrag von -=Freaky=- »

guck dir doch mal die sourcen von aehnlichen open source programmen an.

mfg,
julian
surfman19
Beiträge: 52
Registriert: 22. August 2008 18:20

Beitrag von surfman19 »

das wären?
-=Freaky=-
Beiträge: 503
Registriert: 29. Dezember 2006 22:54
Wohnort: HL

Beitrag von -=Freaky=- »

bspw. http://lmms.sourceforge.net/screenshots.php
uvm.

google mal.

mfg,
julian
surfman19
Beiträge: 52
Registriert: 22. August 2008 18:20

Beitrag von surfman19 »

http://lmms.sourceforge.net/screenshots ... shot01.jpg

ich will in meinem qtmainwidget auch so ein fester wie song-editor haben! was nehme ich da? muss ich da im qtmainwidget was setzen?
der song editor ist dort ja frei verschiebbar...
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Du suchst eine QMdiArea...

Aber irgendwie habe ich das Gefühl, daß dir der Überblick über die möglichkeiten von Qt fehlt. Arbeite doch erst mal die Beispiele durch...
surfman19
Beiträge: 52
Registriert: 22. August 2008 18:20

Beitrag von surfman19 »

hi, ich hab mal bissi zu drag und drop gelesen...mit qlabel klappt das drag und drop nun...aber mit qlineedit nicht;/
möchte gleiches verhalten so wie bei qtdesigner....will drag und drop der qlineedit und grösser/kleiner machen der qlineedit!
warum funktioniert das drag und drop so hier nicht?

Code: Alles auswählen

#include "scene_editor.h"
#include <QtGui>

Scene_Editor::Scene_Editor(QWidget *parent, Qt::WFlags flags)
    : QMainWindow(parent, flags)
{
	ui.setupUi(this);

	//setMinimumSize(200, 200);
    //setFrameStyle(QFrame::Sunken | QFrame::StyledPanel);
    setAcceptDrops(true);

    QLineEdit *lineedit = new QLineEdit(this);
    lineedit->insert("TextLabel");
    lineedit->setReadOnly(true);
    lineedit->move(20, 20);
    lineedit->show();
}

Scene_Editor::~Scene_Editor()
{

}

 void Scene_Editor::dragEnterEvent(QDragEnterEvent *event)
 {
     if (event->mimeData()->hasFormat("application/x-dnditemdata")) {
         if (event->source() == this) {
             event->setDropAction(Qt::MoveAction);
             event->accept();
         } else {
             event->acceptProposedAction();
         }
     } else {
         event->ignore();
     }
 }

  void Scene_Editor::dragMoveEvent(QDragMoveEvent *event)
 {
     if (event->mimeData()->hasFormat("application/x-dnditemdata")) {
         if (event->source() == this) {
             event->setDropAction(Qt::MoveAction);
             event->accept();
         } else {
             event->acceptProposedAction();
         }
     } else {
         event->ignore();
     }
 }

  void Scene_Editor::dropEvent(QDropEvent *event)
 {
     if (event->mimeData()->hasFormat("application/x-dnditemdata")) {
         QByteArray itemData = event->mimeData()->data("application/x-dnditemdata");
         QDataStream dataStream(&itemData, QIODevice::ReadOnly);

         //QPixmap pixmap;
         QPoint offset;
         dataStream >> offset;
	
	 QLineEdit *newlineedit = new QLineEdit(this);
	 newlineedit->insert(event->mimeData()->text());
	 newlineedit->move(event->pos() - offset);
	 newlineedit->show();
	 newlineedit->setAttribute(Qt::WA_DeleteOnClose);

         if (event->source() == this) {
             event->setDropAction(Qt::MoveAction);
             event->accept();
         } else {
             event->acceptProposedAction();
         }
     } else {
         event->ignore();
     }
 }

 void Scene_Editor::mousePressEvent(QMouseEvent *event)
 {
     QLineEdit *child = static_cast<QLineEdit*>(childAt(event->pos()));
     if (!child)
         return;

     QByteArray itemData;
     QDataStream dataStream(&itemData, QIODevice::WriteOnly);
     dataStream << QPoint(event->pos() - child->pos());

     QMimeData *mimeData = new QMimeData;
     mimeData->setText(child->text());
     mimeData->setData("application/x-dnditemdata", itemData);

     QDrag *drag = new QDrag(this);
     drag->setMimeData(mimeData);
     drag->setHotSpot(event->pos() - child->pos());
 
     //Qt::DropAction dropAction = drag->exec(Qt::CopyAction | Qt::MoveAction, Qt::CopyAction);

     //if (dropAction == Qt::MoveAction) {

     //if (drag->exec(Qt::CopyAction | Qt::MoveAction, Qt::CopyAction) == Qt::MoveAction)
     //    child->close();
	 //}
	 //else {
     //    child->show();
     //    child->setPixmap(pixmap);
     //}

	 if (drag->start(Qt::CopyAction | Qt::MoveAction) == Qt::MoveAction)
            child->close();
        else {
            child->show();
            //child->setPixmap(pixmap);
        }
 }
surfman19
Beiträge: 52
Registriert: 22. August 2008 18:20

Beitrag von surfman19 »

hu?
Antworten