我有一个 css 动作,我想在 qml 中复制,如何在 QML 中制作按钮(或任何其他元素)动画以产生脉动效果,如以下 CSS:
@import "bourbon";
$n:6;
$w:20px;//dot size
$e:4;//dot margin factor
$hsl:160;//start color
$bg:#333;
html{
background:$bg;
height: 100%;
backface-visibility: hidden;
}
#c{
position: absolute;
top:50%;
left:50%;
margin-left: -(($n - 1)*($w + $w*$e))/2 - ($w/2);
}
@mixin shadow($b,$s,$sm,$c){
box-shadow:
0 0 8px 6px $c,
0 0 $b $s $bg,
0 0 $b ($s + $sm) $c;
}
.s{
width: $w;
height: $w;
border-radius: 50%;
cursor:pointer;
float: left;
@include transition(all .2s);
&:nth-child(n+2){
margin-left: $w*$e;
} …Run Code Online (Sandbox Code Playgroud) 我想为a 中的ToolTip代表做一个. 如果我使用 an ,它工作得很好,但是,我不能使用 an,因为它破坏了 的选择模式。如果我尝试在我的委托组件中定义,我会收到错误ComponentTableViewItemDelegateItemDelegateTableViewToolTip
qrc:/FileSystem.qml:34 Invalid component body specification
Run Code Online (Sandbox Code Playgroud)
如何使用工具提示Component?
这是我的代码:
TreeView {
id: view
anchors.fill: parent
sortIndicatorVisible: true
model: fileSystemModel
rootIndex: rootPathIndex
selection: sel
selectionMode: 2
Component {
id: mycomp
Row{
id: myrow
CheckBox{
id: cbox
anchors.baseline: ctext.baseline
}
Text{
id: ctext
text: styleData.value
color: styleData.textColor
width: namecolumn.width-cbox.width-myrow.x
elide: Text.ElideRight
}
}
NC.ToolTip {
parent: mycomp
visible: hovered
delay: 1000
text: qsTr(styleData.value)
}
}
TableViewColumn { …Run Code Online (Sandbox Code Playgroud) 我正在使用 QFile 读取 Qt 5.12 上的文件。我尝试从计算机中读取文件,但是当我使用从 FileDialog 读取的目录时,其前缀为“file:///”。谁能告诉我为什么这是错误的以及如何使用从 FileDialog 获取的 URL?
谢谢!
QFile file("C:/Users/HuuChinhPC/Desktop/my_txt.txt"); // this work
//QFile file("file:///C:/Users/HuuChinhPC/Desktop/my_txt.txt"); //didn't work
QString fileContent;
if (file.open(QIODevice::ReadOnly) ) {
QString line;
QTextStream t( &file );
do {
line = t.readLine();
fileContent += line;
} while (!line.isNull());
file.close();
} else {
emit error("Unable to open the file");
return QString();
}
Run Code Online (Sandbox Code Playgroud) 我想通过按按钮向 QML 表视图添加一定数量的行。用户界面如下所示:
按“更新列表模型”后,TableView 中应出现一个新行。
我的代码看起来像这样(如下)。我想该addPerson方法必须发出dataChanged事件才能使其正常工作。我怎样才能做到这一点?或者是否有更好的解决方案来同步 QML 表视图与 C++ 模型?
主程序
#include <QGuiApplication>
#include <QQmlApplicationEngine>
#include "MainWindow.h"
int main(int argc, char *argv[]) {
QGuiApplication app(argc, argv);
qmlRegisterType<TableModel>("TableModel", 0, 1, "TableModel");
QQmlApplicationEngine engine;
MainWindow mainWindow;
return app.exec();
}
Run Code Online (Sandbox Code Playgroud)
主窗口.h
#pragma once
#include <QQmlApplicationEngine>
#include <QtQuick>
#include "TableModel.h"
class MainWindow : public QObject {
Q_OBJECT;
public:
explicit MainWindow() {
engine_.load(QUrl(QStringLiteral("qrc:/main.qml")));
QObject *rootObject = engine_.rootObjects().first();
QObject::connect(rootObject, SIGNAL(on_ButtonUpdateListModel_click()), this, SLOT(on_ButtonUpdateListModel_click()));
}
public slots:
void on_ButtonUpdateListModel_click() {
QQuickView view;
QQmlContext *ctxt …Run Code Online (Sandbox Code Playgroud) 我正在使用TableViewQML 组件。我那里有 3 列。每列宽度设置为表格总宽度除以 3。这引入了一些小数部分,结果,水平滚动条始终在底部可见:
我想禁用这个滚动条,但不知道该怎么做。我正在使用TableViewQtQuick.Controls 1.4(旧的)中的 QML。Qt版本是5.12.3。
我在 qml 中创建了一个自定义按钮,我想重点关注按“选项卡”,我的意思是“如果它位于队列顶部,则按选项卡跳转到它”默认情况下,qml 在按钮本身和其他一些控件上具有此功能也是,但是不存在的新组件呢,我看到了 qml 的“FocusScope”控件,但没有使用它的文档,我不确定如何实现它,这是我的控件:
import QtQuick 2.4
Item {
id: button
width: innerText.width + 10
height: 30
property alias text: innerText.text;
property alias font: innerText.font;
property color color: "#00171f"
property color hoverColor: "#00395f"
property color pressColor: "#3E65FF"
property int fontSize: 12
property int borderWidth: 0
property int borderRadius: 2
property bool highlighted : true
onEnabledChanged: state = ""
signal clicked
property var background
Rectangle {
id: rectangleButton
anchors.fill: button
radius: borderRadius
color: button.enabled ? button.color : "grey"
border.width: …Run Code Online (Sandbox Code Playgroud) 我正在尝试将图像添加到我的 qml 项目并显示它。图片部分:
Image {
id:menuLogo
width:400
height:400
source: "design/logo.png"
}
Run Code Online (Sandbox Code Playgroud)
我的项目结构。在 qt 中输入路径的第一部分时甚至会建议文件名。
我在运行代码时遇到的错误:
qrc:/Menu.qml:9:5:QML 图像:无法打开:qrc:/design/logo.png
我正在使用忙碌指示器来显示中间进度,并且我想更改圆圈的颜色。我提到了自定义忙碌指示器链接,但这正在更改默认动画和其他内容。此外,它很难理解,因为没有对此进行解释。
我只想更改颜色,动画应该与默认值相同。请建议。
我正在尝试学习 QML,目前我在理解 rowSpan 和 columnSpan 方面遇到了一些问题,如果这个问题对你们中的一些人来说可能听起来很愚蠢,那么很抱歉。
我学到的是:
如果我错了,请纠正我,但在GridLayout中应该是这样的:
我正在尝试做什么:
这种布局理论上应该具有以下特点:
或者至少到目前为止我是这么理解的。
问题:
在我用 col、row 以及 colSpan 和 rowSpan 编码 QML 后,我得到了这个。
我的代码:
import …Run Code Online (Sandbox Code Playgroud) 我创建了一个用户可以滚动的 ListView。我注意到滚动条没有出现,滚动也不起作用。
我发现问题是因为我将 ListView 宽度指定为 contentWidth。例如,如果我将其设置为 100,则会出现滚动条并且我可以滚动。但是,我希望 ListView 宽度由其内容决定(这就是我使用 contentWidth 的原因)。我做错了吗,我发现的有关此事的所有其他主题都说 contentWidth 应该起作用......
import QtQuick 2.12
import QtQuick.Window 2.12
import QtGraphicalEffects 1.0
import QtQuick.Controls 2.15
Window {
id: root
width: 1200
height: 800
visible: true
title: qsTr("Server Manager")
color: "black"
ListView {
spacing: 10
height: 100
width: contentWidth
ScrollBar.vertical: ScrollBar {
active: true
}
model: ["test", "6", "123", "22", "55"]
delegate: Row {
width: contentWidth
TextField {
width: 150
height: 80
text: "Sample"
}
TextField {
width: 150
height: 80 …Run Code Online (Sandbox Code Playgroud)