我正在尝试使用此页面上指定的紫色和其他颜色,但颜色无法准确显示.
这是我的设备和linux上显示的紫色图像:
以下是默认Hello World应用程序的相关代码片段:
.pro文件:
QT += qml quick quickcontrols2
Run Code Online (Sandbox Code Playgroud)
main.cpp中:
#include <QQuickStyle>
Run Code Online (Sandbox Code Playgroud)
在 int main(int argc, char *argv[])
QQuickStyle::setStyle("Material");
main.qml:
Material.theme: Material.Dark
Material.accent: Material.Purple
Run Code Online (Sandbox Code Playgroud) 我正在为我的应用程序在QML中创建一个自定义控件。我想同时在台式机和Android上运行,因此我在应用程序中使用了Material Style。这会将颜色方案应用于所有现有的Qt Quick Controls 2控件(按钮,工具栏等)。但是,如何在控件上使用这些颜色?我知道我可以只用十六进制代码或任何其他颜色使用相同的颜色,但是如果要更改主题中的强调色等,我希望控件的颜色也可以更改。
我试过了,SystemPalette但是那里的颜色似乎并没有遵循Material Style,而是总是遵循默认的样式。
我是否可以使用“材料”颜色?如果应用程序在非材料模式下运行会怎样?
我们正在使用QtQuick.Controls 2.2并且由于各种原因无法降级.当我们使用ComboboxQML中的util时,它不会出现selectByMouse在1.4版本中引入的字段.
我们的要求是 - 能够选择组合框中的文本进行复制,并有一个下拉菜单.
如何解决这个问题; 还有其他选择吗?
有办法获得吗?
为什么我需要它。这里我的 UI 看起来很糟糕: Quick Controls 2 看起来很糟糕
以下是调整复选框大小的方法:QML: Resize CheckBox
我希望indicator.height值等于字体的高度。
我有利用其产生的项目中应用CMake的Qt5.7,所以当import QtQuick.Controls 2.0应用程序失败,出现以下错误加载:
插件无法加载模块 "QtQuick.Controls":无法加载库C:\ Qt的\ Qt5.7.0\5.7\msvc2015\QML\QtQuick\Controls.2\qtquickcontrols2plugind.dll:指定的模块找不到.
的CMakeLists.txt
set(CMAKE_PREFIX_PATH "C:\\Qt\\Qt5.7.0\\5.7\\msvc2015")
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
find_package(Qt5Core REQUIRED)
find_package(Qt5Qml)
find_package(Qt5Quick)
find_package(Qt5QuickControls2)
...
add_executable(MyApp ${SRC} ${HEADER} ${RESOURCES})
target_link_libraries(MyApp
Qt5::WinMain
Qt5::Core
Qt5::Qml
Qt5::Quick
Qt5::QuickControls2
)
Run Code Online (Sandbox Code Playgroud)
DLL在visual studio输出中加载的文件:
'MyApp.exe' (Win32): Loaded 'C:\Qt\Qt5.7.0\5.7\msvc2015\qml\QtQuick.2\qtquick2plugind.dll'. Symbols loaded.
'MyApp.exe' (Win32): Loaded 'C:\Qt\Qt5.7.0\5.7\msvc2015\qml\QtQuick\Controls.2\qtquickcontrols2plugind.dll'. Symbols loaded.
'MyApp.exe' (Win32): Unloaded 'C:\Qt\Qt5.7.0\5.7\msvc2015\qml\QtQuick\Controls.2\qtquickcontrols2plugind.dll'
Run Code Online (Sandbox Code Playgroud) 我TextArea在我的应用程序中添加了一个简单的。不幸的是,即使它contentHeight绕过了它的height.
这是代码:
import QtQuick 2.7
import QtQuick.Controls 2.0
ApplicationWindow {
id: appWindow
visible: true
width: 480
height: 640
TextArea{
anchors.fill: parent
anchors.margins: 100
wrapMode: TextEdit.Wrap
Component.onCompleted: {
console.log("width:", width)
console.log("contentWidth:", contentWidth)
console.log("height:", height)
console.log("contentHeight:", contentHeight)
}
onTextChanged: {
console.log("width:", width)
console.log("contentWidth:", contentWidth)
console.log("height:", height)
console.log("contentHeight:", contentHeight)
}
}
}
Run Code Online (Sandbox Code Playgroud) 我有我自己的委托的 ListView。
import QtQuick 2.7
import QtQuick.Controls 2.0
import QtQuick.Layouts 1.0
ItemDelegate
{
height: 40
Row
{
spacing: 10
anchors.verticalCenter: parent.verticalCenter
CheckBox
{
}
}
}
Run Code Online (Sandbox Code Playgroud)
问题是复选框不会调整大小,尽管 ItemDelegate 的高度。
我得到这个高度 = 40:
我得到这个高度 = 10:
我试过使用 CheckBox 的宽度和高度值 - 没有帮助。
有没有可能让它更小,而不需要定制它?
我有一个 QML ComboBox,其模型定义为 C++ QList < QObject* >。当我打开下拉列表时,可以看到C++模型中定义的所有项,但是选择后,未显示所选项。因此,项目仅在下拉元素中可见。qml文件的相关部分是:
ComboBox {
id: placesCombo
anchors.top: parent.top
width: parent.width
model: myModel
delegate: ItemDelegate {
width: placesCombo.width
contentItem: Text {
id: placesComboItem
text: displayLabel
elide: Text.ElideRight
verticalAlignment: Text.AlignVCenter
}
}
}
Run Code Online (Sandbox Code Playgroud)
如何在关闭的组合框中显示先前在下拉元素中选择的项目文本?
我有一个基于 qml 的应用程序,其中有一个搜索字段。该字段还有一个图标,表明它是一个搜索框。问题是,当我输入文本时,它会与图标重叠,我想基本上将文本输入区域限制为不包含图像的文本字段。
qml代码如下:
TextField {
id: searchBox
font.pixelSize: 18
background: Rectangle {
radius: 6
border.color: "#707070"
border.width: 1
Image {
source: "../images/search.png"
anchors.left: parent.left
anchors.leftMargin: 12
anchors.verticalCenter: parent.verticalCenter
}
}
}
Run Code Online (Sandbox Code Playgroud)
生成的组件呈现如下:
如您所见,文本输入区域与图像重叠。有没有办法确保文本输入区域被剪切或在这种情况下向右移动并且用户无法在呈现图像的位置添加文本?
我有一个TextArea通常只包含大约一行文本的内容。但是,我确实希望用户能够添加更多内容并将TextArea最多扩展到大约 15 行,此时可以通过滚动条访问任何其他文本。通过TextArea将 包含在 a Flickable(最终包含在 a 中Rectangle)中,我已经能够使滚动方面工作。
Rectangle {
id: rec
width: 200
height: 25
Flickable {
id: flickable
anchors.fill: parent
contentWidth: textArea.width
contentHeight: textArea.height
TextArea.flickable:
TextArea {
id: textArea
text: qsTr("Hello, world!")
wrapMode: Text.WordWrap
}
ScrollBar.vertical: ScrollBar { }
}
}
Run Code Online (Sandbox Code Playgroud)
在这一点上,我将如何让文本框随文本一起扩展,直到达到某个预定义的最大像素数(例如 300)?
编辑
好的,差不多了,只是在使用 Mitch 的解决方案使文本正确居中时遇到了一个问题。我的main.qml文件包含以下内容:
import QtQuick 2.7
import QtQuick.Controls 2.0
import QtQuick.Layouts 1.3
ApplicationWindow {
visible: true
width: 640
height: 480
title: qsTr("Hello World") …Run Code Online (Sandbox Code Playgroud)