Russian Qt Forum

Qt => Вопросы новичков => Тема начата: saim от Июль 29, 2014, 22:51



Название: Qt. Перетаскивания иконок , на подобии win8, iPod, i т.д.
Отправлено: saim от Июль 29, 2014, 22:51
Реализовать на Qt окно с иконками с возможностью их перетаскивания, как на рабочем столе iphone, ipad.
Со всем эффектами - типа ты ведешь ярлык, под ним все разбегаются, перестраиваются, а когда отпускаешь - он туда падает.
Или как на вин8 https://www.youtube.com/watch?v=cEZnHhg2hUE (https://www.youtube.com/watch?v=cEZnHhg2hUE)
Причем выписать этот модуль так, чтобы можно было потом его повторно использовать (реюзать).
Без папок, без колонок, просто прямоугольная область, 5-10 ярлыков, драг-н-дроп, они бегают туда, сюда.

Вот то что примерно нужно:
class IconsWidget: QWidget
{
public:
IconsWidget(QWidget* parent);
 
public slots:
// id уникальный для каждой иконки
void onAddIcon(int id, QString name, QColor color);
 
signals:
void iconClicked(int id);
 
// после перетаскивания стреляет iconsReordered - внутри список id иконок по порядку
void iconsReordered(QList<int> newOrder);
}

Подскажите где что почитать , может кто то видел реализацию чего то подобного ..??
Заранее СПАСИБО !


Название: Re: Qt. Перетаскивания иконок , на подобии win8, iPod, i т.д.
Отправлено: ammaximus от Август 04, 2014, 12:18
Это делается простыми OnMouseClick OnMouseMove. Отслеживается положение курсора и обнаруживается нет ли под ним других ярлыков. Если есть то для ярлыка стартует анимация. По анимации есть хороший example в qtcreator. Если не боишься java/android вот тебе пример прямо по твоей задаче: https://github.com/thquinn/DraggableGridView