0

半透明の画像に基づくウィンドウがあります。

import QtQuick 1.1
import QtWebKit 1.1
  Image {
       source: "qrc:/assets/bg.png"
  }

そして、メインウィンドウでこのようなもの

#include "mainwindow.h"

    MainWindow::MainWindow(QWidget *parent) :
        QMainWindow(parent)
    {
      setAttribute(Qt::WA_TranslucentBackground);
      setStyleSheet("background:transparent;");

      /* turn off window decorations */
      setWindowFlags(Qt::FramelessWindowHint);

      ui = new QDeclarativeView;
      ui->setSource(QUrl("qrc:/assets/ui.qml"));\

      setCentralWidget(ui);
    }

    MainWindow::~MainWindow()
    {
        delete ui;
    }

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QtDeclarative/QDeclarativeView>

namespace Ui {
    class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

private:
    QDeclarativeView *ui;
};
 #endif // MAINWINDOW_H

ウィンドウを画面上でドラッグ可能にする方法を知りたいです (ユーザーが画像を押してウィンドウをドラッグします..)?

4

3 に答える 3

1

再実装mousePressEvent()して、ユーザーmouseReleaseEvent()がマウスを押したままにしていることを認識してから再実装mouseMoveEvent()し、ユーザーがマウスを押したままにしている場合は、ウィジェットを移動します。

// **Untested code**
protected:
    virtual void mousePressEvent(QMouseEvent *event) { _mouseIsDown = true; }
    virtual void mouseReleaseEvent(QMouseEvent *event) { _mouseIsDown = false; }
    virtual void mouseMoveEvent(QMouseEvent *event) { if(_mouseIsDown) { move(event->pos() + globalPos()); } }
于 2012-04-19T17:07:22.247 に答える
0

最初の2つの宣言を削除した後、うまくいきました。

于 2014-07-16T18:48:59.537 に答える