小编pix*_*ase的帖子

如何更改QML应用程序的逻辑DPI?

我想控制Qt 5.2.1 QML/C++应用程序中所有Text元素的pointSize-to-pixel缩放.

我有一个QML单例组件,具有目标显示属性,如宽度,高度和点间距,可计算常见尺寸的适当像素大小,例如触摸屏按钮的建议大小(以像素为单位).这适用于我编写的控件,但Text元素有一个非常好的font.pointSize,如果我可以设置用于文本缩放的逻辑DPI,我想使用它.

我使用它来模拟具有非常不同的屏幕DPI的目标设备,同时在我的96 DPI开发屏幕上进行调试.例如,我想运行我的应用程序,其目标是1280x720 133DPI显示器,并具有如下元素:

Text { font.pointSize: 72; text: “Xy” }
Run Code Online (Sandbox Code Playgroud)

显示133像素高,而不是我得到的96像素高文本,因为操作系统告诉Qt我连接了96 DPI显示器.我想覆盖我的应用程序的逻辑DPI缩放.

我可以通过QGuiApplication QScreen列表看到logicalDotsPerInchX.有大量关于如何获得逻辑DPI的文档.但我找不到有关如何更改它的任何信息.

如何更改Qt应用程序的逻辑DPI?

qt dpi qml

6
推荐指数
1
解决办法
2175
查看次数

如何在依赖属性更改时重新评估绑定到 qml 属性的 C++ 函数?

我想将 C++ 类的方法绑定到 QML 组件属性,并在依赖属性更改时重新评估它。以下 QML 组件执行我想要的操作:

// Converter.qml:
import QtQuick 2.0

QtObject {
    property double rate: 1
    function exchange(amount) { return amount * rate }
}
Run Code Online (Sandbox Code Playgroud)

如果我将exchange函数的结果分配给这样的属性,

Text { text: converter.exchange(100) }
Run Code Online (Sandbox Code Playgroud)

Text 元素会在rate更改时自动更新。这适用于 QML 组件,但我不知道如何使用 C++ 类来实现。

我想在 C++ 中实现一个功能等效的类:

#include <QObject>

class Convert : public QObject
{
    Q_OBJECT
    Q_PROPERTY(double rate READ rate WRITE setRate NOTIFY rateChanged)

public:
    explicit Convert(QObject *parent = 0)
        : QObject(parent), m_rate(1.0)
    { }

signals:
    void rateChanged();

public slots:
    double …
Run Code Online (Sandbox Code Playgroud)

c++ binding qt signals-slots qml

5
推荐指数
1
解决办法
1905
查看次数

如何在QML中创建Q_GADGET结构的新实例?

我可以发出带有Q_GADGET标记的结构信号,从C++到QML.

是否有可能将这样的结构从QML发送到C++插槽?我的代码在第一步失败:在QML中创建实例.

这段代码在第一行失败了......

var bs = new BatteryState()
bs.percentRemaining = 1.0
bs.chargeDate = new Date()
DataProvider.setBatteryState(bs)
Run Code Online (Sandbox Code Playgroud)

......有错误:

qrc:///main.qml:34: ReferenceError: BatteryState is not defined
Run Code Online (Sandbox Code Playgroud)

我可以从C++向QML发出一个BatteryStatus结构,但是我想将一个参数作为单个参数发送回一个插槽.

这是BatteryState.h和BatteryState.cpp:

// BatteryState.h
#pragma once

#include <QDate>
#include <QMetaType>

struct BatteryState
{
    Q_GADGET
    Q_PROPERTY(float percentRemaining  MEMBER percentRemaining)
    Q_PROPERTY(QDate date              MEMBER date)

public:
    explicit BatteryState();
    BatteryState(const BatteryState& other);
    virtual ~BatteryState();
    BatteryState& operator=(const BatteryState& other);
    bool operator!=(const BatteryState& other) const;
    bool operator==(const BatteryState& other) const;

    float percentRemaining;
    QDate date;
};
Q_DECLARE_METATYPE(BatteryState)

// BatteryState.cpp
#include "BatteryState.h"

BatteryState::BatteryState()
    : percentRemaining(), …
Run Code Online (Sandbox Code Playgroud)

c++ qt struct signals-slots qml

4
推荐指数
1
解决办法
2414
查看次数

标签 统计

qml ×3

qt ×3

c++ ×2

signals-slots ×2

binding ×1

dpi ×1

struct ×1