私は、iOSインターフェイス、3x3フィールドのアイコンをドラッグして位置を変更してから、XMLファイルでそれを覚えておく必要があります。 Gridクラス(QWidgetは親)をコンテナとして使用し、QWidgetから継承した独自のクラスを要素として使用することにしました。今私はQWidgetのためにドラッグ&ドロップを実行する方法を学ぼうとしていますが、QWidgetにしかドロップできないようですが、ドラッグすることは不可能です。 それは本当ですか、ちょうど私が遅れているのですか?このことをどうやって動かすのですか? xxQTでのQWidgetのドラッグ5
答えて
ウィジェットをドラッグするのは簡単ではありません。たくさんのコーディングが必要です。 Qt Docsから
:
void MainWindow::mousePressEvent(QMouseEvent *event)
{
if (event->button() == Qt::LeftButton
&& iconLabel->geometry().contains(event->pos())) {
QDrag *drag = new QDrag(this);
QMimeData *mimeData = new QMimeData;
mimeData->setText(commentEdit->toPlainText());
drag->setMimeData(mimeData);
drag->setPixmap(iconPixmap);
Qt::DropAction dropAction = drag->exec();
...
}
}
ウィジェットは、例えば、それをドラッグすることでメッセージを受信したときにこれは、意味mousepressのように、QDragオブジェクトを作成する必要があります。
QDragオブジェクトでは、ドラッグされたウィジェットを表すpixmapを設定できます。この時点でウィジェットを非表示にすると、マウスポインタがウィジェットを「取った」ように見えます。
また、QMimeDataオブジェクトが必要です。この中には、あなたのウィジェットを表すあらゆる種類のデータを入れることができます。ユースケースでは、ウィジェットを識別できるようにします。なぜなら、難しい部分が来るからです。あなたは自分自身を動かす必要があります。
グリッドの親であるウィジェットは、ドロップイベントを受け取り、私が移動したいと望むmimeデータから読み取ります。 QDropEventから、ウィジェットが移動されるポイントが取得されます。これはコード化する必要があります:グリッドレイアウトの実際の位置変更。そしてXMLを更新することを忘れないでください。
と私はちょうどどの要素が動いていたかを覚えていますが、他のどの要素がドロップされたのかを覚えておいて、次に2番目の要素を覚えて、最初に置き換えて、addWidget()とremoveWidget() –
@Leonid Bor、QDragオブジェクトは、マウスポインタの下にアイコンを表示する方法を提供します。ドラッグされたオブジェクトに関するデータをドロップレシーバに渡す方法を提供します。この情報を得ることができれば、問題はありません。 addWidget()とremoveWidget()は確かに実際に移動を実行する1つの方法です。 – Greenflow
Qt wikiには、80行以下のコードでiOSアイコンインターフェイスをエミュレートする方法に関するQtQuickの例が含まれています。
hereです。
thxだが私の上司はこれを使わないように制限した。/ –
qmlを読んだら、それをQGridLayout/QWidgetレイアウトに翻訳できると思う。結局のところ、qmlはレイアウトを説明する他の言語に過ぎません。 –
、あなたは
QPixmap *widgetPixmap = new QPixmap;
yourWidget->render(widgetPixmap); // rendering the current widget to t_iconTPixmap
今
void MainWindow::mousePressEvent(QMouseEvent *event)
{
if (event->button() == Qt::LeftButton
&& iconLabel->geometry().contains(event->pos())) {
QDrag *drag = new QDrag(this);
QMimeData *mimeData = new QMimeData;
mimeData->setText(commentEdit->toPlainText());
QPixmap *widgetPixmap = new QPixmap;
yourWidget->render(widgetPixmap);
drag->setMimeData(mimeData);
drag->setPixmap(widgetPixmap);
Qt::DropAction dropAction = drag->exec();
...
}
}
エラーが発生する:非アクティブな画家でレンダリングできない – wutzebaer
- 1. QWidgetの周りのQtスペース
- 2. Qt - QWidgetをQWidgetクラスに設定する
- 3. QTビルドQWidget、QObjectエラー
- 4. のQt 4.8.0にQGlWidgetとQWidgetの変更
- 5. QT - ドラッグ時のアーチファクト
- 6. QWidgetをMayaにドラッグ&ドロップする
- 7. Qt 5のオンスクリーンキーボード
- 8. のQt 5でrecenterはQT/QML地図
- 9. "ハイジャック" Qt gui root QWidgetを指定*
- 10. PySide Qt:画像のドラッグ&ドロップ
- 11. Qt:サブQWidgetの初期サイズのチキン/卵の問題
- 12. ドラッグ&ドロップHTML 5のjQuery:JSON
- 13. はどのように<a href="http://doc.qt.io/qt-5/qwidget.html" rel="nofollow noreferrer">Qt's QWidget documentation</a>によるとQWidgetの
- 14. Qt Designer - QWidgetなしでTabWidgetでプロジェクトを開始するには
- 15. Qtのドラッグ両者のドロップQListWidget
- 16. Qtレイアウト、QWidgetを親として渡すこととの違い
- 17. Qtでプラグインから返されたQWidgetを破棄します
- 18. QtでカスタムQwidgetを作成しますか?
- 19. QtでQWidget :: scroll(int dx、int dy)を使うには?
- 20. のQt Creatorを5から
- 21. Qt 5のマクロ「QT_BEGIN_NAMESPACE」は何ですか?
- 22. カスタムURLプロトコルハンドラQt 5
- 23. Qtのウィンドウの中央にプログラムでQWidgetを設定するには?
- 24. 別のQWidgetからQWidgetを隠す
- 25. タイプのQWidgetのQtのウィンドウのタイトルバーにあるヘルプボタンを作成するにはQt
- 26. iOS 5でUIViewを下にドラッグ
- 27. QtがQWidget :: dropEventを受け取っていない
- 28. QWidgetから継承するQtプラグインを作成する方法
- 29. のQt - だから私はこのようなメニューバー持ちのmenuBarとQWidgetの
- 30. TR()関数はQtの4からのQt 5
はあなただけ移動するか、
yourDragObject->setPixmap();
例えばピックスマップとしてこの
widgetPixmap
を使用し、また、QWidgetのをドラッグすることができますトリックを行いますそれをドラッグ・アンド・ドロップするには?ちょうどそれを移動する方が簡単です(http://stackoverflow.com/questions/12219727/dragging-moving-a-qpushbutton-in-pyqt)、ドラッグ/ドロップが複雑になる(http://stackoverflow.com/questions/24582383/qmimedata - 設定 - と - 右のMIMEタイプのための任意のウィジェットを取得)。 – neuronet