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
sequenz editor
-
-=Freaky=-
- Beiträge: 503
- Registriert: 29. Dezember 2006 22:54
- Wohnort: HL
-
-=Freaky=-
- Beiträge: 503
- Registriert: 29. Dezember 2006 22:54
- Wohnort: HL
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...
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...
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?
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);
}
}