0

ラベルを作成し、setPixmap を使用して .png 画像をラベルに添付しました。また、WindowFlags を設定して、タイトル バーを無効にし、フレームのないウィンドウを作成しました。それらを無効にしたため、何かをドラッグする機能も無効になるため、ウィンドウのフレームをドラッグするのとまったく同じように、マウスイベントを作成して (より良い方法がない限り)、画面上の任意の場所にラベルを配置したいと考えています。どうすればいいですか?例と簡単な説明をいただければ幸いです。

4

2 に答える 2

0

次の方法で、マウスによるラベルのドラッグを実装します。

class Label : public QLabel
{
public:
    // Implement the constructor(s)

protected:
    void Label::mouseMoveEvent(QMouseEvent* event)
    {
        if (!m_offset.isNull()) {
            move(event->globalPos() - m_offset);
        }

        QLabel::mouseMoveEvent(event);
    }

    void Label::mousePressEvent(QMouseEvent* event)
    {
        // Get the mouse offset in the label's coordinates system.
        m_offset = event->globalPos() - pos();
        QLabel::mousePressEvent(event);
    }

    void Notifier::mouseReleaseEvent(QMouseEvent* event)
    {
        m_offset = QPoint();
        QLabel::mouseReleaseEvent(event);
    }

private:
    // The mouse pointer offset from the top left corner of the label.
    QPoint m_offset;
};
于 2013-11-02T12:20:44.833 に答える