在Quick Controls 2.0应用程序中使用TableView是否可以?这将需要两个导入:
import QtQuick.Controls 1.4
import QtQuick.Controls 2.0
Run Code Online (Sandbox Code Playgroud)
我会得到任何副作用吗?
另一个相关的问题:似乎TableView属于Quick Controls 1.0集.是吗?是否意味着如果可以使用TableView,那么可以使用Quick Controls 2.0应用程序中的所有Quick Controls 1.0控件吗?
如何在QtQuick Controls 2中安装菜单栏?它曾经是这样的(在ApplicationWindow中):
menuBar: MenuBar {
Menu {
title: qsTr('File')
MenuItem {
text: qsTr('&Test')
onTriggered: console.log('test')
}
MenuItem {
text: qsTr('&Exit')
onTriggered: Qt.quit();
}
}
}
Run Code Online (Sandbox Code Playgroud)
但升级到Qt 5.7后,它会出现此错误: Invalid property name "menuBar".(M16)
PS它曾经使用设备的本机菜单系统,例如在OS X上它使用原生屏幕的topbar菜单栏,在Linux和Windows上它在应用程序topbar菜单栏中使用原生菜单等.
我正在使用Qt 5.10.1和Qt Creator 4.5.1,并且样式属性在元素中永远不可用.
例如,如此处所示ButtonStyle QML Type,我想这样做:
Button {
text: "A button"
style: ButtonStyle {...}
}
Run Code Online (Sandbox Code Playgroud)
但是,我得到错误:
无法分配给不存在的属性"风格"
我尝试了一个矩形,进度条,我得到了同样的错误.
编辑#1:
我确实拥有所有这些进口产品.如果缺少导入,我会在ButtonStyle上得到错误,但错误是样式.
import QtQuick 2.2
import QtQuick.Controls 2.3
import QtQuick.Dialogs 1.0
import QtGraphicalEffects 1.0
import QtQuick.Shapes 1.0
import QtQuick.Layouts 1.3
import QtQuick.Controls.Styles 1.4
Run Code Online (Sandbox Code Playgroud) 我用Qt Quick Controls 2.0用鼠标在TextField上选择文本时遇到了困难.当我将鼠标悬停在TextField上时,光标不会从光标箭头变为光标I beam,我无法选择文本.我通过使用键盘快捷键Ctrl + A验证了文本选择.我还使用Qt Quick Controls 1.4中的TextField进行了测试,它按预期工作(鼠标光标变为I光束,我可以选择文本).我想我必须遗漏一些明显的东西,因为这看起来像基本的文本字段功能.有没有人有任何想法?以下是我的代码:
import QtQuick 2.7
import QtQuick.Controls 2.0
import QtQuick.Layouts 1.0
ApplicationWindow {
visible: true
width: 640
height: 480
title: qsTr("Hello World")
TextField {
anchors.centerIn: parent
height: 50
width: 100
}
}
Run Code Online (Sandbox Code Playgroud) 我使用来自QtQuick.Controls 2.2的抽屉
Drawer {
id: drawer
width: parent.width/2
height: parent.height
modal: true
...
}
Run Code Online (Sandbox Code Playgroud)
风格:
[Controls]
Style=Material
[Material]
Theme=Dark
Accent=Red
Primary=#c64949
Run Code Online (Sandbox Code Playgroud)
我想改变抽屉阴影的颜色.样式材质使用白色作为阴影(打开抽屉右侧).
- 由Bounty赞助商编辑 -
我发现阴影是定义的,即.这里:http://code.qt.io/cgit/qt/qtquickcontrols2.git/tree/src/imports/controls/Drawer.qml
如:
T.Overlay.modal: Rectangle {
color: Color.transparent(control.palette.shadow, 0.5)
}
T.Overlay.modeless: Rectangle {
color: Color.transparent(control.palette.shadow, 0.12)
}
Run Code Online (Sandbox Code Playgroud)
如果没有定义一个全新的Style,怎么能将它们修改为一次性?
我可能会重新定义一个完全自定义的控件..但应该有一个兼容的版本?
我是QML的新手,我想个性化我的按钮.我成功地改变了背景的颜色和边框颜色.但我根本没有成功改变按钮文字的颜色.我看到我们不再使用"风格"改变风格而是"背景",我不了解它的一切.
谢谢你的帮助.
Button {
id: buttonAC
text: qsTr("AC")
Layout.fillHeight: true
Layout.fillWidth: true
background: Rectangle {
border.color: "#14191D"
color: "#24292f"
// I want to change text color next
}
/*Text {
text: qsTr("AC")
color: "#F54035"
}*/
}
Run Code Online (Sandbox Code Playgroud) 我有一个复杂的图形用户界面与QML,但在某些情况下,我失去了我的焦点,我不知道什么对象有主动焦点.
是否有任何工具或方法可以搜索QML文件并找到重点对象?
我想知道是否有办法实现系统托盘图标+菜单功能没有小部件模块?
我愿意在Qt Quick Controls 2和C ++中的CMake项目中使用样式。而且我很难使颜色正确。
C ++,qml和样式代码来自qt博客,并且只要我使用.pro项目文件,它就可以正常工作,但是当我转向CMakeLists.txt时,我无法正确设置颜色(我相信它们是默认的颜色深色/紫色,而不是深色/橙色)。
在.pro项目中,我的main.cpp如下所示:
#include <QGuiApplication>
#include <QQmlApplicationEngine>
#include <QQuickStyle>
int main(int argc, char *argv[])
{
QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
QGuiApplication app(argc, argv);
QQuickStyle::setStyle("Material");
QQmlApplicationEngine engine;
engine.load(QUrl(QLatin1String("qrc:/main.qml")));
return app.exec();
}
Run Code Online (Sandbox Code Playgroud)
我的qml.qrc文件看起来像这样:
<!DOCTYPE RCC>
<RCC>
<qresource prefix="/">
<file>main.qml</file>
<file>CustomLabel.qml</file>
<file>PageBackground.qml</file>
<file>SideBar.qml</file>
<file>SideBarForm.ui.qml</file>
<file>Light.qml</file>
<file>LightForm.ui.qml</file>
<file>Heating.qml</file>
<file>HeatingForm.ui.qml</file>
<file>Security.qml</file>
<file>SecurityForm.ui.qml</file>
<file>qtquickcontrols2.conf</file>
</qresource>
</RCC>
Run Code Online (Sandbox Code Playgroud)
和我的qtquickcontrols2.conf文件是这样的:
[Controls]
Style=Material
[Universal]
Theme=Dark
Accent=DeepOrange
[Material]
Theme=Dark
Accent=DeepOrange
Run Code Online (Sandbox Code Playgroud)
现在,我的CMake项目文件夹包含完全相同的文件(实际上是.pro项目文件夹的副本和粘贴),除了我删除了.pri和.pro文件,现在它包含一个CMakeLists.txt …
我有一个简单的QML用ApplicationWindow,RowLayout和一堆Buttons里面.我根据文档应用了Qt Quick Controls 2 Material主题,但没有任何改变.怎么了?
import QtQuick 2.7
import QtQuick.Controls 2.0
import QtQuick.Controls.Material 2.0
import QtQuick.Layouts 1.3
ApplicationWindow {
Material.theme: Material.Dark
Material.accent: Material.Orange
id: window
visible: true
RowLayout {
anchors.horizontalCenter: window.horizontalCenter
anchors.bottomMargin: 32
Button {
text: "A"
}
Button {
text: "B"
}
Button {
text: "C"
}
}
}
Run Code Online (Sandbox Code Playgroud)