qt5控制台应用程序的Gamma校正
下面的代码是Qt文档中的示例,它基本上解释了如何将属性gamma调整为特定的qt5控制台应用程序的Gamma校正,qt,qml,qtquick2,Qt,Qml,Qtquick2,下面的代码是Qt文档中的示例,它基本上解释了如何将属性gamma调整为特定的项 import QtQuick 2.0 import QtGraphicalEffects 1.0 Item { width: 300 height: 300 Image { id: bug source: "images/bug.jpg" sourceSize: Qt.size(parent.width, parent.height)
项
import QtQuick 2.0
import QtGraphicalEffects 1.0
Item {
width: 300
height: 300
Image {
id: bug
source: "images/bug.jpg"
sourceSize: Qt.size(parent.width, parent.height)
smooth: true
visible: false
}
GammaAdjust {
anchors.fill: bug
source: bug
gamma: 0.45
}
}
是否有一种方法可以将gamma校正作为一个整体设置到完整的应用程序中,以便颜色深度可以按照我希望的方式进行校正,而不是默认值
类似于此:
xrandr——输出DVI-0——伽马2:2:1
使用属性绑定。创建Settings.qml
Item
{
property double gammaValue: 0.45
}
然后
Item {
width: 300
height: 300
Image {
id: bug
source: "images/bug.jpg"
sourceSize: Qt.size(parent.width, parent.height)
smooth: true
visible: false
}
GammaAdjust {
anchors.fill: bug
source: bug
gamma: appSettings.gammaValue
}
Settings {
id: appSettings
}
}
如果我正确理解了您的要求,那么您希望访问命令行参数。在QML中,您可以通过Qt.application.arguments
访问它们。下面是一个粗略的解决方案,修改为您的问题代码:
import QtQuick 2.0
import QtGraphicalEffects 1.0
Item {
width: 300
height: 300
// gammaIndex will be 0 if --gamma not given, otherwise index of value
property int gammaIndex: Qt.application.arguments.indexOf("--gamma") + 1;
// fallback default value as its own property for clarity
property real defaultGamma: 1.0
// rely on short-circuiting logic, result is either //valid or //default
// an invalid number will give value 0, so --gamma 0 is rejected too
property real gamma: gammaIndex > 0
&& Qt.application.arguments[gammaIndex] > 0
&& Qt.application.arguments[gammaIndex] //valid
|| defaultGamma //default
Image {
id: bug
source: "images/bug.jpg"
sourceSize: Qt.size(parent.width, parent.height)
smooth: true
visible: false
}
GammaAdjust {
anchors.fill: bug
source: bug
gamma: parent.gamma
}
}
根据定义,“控制台应用程序”没有GUI,也不真正关心gamma(除非它是用于调整OS gamma内容的工具,如xrandr
)。我的意思是,你可能想编辑问题的标题,它现在相当混乱。你的意思是“如何将控制台应用程序写入GUI应用程序的adust gamma?”@hyde是的,我的意思是正在开发一个包含多个qml文件的GUI应用程序,每个文件执行特定的任务。如果我想为一个完整的GUI应用程序调整gamma,有没有一种方法可以在启动GUI应用程序时设置一些标志或类似的东西。目前,我需要在每个qml文件中添加GammaAdjust
,我希望在其中应用该效果。@海德Gamma校正与颜色相关,控制台应用程序不排除输出颜色,甚至图形,还有一些欺骗,比如修改字符图示符。@user12345所以您实际上是在问这个问题:“如何读取命令行参数并将其用作QML代码中的gamma校正值?”@user1095108但控制台应用程序被排除在问题中显示的QML GUI之外(因为如果它们确实具有该参数,则它们不是控制台应用程序)。