Seite 1 von 1
sequenz editor
Verfasst: 23. August 2008 13:47
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
Verfasst: 23. August 2008 15:53
von -=Freaky=-
guck dir doch mal die sourcen von aehnlichen open source programmen an.
mfg,
julian
Verfasst: 23. August 2008 17:27
von surfman19
das wären?
Verfasst: 23. August 2008 17:48
von -=Freaky=-
Verfasst: 23. August 2008 21:01
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...
Verfasst: 23. August 2008 21:24
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...
Verfasst: 25. August 2008 00:24
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);
}
}
Verfasst: 25. August 2008 18:50
von surfman19
hu?