标签: qtquickcontrols2

QML材料设计颜色不准确

我正在尝试使用页面上指定的紫色和其他颜色,但颜色无法准确显示.
这是我的设备和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)

c++ qml material-design qt5.7 qtquickcontrols2

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

如何创建尊重“材质样式”颜色的自定义QML控件?

我正在为我的应用程序在QML中创建一个自定义控件。我想同时在台式机和Android上运行,因此我在应用程序中使用了Material Style。这会将颜色方案应用于所有现有的Qt Quick Controls 2控件(按钮,工具栏等)。但是,如何在控件上使用这些颜色?我知道我可以只用十六进制代码或任何其他颜色使用相同的颜色,但是如果要更改主题中的强调色等,我希望控件的颜色也可以更改。

我试过了,SystemPalette但是那里的颜色似乎并没有遵循Material Style,而是总是遵循默认的样式。

我是否可以使用“材料”颜色?如果应用程序在非材料模式下运行会怎样?

qt qml qt5 qtquick2 qtquickcontrols2

4
推荐指数
2
解决办法
1561
查看次数

QML QtQuick.Controls 2.2 Combobox没有selectByMouse; 有什么选择?

我们正在使用QtQuick.Controls 2.2并且由于各种原因无法降级.当我们使用ComboboxQML中的util时,它不会出现selectByMouse在1.4版本中引入的字段.

我们的要求是 - 能够选择组合框中的文本进行复制,并有一个下拉菜单.

如何解决这个问题; 还有其他选择吗?

mouse qt options qml qtquickcontrols2

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

QML 获取默认字体高度值(以像素为单位)

有办法获得吗?

为什么我需要它。这里我的 UI 看起来很糟糕: Quick Controls 2 看起来很糟糕

以下是调整复选框大小的方法:QML: Resize CheckBox

我希望indicator.height值等于字体的高度。

fonts qt qml qt5 qtquickcontrols2

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

导入QtQuick.Controls 2.0不起作用 - QQmlApplicationEngine无法加载组件

我有利用其产生的项目中应用CMakeQt5.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)

qt qt-quick qtquick2 qtquickcontrols qtquickcontrols2

3
推荐指数
1
解决办法
6817
查看次数

QML TextArea 不会滚动

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)

qml qtquickcontrols2

3
推荐指数
1
解决办法
3839
查看次数

QML:调整复选框的大小

我有我自己的委托的 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 的宽度和高度值 - 没有帮助。

有没有可能让它更小,而不需要定制它?

qt qml qtquickcontrols2

3
推荐指数
1
解决办法
3993
查看次数

ComboBox QML 选择后不显示项目文本

我有一个 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)

如何在关闭的组合框中显示先前在下拉元素中选择的项目文本?

qt combobox qml qtquickcontrols2

3
推荐指数
1
解决办法
2195
查看次数

移动文本框编辑区域

我有一个基于 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)

生成的组件呈现如下:

在此处输入图片说明

如您所见,文本输入区域与图像重叠。有没有办法确保文本输入区域被剪切或在这种情况下向右移动并且用户无法在呈现图像的位置添加文本?

qt qml qt5 qtquick2 qtquickcontrols2

3
推荐指数
1
解决办法
883
查看次数

如何使 TextArea 具有最大大小和滚动条?

我有一个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)

qt qml qtquick2 qtquickcontrols2

3
推荐指数
1
解决办法
1780
查看次数