- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我希望我的 table 从右到左。
这是我的 table :
运行后,我希望它是这样的:
代码是golang中的QML。我没有找到任何答案。我问了好几个网站,都没有答案。
我的代码:
import QtQuick 2.0
import QtQuick.Controls 1.0
Rectangle {
id:kol
width: 360
height: 360
Rectangle {
id:mos
width: 360
height: 360
anchors.centerIn: parent
ListModel {
id: dataModel
ListElement {
color: "آبی"
text: "اول"
}
ListElement {
color: "قرمز"
text: "دوم"
}
ListElement {
color: "سبز"
text: "سوم"
}
ListElement {
color: "زرد"
text: "چهارم"
}
}
TableView {
id: view
model: dataModel
anchors.fill: parent
TableViewColumn {
width: 100
title: "رنگ"
role: "color"
}
TableViewColumn {
width: 100
title: "متن"
role: "text"
}
itemDelegate: Item {
Text {
anchors.right: parent.right
// renderType: Text.NativeRendering
text: styleData.value
}
}
}
}
}
最佳答案
Qt 文档说这样做:
Item{
//this is working for me
LayoutMirroring.enabled: true
LayoutMirroring.childrenInherit: true
TableView{
//if columns are not in right places set width for'em
TableViewColumn {
role: "operator"
title: "نوع"
}
TableViewColumn {
role: "title"
title: "کالا"
}
}
}
更新:您可以使用 QmlGrid而不是 TableView。
2019-04-23 更新:我在这里创建简单的从右到左的表格 View :
import QtQuick 2.12
import QtQuick.Controls 2.12
import QtQuick.Layouts 1.12
import QtQuick.Controls.Universal 2.12
Item {
id:root
implicitWidth: 500
clip: true
implicitHeight: 300
property alias model :listView.model
property alias currentIndex: listView.currentIndex
property var headerModel : []
ListView {
id: listView
anchors.fill: parent
onCurrentIndexChanged: {
root.currentIndexChanged()
}
//contentWidth: headerItem.width
flickableDirection: Flickable.HorizontalAndVerticalFlick
header: Row{
spacing: 0
anchors.right: parent.right
anchors.rightMargin: 0
layoutDirection: Qt.RightToLeft
function itemAt(index) {
return repeater.itemAt(index)
}
Repeater{
id:repeater
model: headerModel
Row{
layoutDirection: Qt.RightToLeft
width: modelData.width * listView.width
Label {
height: 40
clip: true
id:textArea
verticalAlignment: Text.AlignVCenter
text: modelData.name
width: parent.width -1
font.family: "B Nazanin"
font.bold: true
font.pointSize: 12
padding: 10
background: Rectangle { color: "white" }
UIcon{
text: "\uf0dc"
color: Universal.color(Universal.Cobalt)
anchors.left: parent.left
anchors.leftMargin: 0
anchors.verticalCenter: parent.verticalCenter
}
MouseArea{
clip: true
anchors.fill: parent
onClicked: {
//console.log(modelData.name)
//TODO:sort and show sorting arrow
}
}
}
Rectangle{
height: parent.height
width: 1
color: "silver"
}
}
}
}
delegate: Column {
width: parent.width
id: delegate
anchors.right: parent.right
anchors.rightMargin: 0
Rectangle{
width: parent.width
implicitHeight: 35
id:baserect
z:1
color: "white"
clip: true
Row {
anchors.fill: parent
spacing: 0
layoutDirection: Qt.RightToLeft
clip: true
Repeater {
anchors.fill: parent
model: modelData
clip: true
Row{
id:_row
layoutDirection: Qt.RightToLeft
width: childrenRect.width
Text{
clip: true
id:iDelegate
text:modelData
font.family: "B Nazanin"
font.pointSize: 11
verticalAlignment: Text.AlignVCenter
padding: 5
Binding{
target: iDelegate
property: 'width'
value: listView.headerItem.children[index].width -1
}
}
Rectangle{
height: baserect.height
width: 1
color: "silver"
}
}
}
}
Rectangle {
id:line
clip: true
color: "#808080"
width: parent.width
height: 1
}
MouseArea{
anchors.fill: parent
hoverEnabled: true
onEntered: {
//baserect.color = "gray"
}
onExited: {
//baserect.color = 'white'
}
onClicked: {
listView.currentIndex = index
}
}
}
}
focus: true
highlight: Rectangle {
z:1
color: "#77B5D3E7";
radius: 0 }
ScrollIndicator.horizontal: ScrollIndicator { }
ScrollIndicator.vertical: ScrollIndicator { }
}
}
和使用示例:
UTable{
width:500
height:300
onCurrentIndexChanged: {
console.log(currentIndex)
}
model: [["تست","تست2","تست3","تست4"],["خط 1","خط2","خط3","خط4"],["خط 1","خط2","خط3","خط4"]]
headerModel : [
{
"name":"ستون 0.3",
"width":0.3
},{
"name":"ستون 0.2",
"width":0.2
},{
"name":"ستون 0.25",
"width":0.25
},{
"name":"ستون اخر",
"width":0.25
}
]
}
这是我们的 UIcon :
import QtQuick 2.0
Item{
implicitWidth: 35
implicitHeight: 35
property alias size : icotext.font.pointSize
property alias text : icotext.text
property alias font : icotext.font.family
property alias color : icotext.color
Text {
id:icotext
anchors.centerIn: parent
font.family: "fontawesome"
text: "\uf110"
font.pointSize: 12
verticalAlignment: Text.AlignVCenter
horizontalAlignment: Text.AlignHCenter
}
}
2019-05-08 更新:
import QtQuick 2.12
import QtQuick.Controls 2.12
import QtQuick.Layouts 1.12
import QtQuick.Controls.Universal 2.12
Item {
id:root
implicitWidth: 500
clip: true
implicitHeight: 300
property alias model :listView.model
property alias currentIndex: listView.currentIndex
property bool byColName:false
property var headerModel : []
ListView {
id: listView
anchors.fill: parent
onCurrentIndexChanged: {
root.currentIndexChanged()
}
onModelChanged: {
console.log(model)
}
//contentWidth: headerItem.width
flickableDirection: Flickable.HorizontalAndVerticalFlick
header: Row{
spacing: 0
anchors.right: parent.right
anchors.rightMargin: 0
layoutDirection: Qt.RightToLeft
function itemAt(index) {
return repeater.itemAt(index)
}
Repeater{
id:repeater
model: headerModel
Row{
layoutDirection: Qt.RightToLeft
width: modelData.width * listView.width
Label {
height: 40
clip: true
id:textArea
verticalAlignment: Text.AlignVCenter
text: root.byColName?modelData.title:modelData.name
width: parent.width -1
horizontalAlignment: Text.AlignRight
font.family: "B Nazanin"
font.bold: true
font.pointSize: 12
padding: 10
background: Rectangle { color: "white" }
UIcon{
text: "\uf0dc"
color: Universal.color(Universal.Cobalt)
anchors.left: parent.left
anchors.leftMargin: 0
anchors.verticalCenter: parent.verticalCenter
}
MouseArea{
clip: true
anchors.fill: parent
onClicked: {
//console.log(modelData.name)
//TODO:sort and show sorting arrow
}
}
}
Rectangle{
height: parent.height
width: 1
color: "silver"
}
}
}
}
delegate: Column {
width: parent.width
id: delegate
anchors.right: parent.right
anchors.rightMargin: 0
Rectangle{
width: parent.width
implicitHeight: 35
id:baserect
z:1
color: "white"
clip: true
Row {
anchors.fill: parent
spacing: 0
layoutDirection: Qt.RightToLeft
clip: true
Repeater {
id:_repeater
anchors.fill: parent
property var actualModel : modelData
model: getJsonCount(modelData)
onModelChanged: {
console.log(model)
}
function getJsonCount(obj){
var count = 0
for(var key in obj){
++count;
}
return count;
}
clip: true
Row{
id:_row
layoutDirection: Qt.RightToLeft
width: childrenRect.width
Text{
clip: true
id:iDelegate
text:{
if(root.byColName){
var columnName = headerModel[index].name
var data = _repeater.actualModel[columnName]
return data;
}
else{
return _repeater.actualModel[index];
}
}
horizontalAlignment: Text.AlignRight
font.family: "B Nazanin"
font.pointSize: 11
verticalAlignment: Text.AlignVCenter
padding: 5
Binding{
target: iDelegate
property: 'width'
value: listView.headerItem.children[index].width -1
}
}
Rectangle{
height: baserect.height
width: 1
color: "silver"
}
}
}
}
Rectangle {
id:line
clip: true
color: "#808080"
width: parent.width
height: 1
}
MouseArea{
anchors.fill: parent
hoverEnabled: true
onEntered: {
//baserect.color = "gray"
}
onExited: {
//baserect.color = 'white'
}
onClicked: {
listView.currentIndex = index
}
}
}
}
focus: true
highlight: Rectangle {
z:1
color: "#77B5D3E7";
radius: 0 }
ScrollIndicator.horizontal: ScrollIndicator { }
ScrollIndicator.vertical: ScrollIndicator { }
}
}
和例子:
UTable{
id:_table
onCurrentIndexChanged: {
console.log(currentIndex)
}
byColName: true
model: [{"name":"test","family":"test2","number":5,"status":"online"},{"name":"ali","family":"alavi","number":2,"status":"offline"}]
headerModel : [
{
"title":"نام",
"name":"name",
"width":0.3
},{
"title":"خانوادگی",
"name":"family",
"width":0.2
},{
"title":"وضعیت",
"name":"status",
"width":0.25
},{
"title":"شماره",
"name":"number",
"width":0.25
}
]
}
关于go - 如何将 QML 中的表设置为 rtl?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34037565/
如果下一个元素的宽度超过指定布局的宽度,是否有 QML 布局或某些配置会自动将 QML 项目包装到下一行? 当我使用 QML GridLayout ,项目刚好离开窗口的边缘并被剪裁: GridLayo
如果下一个元素的宽度超过指定布局的宽度,是否有 QML 布局或某些配置会自动将 QML 项目包装到下一行? 当我使用 QML GridLayout ,项目刚好离开窗口的边缘并被剪裁: GridLayo
如何在 qml 文件之间发送变量或信号? http://i.stack.imgur.com/MChCG.png Mainwindow -> 创建组件Item2.qml MainWindow -> 创建
我正在做一些事情,我有一个名为“FloatingMenu”的类(它应该在 C++ 中管理菜单)及其在文件 FloatingMenu.qml 中用于 GUI 的 QML alter-ego。我有一个文件
我正在尝试做一些看似简单的事情,但失败了:定义一个简单的内联文本格式组件,然后用不同的文本多次实例化它。这是代码 Item { . . . Component { id: favButtonL
我可以在页面中使用 InvokeActionItem 轻松共享项目,但我需要能够在 ListView 项目中调用它。我设法触发了一个调用,但我不知道如何在触发它时添加数据。我不断收到错误消息 Invo
我如何在 QML 中检测 Window {} 之外的点击? Rectangle { id: topLevel height: 400; width: 400 Window {
我试过 : var child = grid.children[slot1]; grid.children[slot1] = grid.children[slot2]; grid.children[s
例如,我希望创建一个包含 100 个文本编辑器的 qml 窗口,如何在循环中创建它?那可能吗? 最佳答案 循环是命令式代码,所以它不是 QML,而是 Javascript 或 C++。所以当然,你可以
这是我的 QML 文件,其中包含一个文本组件: import QtQuick 2.0 Item { id: idItmWrapText Text { id: idTxt
我正在寻找一种方法来显示一个文本提示,说明预期的输入作为对用户的建议。以谷歌搜索栏为例: 是否有我缺少的属性,或者这是必须通过脚本来实现的? 最佳答案 Qt Quick 输入项上不存在该属性。您可以为
为 qml 项设置背景的最简单方法是让子矩形的 anchor 完全填满父项: Item { width: 320 height: 240 Rectangle {
我想将属性动态添加到 QML 元素: Item { id: dynamicProperty; property int first; Component.onCompleted: { /*
我用 PySide 和 QML 编写了某种安装程序。按照设计,它必须是多页的。而且我想将要从 QML 表单调用的插槽划分为不同的对象(理想情况下,划分为模块,但据我了解,带有插槽的对象必须继承 QOb
QML 中有没有办法用 opacity: 0 创建一个矩形?仍然有可见的边界?如果没有,有关如何解决它的任何建议? 谢谢 最佳答案 不,不透明度适用于项目的完整视觉方面(并且不透明度:0 使项目完全不
属性变体 a:{}似乎不起作用。 a 最终未定义,而不是一个空字典。 我对 Javascript 不是很有经验...初始化属性以保存空字典的正确方法是什么? 以下 qml 在控制台上打印“qrc:/m
我在 SO 上查看了大量关于 QML 内容边距的问题,但所有答案都指向缺少 spacing: 0 属性。我已经完成了所有这些,但仍然有一些我无法消除的奇怪空间。任何人都可以解释为什么这个 QML 代码
我有一个用于样式定义的 QML 单例,定义如下: pragma Singleton import QtQuick 2.2 import QtQuick.Controls 1.1 import QtQu
这是以下代码的结果: 主.qml import QtQuick 2.8 Item { Reusable { index: 1234 // reusable with
属性变体 a:{}似乎不起作用。 a 最终未定义,而不是一个空字典。 我对 Javascript 不是很有经验...初始化属性以保存空字典的正确方法是什么? 以下 qml 在控制台上打印“qrc:/m
我是一名优秀的程序员,十分优秀!