Open Shimapoikaze opened 2 months ago
是不是在标题栏区域里了?
标题栏区域中的控件(一部分在也算),要用setHitTestVisible手动开启交互事件,否则无法响应任何交互,请仔细看自述文件
设置了setHitTestVisible之后一样不行
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) {
installWindowAgent();
//#if 1
// auto clockWidget = new ClockWidget();
// clockWidget->setObjectName(QStringLiteral("clock-widget"));
// clockWidget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
// setCentralWidget(clockWidget);
//#else
// auto webView = new QWebEngineView();
// webView->load(QUrl("https://www.baidu.com"));
// setCentralWidget(webView);
//#endif
centralWidget = new QWidget(this);
auto layout = new QVBoxLayout(centralWidget);
view = new QGraphicsView(this);
scene = new QGraphicsScene(this);
rectItem = new QGraphicsRectItem(0, 0, 100, 100);
rectItem->setBrush(Qt::red);
rectItem->setFlag(QGraphicsItem::ItemIsMovable);
scene->addItem(rectItem);
auto ellipseItem = new QGraphicsEllipseItem(150, 0, 100, 100);
ellipseItem->setBrush(Qt::green);
ellipseItem->setFlag(QGraphicsItem::ItemIsMovable);
scene->addItem(ellipseItem);
auto textItem = new QGraphicsTextItem("Drag me!");
textItem->setPos(300, 0);
textItem->setFlag(QGraphicsItem::ItemIsMovable);
scene->addItem(textItem);
view->setScene(scene);
view->setMouseTracking(true);
layout->addWidget(view);
windowAgent->setHitTestVisible(centralWidget,true);
// windowAgent->setHitTestVisible(view,true);
setCentralWidget(centralWidget);
loadStyleSheet(Dark);
setWindowTitle(tr("Example MainWindow"));
resize(800, 600);
// windowAgent->centralize();
}
其余代码与示例代码相同
并且在改变主窗口大小(拉大或者缩小)之后QGraphicsItem所有区域都可以拖动
先更新到 Qt 6.6.2 及以上再说
qt版本:6.5.3 msvc 2019 系统:windows11 在主窗口中添加了一个 QGraphicsView,创建多个不同类型的 QGraphicsItem (QGraphicsRectItem、QGraphicsEllipseItem 和 QGraphicsTextItem)。当鼠标位于这些 QGraphicsItem 的下半部分区域时候,QGraphicsItem无法接收到鼠标点击事件,具体表现为无法点击下半部分进行拖动。