gpt4 book ai didi

python - QML 中的光标形状

转载 作者:太空宇宙 更新时间:2023-11-04 10:46:05 26 4
gpt4 key购买 nike

有什么方法可以改变 QML 中的光标形状吗?我正在使用 Qt 4.7 和 Python,所以我不能使用 Qt Quick 2,而且在 Qt Quick 中没有光标形状选项。

最佳答案

是的,虽然我知道有一种方法不是在 QML 内部,而是在程序的 C++ 部分,例如 main.cpp 文件:

QmlApplicationViewer viewer;
viewer.setOrientation(QmlApplicationViewer::ScreenOrientationAuto);
viewer.setMainQmlFile(QLatin1String("qml/main.qml"));
viewer.showExpanded();

//changing cursor
viewer.setCursor(QPixmap(":/peach.png").scaledToWidth(20));

或者,您可以将光标更改为类似这样的 qt 光标形状(但不是自定义光标,您可以尝试更改此魔术位),将这些行添加到 ma​​in.cpp

#include "cursorshapearea.h"
qmlRegisterType<QsltCursorShapeArea>("Cursor", 1, 0, "CursorShapeArea");

cursorshapearea.cpp:

#include "cursorshapearea.h"

QsltCursorShapeArea::QsltCursorShapeArea(QDeclarativeItem *parent) :
QDeclarativeItem(parent),
m_currentShape(-1)
{
}

Qt::CursorShape QsltCursorShapeArea::cursorShape() const
{
return cursor().shape();
}

void QsltCursorShapeArea::setCursorShape(Qt::CursorShape cursorShape)
{
if (m_currentShape == (int) cursorShape)
return;

setCursor(cursorShape);
emit cursorShapeChanged();

m_currentShape = cursorShape;
}

cursorshapearea.h:

#ifndef CURSORSHAPEAREA_H
#define CURSORSHAPEAREA_H

#include <QDeclarativeItem>

class QsltCursorShapeArea : public QDeclarativeItem
{
Q_OBJECT

Q_PROPERTY(Qt::CursorShape cursorShape READ cursorShape WRITE setCursorShape NOTIFY cursorShapeChanged)

public:

explicit QsltCursorShapeArea(QDeclarativeItem *parent = 0);

Qt::CursorShape cursorShape() const;
Q_INVOKABLE void setCursorShape(Qt::CursorShape cursorShape);

private:
int m_currentShape;

signals:
void cursorShapeChanged();
};

#endif // CURSORSHAPEAREA_H

在您的 QML 文件中:

import Cursor 1.0

并将 CursorShapeArea 添加到 Rectangle 例如:

CursorShapeArea {
anchors.fill: parent
anchors.margins: 50
cursorShape: Qt.OpenHandCursor
}

关于python - QML 中的光标形状,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17210235/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com