mirror of
https://github.com/bluszcz/cutego.git
synced 2024-09-29 05:35:16 +03:00
new common + quick/errors examples
This commit is contained in:
parent
bb6259c35d
commit
dc62b1d5ff
21 changed files with 1851 additions and 1 deletions
90
internal/examples/common/qml/buttons.go
Normal file
90
internal/examples/common/qml/buttons.go
Normal file
|
@ -0,0 +1,90 @@
|
|||
package main
|
||||
|
||||
func buttons() {
|
||||
|
||||
//Push Button
|
||||
createWidget("Push Button", `
|
||||
Item {
|
||||
Button {
|
||||
anchors.centerIn: parent
|
||||
text: "Push Button"
|
||||
onClicked: console.log("You Clicked The Push Button")
|
||||
}
|
||||
}
|
||||
`)
|
||||
|
||||
//Tool Button (+ ToolBar)
|
||||
createWidget("Tool Button", `
|
||||
Item {
|
||||
ToolBar {
|
||||
RowLayout {
|
||||
anchors.fill: parent
|
||||
|
||||
ToolButton {
|
||||
Layout.fillHeight: true
|
||||
text: "Tool Button"
|
||||
onClicked: console.log("You Clicked The Tool Button")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
`)
|
||||
|
||||
//Radio Button
|
||||
createWidget("Radio Button", `
|
||||
Item {
|
||||
ColumnLayout {
|
||||
anchors.fill: parent
|
||||
|
||||
ExclusiveGroup { id: radioGroup }
|
||||
|
||||
RadioButton {
|
||||
text: "Radio Button 0"
|
||||
onClicked: console.log("You Clicked The " + text)
|
||||
exclusiveGroup: radioGroup
|
||||
}
|
||||
|
||||
RadioButton {
|
||||
text: "Radio Button 1"
|
||||
onClicked: console.log("You Clicked The " + text)
|
||||
exclusiveGroup: radioGroup
|
||||
}
|
||||
|
||||
RadioButton {
|
||||
text: "Radio Button 2"
|
||||
onClicked: console.log("You Clicked The " + text)
|
||||
exclusiveGroup: radioGroup
|
||||
}
|
||||
}
|
||||
}`)
|
||||
|
||||
//Check Box
|
||||
createWidget("Check Box", `
|
||||
Item {
|
||||
CheckBox {
|
||||
anchors.centerIn: parent
|
||||
text: "Check Box"
|
||||
onClicked: console.log("You Clicked The Check Box :", checked)
|
||||
}
|
||||
}`)
|
||||
|
||||
//Dialog Button Box
|
||||
createWidget("Dialog Button Box", `
|
||||
Item {
|
||||
RowLayout {
|
||||
anchors.fill: parent
|
||||
|
||||
Button {
|
||||
text: "Cancel"
|
||||
onClicked: console.log("You Clicked The Accept Button")
|
||||
}
|
||||
|
||||
Button {
|
||||
text: "OK"
|
||||
isDefault: true
|
||||
onClicked: console.log("You Clicked The Reject Button")
|
||||
}
|
||||
}
|
||||
}`)
|
||||
|
||||
}
|
145
internal/examples/common/qml/containers.go
Normal file
145
internal/examples/common/qml/containers.go
Normal file
|
@ -0,0 +1,145 @@
|
|||
package main
|
||||
|
||||
func containers() {
|
||||
|
||||
//Group Box
|
||||
createWidget("Group Box", `
|
||||
Item {
|
||||
GroupBox {
|
||||
anchors.centerIn: parent
|
||||
title: "Group Box"
|
||||
|
||||
ColumnLayout {
|
||||
Button {
|
||||
text: "Push Button: 0"
|
||||
}
|
||||
|
||||
Button {
|
||||
text: "Push Button: 1"
|
||||
}
|
||||
|
||||
Button {
|
||||
text: "Push Button: 2"
|
||||
}
|
||||
}
|
||||
}
|
||||
}`)
|
||||
|
||||
//Scroll Area
|
||||
createWidget("Scroll Area", `
|
||||
ScrollView {
|
||||
GridLayout {
|
||||
width: 250
|
||||
height: 250
|
||||
|
||||
rowSpacing: 0
|
||||
columnSpacing: 0
|
||||
columns: 2
|
||||
|
||||
Rectangle {
|
||||
Layout.fillWidth: true
|
||||
Layout.fillHeight: true
|
||||
color: "blue"
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
Layout.fillWidth: true
|
||||
Layout.fillHeight: true
|
||||
color: "red"
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
Layout.fillWidth: true
|
||||
Layout.fillHeight: true
|
||||
color: "green"
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
Layout.fillWidth: true
|
||||
Layout.fillHeight: true
|
||||
color: "yellow"
|
||||
}
|
||||
}
|
||||
}`)
|
||||
|
||||
//Tab Widget
|
||||
createWidget("Tab Widget", `
|
||||
TabView {
|
||||
Tab {
|
||||
title: "red"
|
||||
Rectangle { color: "red" }
|
||||
}
|
||||
Tab {
|
||||
title: "blue"
|
||||
Rectangle { color: "blue" }
|
||||
}
|
||||
Tab {
|
||||
title: "green"
|
||||
Rectangle { color: "green" }
|
||||
}
|
||||
Tab {
|
||||
title: "yellow"
|
||||
Rectangle { color: "yellow" }
|
||||
}
|
||||
}`)
|
||||
|
||||
//Stacked Widget
|
||||
createWidget("Stacked Widget", `
|
||||
MouseArea {
|
||||
|
||||
Text {
|
||||
z: 1
|
||||
anchors.centerIn: parent
|
||||
text: "Click Me!"
|
||||
}
|
||||
|
||||
StackView {
|
||||
id: stack
|
||||
anchors.fill: parent
|
||||
|
||||
initialItem: blue
|
||||
|
||||
Rectangle {
|
||||
id: blue
|
||||
color: "blue"
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
id: red
|
||||
color: "red"
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
id: green
|
||||
color: "green"
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
id: yellow
|
||||
color: "yellow"
|
||||
}
|
||||
}
|
||||
|
||||
onClicked: {
|
||||
switch (stack.depth) {
|
||||
case 1:
|
||||
stack.push(red)
|
||||
break;
|
||||
|
||||
case 2:
|
||||
stack.push(green)
|
||||
break;
|
||||
|
||||
case 3:
|
||||
stack.push(yellow)
|
||||
break;
|
||||
|
||||
case 4:
|
||||
stack.pop(blue)
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
`)
|
||||
|
||||
}
|
64
internal/examples/common/qml/displayWidgets.go
Normal file
64
internal/examples/common/qml/displayWidgets.go
Normal file
|
@ -0,0 +1,64 @@
|
|||
package main
|
||||
|
||||
func displayWidgets() {
|
||||
|
||||
//Label
|
||||
createWidget("Label", `
|
||||
Item {
|
||||
Label {
|
||||
anchors.centerIn: parent
|
||||
text: "This Is A Label"
|
||||
}
|
||||
}`)
|
||||
|
||||
//Text
|
||||
createWidget("Text", `
|
||||
Item {
|
||||
Text {
|
||||
anchors.centerIn: parent
|
||||
text: "This Is A Text Item"
|
||||
}
|
||||
}`)
|
||||
|
||||
//Calendar Widget
|
||||
createWidget("Calendar Widget", `
|
||||
Calendar {
|
||||
onClicked: console.log("Calender Widget Selected Date Changed To:", date)
|
||||
}`)
|
||||
|
||||
//Progress Bar
|
||||
createWidget("Progress Bar", `
|
||||
Item {
|
||||
ProgressBar {
|
||||
id: progressBar
|
||||
anchors.centerIn: parent
|
||||
|
||||
minimumValue: 0
|
||||
maximumValue: 1000
|
||||
value: 500
|
||||
|
||||
NumberAnimation on value {
|
||||
from: 0
|
||||
to: 1000
|
||||
duration: 4000
|
||||
loops: Animation.Infinite
|
||||
}
|
||||
}
|
||||
}`)
|
||||
|
||||
//Image
|
||||
createWidget("Image", `
|
||||
Image {
|
||||
fillMode: Image.PreserveAspectFit
|
||||
source: "qrc:///qml/earth.png"
|
||||
}`)
|
||||
|
||||
//BusyIndicator
|
||||
createWidget("Busy Indicator", `
|
||||
Item {
|
||||
BusyIndicator {
|
||||
anchors.centerIn: parent
|
||||
}
|
||||
}`)
|
||||
|
||||
}
|
170
internal/examples/common/qml/inputWidgets.go
Normal file
170
internal/examples/common/qml/inputWidgets.go
Normal file
|
@ -0,0 +1,170 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"github.com/therecipe/qt/core"
|
||||
)
|
||||
|
||||
func inputWidgets() {
|
||||
|
||||
//Abstract List Model Used By The Combo Box
|
||||
listDB := []string{"Some", "Combo", "Box", "Items"}
|
||||
listModel := core.NewQAbstractListModel(nil)
|
||||
listModel.ConnectRowCount(func(parent *core.QModelIndex) int {
|
||||
return len(listDB)
|
||||
})
|
||||
listModel.ConnectData(func(index *core.QModelIndex, role int) *core.QVariant {
|
||||
if role != int(core.Qt__DisplayRole) {
|
||||
return core.NewQVariant()
|
||||
}
|
||||
return core.NewQVariant14(listDB[index.Row()])
|
||||
})
|
||||
|
||||
//Combo Box
|
||||
createWidget("Combo Box", `
|
||||
Item {
|
||||
ComboBox {
|
||||
anchors.centerIn: parent
|
||||
model: ["Some", "Combo", "Box", "Items"]
|
||||
onActivated: console.log("Combo Box Index Changed To:", index, model[index])
|
||||
}
|
||||
}`)
|
||||
|
||||
//Combo Box + List Model
|
||||
createWidget("Combo Box + List Model", `
|
||||
Item {
|
||||
ComboBox {
|
||||
anchors.centerIn: parent
|
||||
model: ListModel {
|
||||
ListElement { text: "Some" }
|
||||
ListElement { text: "Combo" }
|
||||
ListElement { text: "Box" }
|
||||
ListElement { text: "Items" }
|
||||
}
|
||||
|
||||
onActivated: console.log("Combo Box Index Changed To:", index, model.get(index).text)
|
||||
}
|
||||
}`)
|
||||
|
||||
//Combo Box + Go Model
|
||||
createWidgetWithContext("Combo Box + Go Model", `
|
||||
Item {
|
||||
ComboBox {
|
||||
anchors.centerIn: parent
|
||||
model: goListModel
|
||||
|
||||
textRole: "display"
|
||||
onActivated: console.log("Combo Box Index Changed To:", index, model.data(model.index(index, 0)))
|
||||
}
|
||||
}`, "goListModel", listModel)
|
||||
|
||||
//Combo Box + Go String List Model
|
||||
createWidgetWithContext("Combo Box + Go String List Model", `
|
||||
Item {
|
||||
ComboBox {
|
||||
anchors.centerIn: parent
|
||||
model: goListModel
|
||||
|
||||
textRole: "display"
|
||||
onActivated: console.log("Combo Box Index Changed To:", index, model.data(model.index(index, 0)))
|
||||
}
|
||||
}`, "goListModel", core.NewQStringListModel2(listDB, nil))
|
||||
|
||||
//Text Field
|
||||
createWidget("Text Field", `
|
||||
Item {
|
||||
TextField {
|
||||
anchors.centerIn: parent
|
||||
onTextChanged: console.log("Text Field Text Changed To:", text)
|
||||
}
|
||||
}
|
||||
`)
|
||||
|
||||
//Text Input
|
||||
createWidget("Text Input", `
|
||||
Item {
|
||||
TextInput {
|
||||
anchors.centerIn: parent
|
||||
text: "Some Editable Text"
|
||||
onTextChanged: console.log("Text Input Text Changed To:", text)
|
||||
}
|
||||
}
|
||||
`)
|
||||
|
||||
//Text Area
|
||||
createWidget("Text Area", `
|
||||
TextArea {
|
||||
onTextChanged: console.log("Text Area Text Changed To:", text)
|
||||
}
|
||||
`)
|
||||
|
||||
//Text Edit
|
||||
createWidget("Text Edit", `
|
||||
TextEdit {
|
||||
onTextChanged: console.log("Text Edit Text Changed To:", text)
|
||||
}
|
||||
`)
|
||||
|
||||
//Spin Box
|
||||
createWidget("Spin Box", `
|
||||
Item {
|
||||
SpinBox {
|
||||
anchors.centerIn: parent
|
||||
minimumValue: 0
|
||||
maximumValue: 1000
|
||||
value: 500
|
||||
onValueChanged: console.log("Spin Box Value Changed To:", value)
|
||||
}
|
||||
}`)
|
||||
|
||||
//Double Spin Box
|
||||
createWidget("Double Spin Box", `
|
||||
Item {
|
||||
SpinBox {
|
||||
anchors.centerIn: parent
|
||||
minimumValue: 0
|
||||
maximumValue: 1000
|
||||
value: 500
|
||||
decimals: 2
|
||||
onValueChanged: console.log("Spin Box Value Changed To:", value)
|
||||
}
|
||||
}`)
|
||||
|
||||
//Switch
|
||||
createWidget("Switch", `
|
||||
Item {
|
||||
Switch {
|
||||
anchors.centerIn: parent
|
||||
onClicked: console.log("Switch Button Clicked:", checked)
|
||||
}
|
||||
}`)
|
||||
|
||||
//Horizontal Slider
|
||||
createWidget("Horizontal Slider", `
|
||||
Item {
|
||||
Slider {
|
||||
anchors.centerIn: parent
|
||||
minimumValue: 0
|
||||
maximumValue: 1000
|
||||
value: 500
|
||||
orientation: Qt.Horizontal
|
||||
stepSize: 1
|
||||
onValueChanged: console.log("Horizontal Slider Value Changed To:", value)
|
||||
}
|
||||
}
|
||||
`)
|
||||
|
||||
//Vertical Slider
|
||||
createWidget("Vertical Slider", `
|
||||
Item {
|
||||
Slider {
|
||||
anchors.centerIn: parent
|
||||
minimumValue: 0
|
||||
maximumValue: 1000
|
||||
value: 500
|
||||
orientation: Qt.Vertical
|
||||
stepSize: 1
|
||||
onValueChanged: console.log("Vertical Slider Value Changed To:", value)
|
||||
}
|
||||
}
|
||||
`)
|
||||
}
|
301
internal/examples/common/qml/itemViews.go
Normal file
301
internal/examples/common/qml/itemViews.go
Normal file
|
@ -0,0 +1,301 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"github.com/therecipe/qt/core"
|
||||
"github.com/therecipe/qt/gui"
|
||||
)
|
||||
|
||||
func itemViews() {
|
||||
|
||||
//Abstract List Model Used By The List And Table View
|
||||
listDB := []map[string]string{
|
||||
{"name": "Apple", "cost": "2.45"},
|
||||
{"name": "Orange", "cost": "3.25"},
|
||||
{"name": "Banana", "cost": "1.95"},
|
||||
}
|
||||
listRoles := map[int]*core.QByteArray{
|
||||
int(core.Qt__UserRole) + 1: core.NewQByteArray2("name", -1),
|
||||
int(core.Qt__UserRole) + 2: core.NewQByteArray2("cost", -1),
|
||||
}
|
||||
|
||||
listModel := core.NewQAbstractListModel(nil)
|
||||
listModel.ConnectRowCount(func(parent *core.QModelIndex) int {
|
||||
return len(listDB)
|
||||
})
|
||||
listModel.ConnectData(func(index *core.QModelIndex, role int) *core.QVariant {
|
||||
if _, ok := listRoles[role]; !ok {
|
||||
return core.NewQVariant()
|
||||
}
|
||||
return core.NewQVariant14(listDB[index.Row()][listRoles[role].ConstData()])
|
||||
})
|
||||
listModel.ConnectRoleNames(func() map[int]*core.QByteArray {
|
||||
return listRoles
|
||||
})
|
||||
|
||||
//Standard Item Model Used By The Tree View
|
||||
treeModel := gui.NewQStandardItemModel(nil)
|
||||
rootNode := treeModel.InvisibleRootItem()
|
||||
|
||||
americaItem := gui.NewQStandardItem2("America")
|
||||
mexicoItem := gui.NewQStandardItem2("Canada")
|
||||
usaItem := gui.NewQStandardItem2("USA")
|
||||
bostonItem := gui.NewQStandardItem2("Boston")
|
||||
europeItem := gui.NewQStandardItem2("Europe")
|
||||
italyItem := gui.NewQStandardItem2("Italy")
|
||||
romeItem := gui.NewQStandardItem2("Rome")
|
||||
veronaItem := gui.NewQStandardItem2("Verona")
|
||||
|
||||
rootNode.AppendRow2(americaItem)
|
||||
rootNode.AppendRow2(europeItem)
|
||||
americaItem.AppendRow2(mexicoItem)
|
||||
americaItem.AppendRow2(usaItem)
|
||||
usaItem.AppendRow2(bostonItem)
|
||||
europeItem.AppendRow2(italyItem)
|
||||
italyItem.AppendRow2(romeItem)
|
||||
italyItem.AppendRow2(veronaItem)
|
||||
|
||||
//List View + List Model
|
||||
createWidget("List View + List Model", `
|
||||
ListView {
|
||||
model: ListModel {
|
||||
|
||||
ListElement {
|
||||
name: "Apple"
|
||||
cost: 2.45
|
||||
}
|
||||
|
||||
ListElement {
|
||||
name: "Orange"
|
||||
cost: 3.25
|
||||
}
|
||||
|
||||
ListElement {
|
||||
name: "Banana"
|
||||
cost: 1.95
|
||||
}
|
||||
}
|
||||
|
||||
delegate: RowLayout {
|
||||
Text { text: "Fruit: " + name }
|
||||
Text { text: "Cost: $" + cost }
|
||||
}
|
||||
}`)
|
||||
|
||||
//List View + JSON Model
|
||||
createWidget("List View + JSON Model", `
|
||||
ListView {
|
||||
model: ListModel {
|
||||
|
||||
Component.onCompleted: {
|
||||
var elements =
|
||||
[
|
||||
{ "name": "Apple", "cost": "2.45" },
|
||||
{ "name": "Orange", "cost": "3.25" },
|
||||
{ "name": "Banana", "cost": "1.95" }
|
||||
]
|
||||
|
||||
for (var i = 0; i < elements.length; i++) {
|
||||
append(elements[i])
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
delegate: RowLayout {
|
||||
Text { text: "Fruit: " + name }
|
||||
Text { text: "Cost: $" + cost }
|
||||
}
|
||||
}`)
|
||||
|
||||
//List View + Go Model
|
||||
createWidgetWithContext("List View + Go Model", `
|
||||
ListView {
|
||||
model: goListModel
|
||||
|
||||
delegate: RowLayout {
|
||||
Text { text: "Fruit: " + name }
|
||||
Text { text: "Cost: $" + cost }
|
||||
}
|
||||
}`, "goListModel", listModel)
|
||||
|
||||
//List View + Go String List Model
|
||||
createWidgetWithContext("List View + Go String List Model", `
|
||||
ListView {
|
||||
model: goListModel
|
||||
delegate: Text { text: display }
|
||||
}`, "goListModel", core.NewQStringListModel2([]string{"Some", "String", "List", "Items"}, nil))
|
||||
|
||||
//Tree View + List Model
|
||||
//TODO:
|
||||
|
||||
//Tree View + JSON Model
|
||||
//TODO:
|
||||
|
||||
//Tree View + Go Model
|
||||
createWidgetWithContext("Tree View + Go Model", `
|
||||
TreeView {
|
||||
model: goTreeModel
|
||||
|
||||
TableViewColumn {
|
||||
role: "display"
|
||||
}
|
||||
}`, "goTreeModel", treeModel)
|
||||
|
||||
//Table View + List Model
|
||||
createWidget("Table View + List Model", `
|
||||
TableView {
|
||||
model: ListModel {
|
||||
|
||||
ListElement {
|
||||
name: "Apple"
|
||||
cost: 2.45
|
||||
}
|
||||
|
||||
ListElement {
|
||||
name: "Orange"
|
||||
cost: 3.25
|
||||
}
|
||||
|
||||
ListElement {
|
||||
name: "Banana"
|
||||
cost: 1.95
|
||||
}
|
||||
}
|
||||
|
||||
TableViewColumn {
|
||||
role: "name"
|
||||
title: role
|
||||
}
|
||||
|
||||
TableViewColumn {
|
||||
role: "cost"
|
||||
title: role
|
||||
}
|
||||
}`)
|
||||
|
||||
//Table View + JSON Model
|
||||
createWidget("Table View + JSON Model", `
|
||||
TableView {
|
||||
model: ListModel {
|
||||
|
||||
Component.onCompleted: {
|
||||
var elements =
|
||||
[
|
||||
{ "name": "Apple", "cost": "2.45" },
|
||||
{ "name": "Orange", "cost": "3.25" },
|
||||
{ "name": "Banana", "cost": "1.95" }
|
||||
]
|
||||
|
||||
for (var i = 0; i < elements.length; i++) {
|
||||
append(elements[i])
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
TableViewColumn {
|
||||
role: "name"
|
||||
title: role
|
||||
}
|
||||
|
||||
TableViewColumn {
|
||||
role: "cost"
|
||||
title: role
|
||||
}
|
||||
}`)
|
||||
|
||||
//Table View + Go Model
|
||||
createWidgetWithContext("Table View + Go Model", `
|
||||
TableView {
|
||||
model: goListModel
|
||||
|
||||
TableViewColumn {
|
||||
role: "name"
|
||||
title: role
|
||||
}
|
||||
|
||||
TableViewColumn {
|
||||
role: "cost"
|
||||
title: role
|
||||
}
|
||||
}`, "goListModel", listModel)
|
||||
|
||||
//Grid View + List Model
|
||||
createWidget("Grid View + List Model", `
|
||||
GridView {
|
||||
cellWidth: width / (model.count / 2)
|
||||
cellHeight: height / (model.count / 2)
|
||||
|
||||
model: ListModel {
|
||||
|
||||
ListElement {
|
||||
color: "blue"
|
||||
}
|
||||
|
||||
ListElement {
|
||||
color: "red"
|
||||
}
|
||||
|
||||
ListElement {
|
||||
color: "green"
|
||||
}
|
||||
|
||||
ListElement {
|
||||
color: "yellow"
|
||||
}
|
||||
}
|
||||
|
||||
delegate: Rectangle {
|
||||
width: cellWidth
|
||||
height: cellHeight
|
||||
|
||||
color: model.color
|
||||
}
|
||||
}`)
|
||||
|
||||
//Grid View + JSON Model
|
||||
createWidget("Grid View + JSON Model", `
|
||||
GridView {
|
||||
cellWidth: width / (model.count / 2)
|
||||
cellHeight: height / (model.count / 2)
|
||||
|
||||
model: ListModel {
|
||||
|
||||
Component.onCompleted: {
|
||||
var elements =
|
||||
[
|
||||
{ "color": "blue" },
|
||||
{ "color": "red" },
|
||||
{ "color": "green" },
|
||||
{ "color": "yellow" }
|
||||
]
|
||||
|
||||
for (var i = 0; i < elements.length; i++) {
|
||||
append(elements[i])
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
delegate: Rectangle {
|
||||
width: cellWidth
|
||||
height: cellHeight
|
||||
|
||||
color: model.color
|
||||
}
|
||||
}`)
|
||||
|
||||
//Grid View + Go Model
|
||||
createWidgetWithContext("Grid View + Go Model", `
|
||||
GridView {
|
||||
cellWidth: width / (model.count / 2)
|
||||
cellHeight: height / (model.count / 2)
|
||||
|
||||
model: goListModel
|
||||
|
||||
delegate: Rectangle {
|
||||
width: cellWidth
|
||||
height: cellHeight
|
||||
|
||||
color: display
|
||||
}
|
||||
}`, "goListModel", core.NewQStringListModel2([]string{"blue", "red", "green", "yellow"}, nil))
|
||||
|
||||
}
|
117
internal/examples/common/qml/layouts.go
Normal file
117
internal/examples/common/qml/layouts.go
Normal file
|
@ -0,0 +1,117 @@
|
|||
package main
|
||||
|
||||
func layouts() {
|
||||
|
||||
//Vertical Layout
|
||||
createWidget("Vertical Layout", `
|
||||
ColumnLayout {
|
||||
spacing: 0
|
||||
|
||||
Rectangle {
|
||||
Layout.fillWidth: true
|
||||
Layout.preferredHeight: parent.height * 0.3
|
||||
color: "blue"
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
Layout.fillWidth: true
|
||||
Layout.fillHeight: true
|
||||
color: "red"
|
||||
}
|
||||
}`)
|
||||
|
||||
//Horizontal Layout
|
||||
createWidget("Horizontal Layout", `
|
||||
RowLayout {
|
||||
spacing: 0
|
||||
|
||||
Rectangle {
|
||||
Layout.preferredWidth: parent.width * 0.3
|
||||
Layout.fillHeight: true
|
||||
color: "blue"
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
Layout.fillWidth: true
|
||||
Layout.fillHeight: true
|
||||
color: "red"
|
||||
}
|
||||
}`)
|
||||
|
||||
//Grid Layout
|
||||
createWidget("Grid Layout", `
|
||||
GridLayout {
|
||||
rowSpacing: 0
|
||||
columnSpacing: 0
|
||||
columns: 2
|
||||
|
||||
Rectangle {
|
||||
Layout.fillWidth: true
|
||||
Layout.fillHeight: true
|
||||
color: "blue"
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
Layout.fillWidth: true
|
||||
Layout.fillHeight: true
|
||||
color: "red"
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
Layout.fillWidth: true
|
||||
Layout.fillHeight: true
|
||||
color: "green"
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
Layout.fillWidth: true
|
||||
Layout.fillHeight: true
|
||||
color: "yellow"
|
||||
}
|
||||
}`)
|
||||
|
||||
//Stack Layout
|
||||
createWidget("Stack Layout", `
|
||||
MouseArea {
|
||||
|
||||
Text {
|
||||
z: 1
|
||||
anchors.centerIn: parent
|
||||
text: "Click Me!"
|
||||
}
|
||||
|
||||
StackLayout {
|
||||
id: stackLayout
|
||||
anchors.fill: parent
|
||||
|
||||
Rectangle {
|
||||
Layout.fillWidth: true
|
||||
Layout.fillHeight: true
|
||||
color: "blue"
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
Layout.fillWidth: true
|
||||
Layout.fillHeight: true
|
||||
color: "red"
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
Layout.fillWidth: true
|
||||
Layout.fillHeight: true
|
||||
color: "green"
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
Layout.fillWidth: true
|
||||
Layout.fillHeight: true
|
||||
color: "yellow"
|
||||
}
|
||||
|
||||
onCurrentIndexChanged: if (currentIndex >= count) { currentIndex = 0 }
|
||||
}
|
||||
|
||||
onClicked: stackLayout.currentIndex++
|
||||
}`)
|
||||
|
||||
}
|
82
internal/examples/common/qml/main.go
Normal file
82
internal/examples/common/qml/main.go
Normal file
|
@ -0,0 +1,82 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"io/ioutil"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
|
||||
"github.com/therecipe/qt/core"
|
||||
"github.com/therecipe/qt/quick"
|
||||
"github.com/therecipe/qt/widgets"
|
||||
)
|
||||
|
||||
var (
|
||||
centralLayout *widgets.QGridLayout
|
||||
centralLayoutRow int
|
||||
centralLayoutColumn int
|
||||
)
|
||||
|
||||
func main() {
|
||||
widgets.NewQApplication(len(os.Args), os.Args)
|
||||
|
||||
mainWindow := widgets.NewQMainWindow(nil, 0)
|
||||
mainWindow.SetWindowTitle("Common QML (+ Quick Controls 1)")
|
||||
|
||||
scrollWidget := widgets.NewQScrollArea(nil)
|
||||
|
||||
centralWidget := widgets.NewQWidget(nil, 0)
|
||||
centralLayout = widgets.NewQGridLayout(centralWidget)
|
||||
|
||||
layouts()
|
||||
buttons()
|
||||
itemViews()
|
||||
containers()
|
||||
inputWidgets()
|
||||
displayWidgets()
|
||||
|
||||
scrollWidget.SetWidget(centralWidget)
|
||||
|
||||
mainWindow.SetCentralWidget(scrollWidget)
|
||||
mainWindow.ShowMaximized()
|
||||
|
||||
widgets.QApplication_Exec()
|
||||
}
|
||||
|
||||
func addWidget(widget widgets.QWidget_ITF) {
|
||||
|
||||
if centralLayoutColumn > 6 {
|
||||
centralLayoutColumn = 0
|
||||
centralLayoutRow++
|
||||
}
|
||||
|
||||
wrappedWidget := widgets.NewQGroupBox2(widget.QWidget_PTR().WindowTitle(), nil)
|
||||
wrappedWidgetLayout := widgets.NewQVBoxLayout2(wrappedWidget)
|
||||
wrappedWidgetLayout.AddWidget(widget, 0, core.Qt__AlignCenter)
|
||||
|
||||
widget.QWidget_PTR().SetFixedSize2(200, 200)
|
||||
|
||||
wrappedWidget.SetFixedSize2(250, 250)
|
||||
|
||||
centralLayout.AddWidget(wrappedWidget, centralLayoutRow, centralLayoutColumn, core.Qt__AlignCenter)
|
||||
|
||||
centralLayoutColumn++
|
||||
}
|
||||
|
||||
func createWidgetWithContext(name, code, ctxName string, ctx core.QObject_ITF) {
|
||||
quickWidget := quick.NewQQuickWidget(nil)
|
||||
quickWidget.SetWindowTitle(name)
|
||||
|
||||
quickWidget.RootContext().SetContextProperty(ctxName, ctx)
|
||||
|
||||
quickWidget.SetResizeMode(quick.QQuickWidget__SizeRootObjectToView)
|
||||
|
||||
path := filepath.Join(os.TempDir(), "tmp"+strings.Replace(name, " ", "", -1)+".qml")
|
||||
ioutil.WriteFile(path, []byte("import QtQuick 2.0\nimport QtQuick.Layouts 1.3\nimport QtQuick.Controls 1.4\n"+code), 0644)
|
||||
quickWidget.SetSource(core.QUrl_FromLocalFile(path))
|
||||
addWidget(quickWidget)
|
||||
}
|
||||
|
||||
func createWidget(name, code string) {
|
||||
createWidgetWithContext(name, code, "", nil)
|
||||
}
|
BIN
internal/examples/common/qml/qml/earth.png
Normal file
BIN
internal/examples/common/qml/qml/earth.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 45 KiB |
7
internal/examples/common/qml/qml/stub.qml
Normal file
7
internal/examples/common/qml/qml/stub.qml
Normal file
|
@ -0,0 +1,7 @@
|
|||
import QtQuick 2.0
|
||||
import QtQuick.Layouts 1.3
|
||||
import QtQuick.Controls 1.4
|
||||
|
||||
Item {}
|
||||
|
||||
//this file is just here to inform qtdeploy about the needed QML dependencies
|
83
internal/examples/common/widgets/buttons.go
Normal file
83
internal/examples/common/widgets/buttons.go
Normal file
|
@ -0,0 +1,83 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/therecipe/qt/core"
|
||||
"github.com/therecipe/qt/widgets"
|
||||
)
|
||||
|
||||
func buttons() {
|
||||
|
||||
//Push Button
|
||||
pushButton := widgets.NewQPushButton2("Push Button", nil)
|
||||
pushButton.SetWindowTitle("Push Button")
|
||||
|
||||
pushButton.ConnectClicked(func(checked bool) {
|
||||
println("You Clicked The Push Button")
|
||||
})
|
||||
addWidget(pushButton)
|
||||
|
||||
//Tool Button (+ ToolBar)
|
||||
toolWindow := widgets.NewQMainWindow(nil, 0)
|
||||
toolWindow.SetWindowTitle("Tool Button")
|
||||
|
||||
toolBar := toolWindow.AddToolBar3("Just Some ToolBar")
|
||||
toolBar.SetAllowedAreas(core.Qt__AllToolBarAreas)
|
||||
toolBar.SetMovable(true)
|
||||
toolBar.SetFloatable(true)
|
||||
|
||||
toolButton := widgets.NewQToolButton(nil)
|
||||
toolButton.SetIcon(toolButton.Style().StandardIcon(widgets.QStyle__SP_DialogHelpButton, nil, nil))
|
||||
toolButton.ConnectClicked(func(checked bool) {
|
||||
println("You Clicked The Tool Button")
|
||||
toolBar.AddSeparator()
|
||||
})
|
||||
toolBar.AddWidget(toolButton)
|
||||
addWidget(toolWindow)
|
||||
|
||||
//Radio Button
|
||||
radioButtonGroup := widgets.NewQWidget(nil, 0)
|
||||
radioButtonGroup.SetWindowTitle("Radio Button")
|
||||
radioButtonGroupLayout := widgets.NewQVBoxLayout2(radioButtonGroup)
|
||||
|
||||
for i := 0; i < 3; i++ {
|
||||
radioButton := widgets.NewQRadioButton2(fmt.Sprintf("Radio Button %v", i), nil)
|
||||
radioButton.ConnectClicked(func(checked bool) {
|
||||
println("You Clicked The " + radioButton.Text())
|
||||
})
|
||||
radioButtonGroupLayout.AddWidget(radioButton, 0, 0)
|
||||
}
|
||||
addWidget(radioButtonGroup)
|
||||
|
||||
//Check Box
|
||||
checkBox := widgets.NewQCheckBox2("Check Box", nil)
|
||||
checkBox.SetWindowTitle("Check Box")
|
||||
|
||||
checkBox.ConnectClicked(func(checked bool) {
|
||||
println("You Clicked The Check Box :", checked)
|
||||
})
|
||||
addWidget(checkBox)
|
||||
|
||||
//Command Link Button
|
||||
commandLinkButton := widgets.NewQCommandLinkButton2("Command Link Button", nil)
|
||||
commandLinkButton.SetWindowTitle("Command Link Button")
|
||||
|
||||
commandLinkButton.ConnectClicked(func(checked bool) {
|
||||
println("You Clicked The Command Link Button")
|
||||
})
|
||||
addWidget(commandLinkButton)
|
||||
|
||||
//Dialog Button Box
|
||||
dialogButtonBox := widgets.NewQDialogButtonBox3(widgets.QDialogButtonBox__Cancel|widgets.QDialogButtonBox__Ok, nil)
|
||||
dialogButtonBox.SetWindowTitle("Dialog Button Box")
|
||||
|
||||
dialogButtonBox.ConnectAccepted(func() {
|
||||
println("You Clicked The Accept Button")
|
||||
})
|
||||
dialogButtonBox.ConnectRejected(func() {
|
||||
println("You Clicked The Reject Button")
|
||||
})
|
||||
addWidget(dialogButtonBox)
|
||||
|
||||
}
|
151
internal/examples/common/widgets/containers.go
Normal file
151
internal/examples/common/widgets/containers.go
Normal file
|
@ -0,0 +1,151 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/therecipe/qt/core"
|
||||
"github.com/therecipe/qt/widgets"
|
||||
)
|
||||
|
||||
func containers() {
|
||||
|
||||
//Group Box
|
||||
groupBox := widgets.NewQGroupBox2("Group Box", nil)
|
||||
groupBox.SetWindowTitle("Group Box")
|
||||
groupBoxLayout := widgets.NewQVBoxLayout2(groupBox)
|
||||
|
||||
for i := 0; i < 3; i++ {
|
||||
groupBoxLayout.AddWidget(widgets.NewQPushButton2(fmt.Sprintf("PushButton: %v", i), nil), 0, 0)
|
||||
}
|
||||
addWidget(groupBox)
|
||||
|
||||
//Scroll Area
|
||||
scrollArea := widgets.NewQScrollArea(nil)
|
||||
scrollArea.SetWindowTitle("Scroll Area")
|
||||
|
||||
scrollAreaWidget := widgets.NewQWidget(nil, 0)
|
||||
scrollAreaWidgetLayout := widgets.NewQGridLayout(scrollAreaWidget)
|
||||
for row := 0; row < 25; row++ {
|
||||
for column := 0; column < 25; column++ {
|
||||
scrollAreaWidgetLayout.AddWidget(widgets.NewQLabel2(fmt.Sprintf("[%v:%v]", row, column), nil, 0), row, column, core.Qt__AlignCenter)
|
||||
}
|
||||
}
|
||||
|
||||
scrollArea.SetWidget(scrollAreaWidget)
|
||||
addWidget(scrollArea)
|
||||
|
||||
//Tool Box
|
||||
toolBox := widgets.NewQToolBox(nil, 0)
|
||||
toolBox.SetWindowTitle("Tool Box")
|
||||
|
||||
toolBox.AddItem2(widgets.NewQLabel2("First Widget", nil, 0), "First")
|
||||
toolBox.AddItem2(widgets.NewQPushButton2("Second Widget", nil), "Second")
|
||||
toolBox.AddItem2(widgets.NewQGroupBox2("Third Widget", nil), "Third")
|
||||
addWidget(toolBox)
|
||||
|
||||
//Tab Widget
|
||||
tabWidget := widgets.NewQTabWidget(nil)
|
||||
tabWidget.SetWindowTitle("Tab Widget")
|
||||
|
||||
tabWidget.AddTab(widgets.NewQLabel2("First Widget", nil, 0), "First")
|
||||
tabWidget.AddTab(widgets.NewQPushButton2("Second Widget", nil), "Second")
|
||||
tabWidget.AddTab(widgets.NewQGroupBox2("Third Widget", nil), "Third")
|
||||
addWidget(tabWidget)
|
||||
|
||||
//Stacked Widget
|
||||
centralWidget := widgets.NewQWidget(nil, 0)
|
||||
centralWidget.SetWindowTitle("Stacked Widget")
|
||||
centralWidgetLayout := widgets.NewQVBoxLayout2(centralWidget)
|
||||
|
||||
stackedWidget := widgets.NewQStackedWidget(nil)
|
||||
stackedWidget.AddWidget(widgets.NewQLabel2("First Widget", nil, 0))
|
||||
stackedWidget.AddWidget(widgets.NewQPushButton2("Second Widget", nil))
|
||||
stackedWidget.AddWidget(widgets.NewQGroupBox2("Third Widget", nil))
|
||||
centralWidgetLayout.AddWidget(stackedWidget, 0, 0)
|
||||
|
||||
changeStackButton := widgets.NewQPushButton2("Show Next In Stack", nil)
|
||||
changeStackButton.ConnectClicked(func(checked bool) {
|
||||
nextIndex := stackedWidget.CurrentIndex() + 1
|
||||
if nextIndex >= stackedWidget.Count() {
|
||||
stackedWidget.SetCurrentIndex(0)
|
||||
} else {
|
||||
stackedWidget.SetCurrentIndex(nextIndex)
|
||||
}
|
||||
})
|
||||
centralWidgetLayout.AddWidget(changeStackButton, 0, 0)
|
||||
addWidget(centralWidget)
|
||||
|
||||
//Frame
|
||||
frame := widgets.NewQFrame(nil, 0)
|
||||
frame.SetWindowTitle("Frame")
|
||||
|
||||
frameLayout := widgets.NewQVBoxLayout2(frame)
|
||||
|
||||
for i := 0; i < 3; i++ {
|
||||
someFrame := widgets.NewQFrame(nil, 0)
|
||||
|
||||
switch i {
|
||||
case 0:
|
||||
someFrame.SetFrameStyle(int(widgets.QFrame__Box) | int(widgets.QFrame__Raised))
|
||||
|
||||
case 1:
|
||||
someFrame.SetFrameStyle(int(widgets.QFrame__Panel) | int(widgets.QFrame__Raised))
|
||||
|
||||
case 2:
|
||||
someFrame.SetFrameStyle(int(widgets.QFrame__StyledPanel) | int(widgets.QFrame__Raised))
|
||||
}
|
||||
|
||||
someFrameLayout := widgets.NewQVBoxLayout2(someFrame)
|
||||
someFrameLayout.AddWidget(widgets.NewQPushButton2(fmt.Sprintf("PushButton: %v", i), nil), 0, 0)
|
||||
frameLayout.AddWidget(someFrame, 0, 0)
|
||||
}
|
||||
addWidget(frame)
|
||||
|
||||
//Widget
|
||||
widget := widgets.NewQWidget(nil, 0)
|
||||
widget.SetWindowTitle("Widget")
|
||||
|
||||
widgetLayout := widgets.NewQVBoxLayout2(widget)
|
||||
|
||||
for i := 0; i < 3; i++ {
|
||||
someWidget := widgets.NewQWidget(nil, 0)
|
||||
someWidgetLayout := widgets.NewQVBoxLayout2(someWidget)
|
||||
someWidgetLayout.AddWidget(widgets.NewQPushButton2(fmt.Sprintf("PushButton: %v", i), nil), 0, 0)
|
||||
widgetLayout.AddWidget(someWidget, 0, 0)
|
||||
}
|
||||
addWidget(widget)
|
||||
|
||||
//MDI Area
|
||||
mdiArea := widgets.NewQMdiArea(nil)
|
||||
mdiArea.SetWindowTitle("MDI Area")
|
||||
|
||||
subWindow := widgets.NewQMdiSubWindow(nil, 0)
|
||||
sWCentralWidget := widgets.NewQWidget(nil, 0)
|
||||
sWCentralWidgetLayout := widgets.NewQVBoxLayout2(sWCentralWidget)
|
||||
|
||||
sWCentralWidgetLayout.AddWidget(widgets.NewQLabel2("Label", nil, 0), 0, 0)
|
||||
sWCentralWidgetLayout.AddWidget(widgets.NewQPushButton2("PushButton", nil), 0, 0)
|
||||
|
||||
subWindow.SetWidget(sWCentralWidget)
|
||||
mdiArea.AddSubWindow(subWindow, 0)
|
||||
|
||||
mdiArea.Resize2(300, 300)
|
||||
addWidget(mdiArea)
|
||||
|
||||
//Dock Widget
|
||||
mainWindow := widgets.NewQMainWindow(nil, 0)
|
||||
mainWindow.SetWindowTitle("Dock Widget")
|
||||
|
||||
topDockWidget := widgets.NewQDockWidget("Top Dock Widget", nil, 0)
|
||||
topDockWidget.SetAllowedAreas(core.Qt__AllDockWidgetAreas)
|
||||
topDockWidget.SetFloating(true)
|
||||
topDockWidget.SetWidget(widgets.NewQPushButton2("PushButton", nil))
|
||||
mainWindow.AddDockWidget(core.Qt__TopDockWidgetArea, topDockWidget)
|
||||
|
||||
bottomDockWidget := widgets.NewQDockWidget("Bottom Dock Widget", nil, 0)
|
||||
bottomDockWidget.SetAllowedAreas(core.Qt__AllDockWidgetAreas)
|
||||
bottomDockWidget.SetFloating(true)
|
||||
bottomDockWidget.SetWidget(widgets.NewQPushButton2("PushButton", nil))
|
||||
mainWindow.AddDockWidget(core.Qt__BottomDockWidgetArea, bottomDockWidget)
|
||||
addWidget(mainWindow)
|
||||
}
|
85
internal/examples/common/widgets/displayWidgets.go
Normal file
85
internal/examples/common/widgets/displayWidgets.go
Normal file
|
@ -0,0 +1,85 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"io/ioutil"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"time"
|
||||
|
||||
"github.com/therecipe/qt/core"
|
||||
"github.com/therecipe/qt/gui"
|
||||
"github.com/therecipe/qt/quick"
|
||||
"github.com/therecipe/qt/widgets"
|
||||
)
|
||||
|
||||
func displayWidgets() {
|
||||
|
||||
//Label
|
||||
label := widgets.NewQLabel2("This Is A Label", nil, 0)
|
||||
label.SetWindowTitle("Label")
|
||||
addWidget(label)
|
||||
|
||||
//Text Browser
|
||||
textBrowser := widgets.NewQTextBrowser(nil)
|
||||
textBrowser.SetWindowTitle("Text Browser")
|
||||
|
||||
textBrowser.SetText("This Is A Text Browser")
|
||||
addWidget(textBrowser)
|
||||
|
||||
//Graphics View
|
||||
graphicsView := widgets.NewQGraphicsView(nil)
|
||||
graphicsView.SetWindowTitle("Graphics View")
|
||||
|
||||
scene := widgets.NewQGraphicsScene(nil)
|
||||
scene.AddText("This Is A Graphics View (+ Graphics Scene)", gui.NewQFont())
|
||||
scene.AddRect2(0, 0, scene.Width(), scene.Height(), gui.NewQPen(), gui.NewQBrush())
|
||||
|
||||
graphicsView.SetScene(scene)
|
||||
addWidget(graphicsView)
|
||||
|
||||
//Calendar Widget
|
||||
calendarWidget := widgets.NewQCalendarWidget(nil)
|
||||
calendarWidget.SetWindowTitle("Calendar Widget")
|
||||
addWidget(calendarWidget)
|
||||
|
||||
//LCD Number
|
||||
lcdNumber := widgets.NewQLCDNumber(nil)
|
||||
lcdNumber.SetWindowTitle("LCD Number")
|
||||
|
||||
lcdNumber.SetDigitCount(15)
|
||||
lcdNumber.Display("0123456789.-ABC")
|
||||
addWidget(lcdNumber)
|
||||
|
||||
//Progress Bar
|
||||
progressBar := widgets.NewQProgressBar(nil)
|
||||
progressBar.SetWindowTitle("Progress Bar")
|
||||
|
||||
progressBar.SetMinimum(0)
|
||||
progressBar.SetMaximum(1000)
|
||||
progressBar.SetValue(progressBar.Maximum() / 2)
|
||||
|
||||
progressBar.ConnectValueChanged(func(value int) {
|
||||
if value == progressBar.Maximum() {
|
||||
progressBar.SetValue(progressBar.Minimum())
|
||||
}
|
||||
})
|
||||
|
||||
go func() {
|
||||
for range time.NewTicker(500 * time.Millisecond).C {
|
||||
progressBar.SetValue(progressBar.Value() + 50)
|
||||
}
|
||||
}()
|
||||
addWidget(progressBar)
|
||||
|
||||
//Quick Widget
|
||||
quickWidget := quick.NewQQuickWidget(nil)
|
||||
quickWidget.SetWindowTitle("Quick Widget")
|
||||
|
||||
quickWidget.SetResizeMode(quick.QQuickWidget__SizeRootObjectToView)
|
||||
|
||||
path := filepath.Join(os.TempDir(), "tmpQuickWidget.qml")
|
||||
ioutil.WriteFile(path, []byte("import QtQuick 2.0\nRectangle{width: 320; height: 320; color:\"red\"}"), 0644)
|
||||
quickWidget.SetSource(core.QUrl_FromLocalFile(path))
|
||||
addWidget(quickWidget)
|
||||
|
||||
}
|
224
internal/examples/common/widgets/inputWidgets.go
Normal file
224
internal/examples/common/widgets/inputWidgets.go
Normal file
|
@ -0,0 +1,224 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"github.com/therecipe/qt/core"
|
||||
"github.com/therecipe/qt/gui"
|
||||
"github.com/therecipe/qt/widgets"
|
||||
)
|
||||
|
||||
func inputWidgets() {
|
||||
|
||||
//Combo Box
|
||||
comboBox := widgets.NewQComboBox(nil)
|
||||
comboBox.SetWindowTitle("Combo Box")
|
||||
|
||||
items := []string{"Some", "Combo", "Box", "Items"}
|
||||
comboBox.AddItems(items)
|
||||
|
||||
comboBox.ConnectCurrentIndexChanged2(func(text string) {
|
||||
println("Combo Box Index Changed To:", text)
|
||||
})
|
||||
addWidget(comboBox)
|
||||
|
||||
//Combo Box + List Model
|
||||
comboBoxL := widgets.NewQComboBox(nil)
|
||||
comboBoxL.SetWindowTitle("Combo Box + List Model")
|
||||
|
||||
listModel := core.NewQAbstractListModel(nil)
|
||||
listModel.ConnectRowCount(func(parent *core.QModelIndex) int {
|
||||
return len(items)
|
||||
})
|
||||
listModel.ConnectData(func(index *core.QModelIndex, role int) *core.QVariant {
|
||||
if role != int(core.Qt__DisplayRole) {
|
||||
return core.NewQVariant()
|
||||
}
|
||||
return core.NewQVariant14(items[index.Row()])
|
||||
})
|
||||
|
||||
comboBoxL.SetModel(listModel)
|
||||
|
||||
comboBoxL.ConnectCurrentIndexChanged2(func(text string) {
|
||||
println("Combo Box Index Changed To:", text)
|
||||
})
|
||||
addWidget(comboBoxL)
|
||||
|
||||
//Combo Box + String List Model
|
||||
comboBoxSL := widgets.NewQComboBox(nil)
|
||||
comboBoxSL.SetWindowTitle("Combo Box + String List Model")
|
||||
comboBoxSL.SetModel(core.NewQStringListModel2(items, nil))
|
||||
comboBoxSL.ConnectCurrentIndexChanged2(func(text string) {
|
||||
println("Combo Box Index Changed To:", text)
|
||||
})
|
||||
addWidget(comboBoxSL)
|
||||
|
||||
//Font Combo Box
|
||||
fontComboBox := widgets.NewQFontComboBox(nil)
|
||||
fontComboBox.SetWindowTitle("Font Combo Box")
|
||||
|
||||
fontComboBox.ConnectCurrentFontChanged(func(font *gui.QFont) {
|
||||
println("Font Combo Box Index Changed To:", font.ToString())
|
||||
})
|
||||
addWidget(fontComboBox)
|
||||
|
||||
//Line Edit
|
||||
lineEdit := widgets.NewQLineEdit(nil)
|
||||
lineEdit.SetWindowTitle("Line Edit")
|
||||
|
||||
lineEdit.ConnectTextChanged(func(text string) {
|
||||
println("Line Edit Text Changed To:", text)
|
||||
})
|
||||
addWidget(lineEdit)
|
||||
|
||||
//Text Edit
|
||||
textEdit := widgets.NewQTextEdit(nil)
|
||||
textEdit.SetWindowTitle("Text Edit")
|
||||
|
||||
textEdit.ConnectTextChanged(func() {
|
||||
println("Text Edit Text Changed To:", textEdit.ToPlainText())
|
||||
})
|
||||
addWidget(textEdit)
|
||||
|
||||
//Plain Text Edit
|
||||
plainTextEdit := widgets.NewQPlainTextEdit(nil)
|
||||
plainTextEdit.SetWindowTitle("Plain Text Edit")
|
||||
|
||||
plainTextEdit.ConnectTextChanged(func() {
|
||||
println("Plain Text Edit Text Changed To:", plainTextEdit.ToPlainText())
|
||||
})
|
||||
addWidget(plainTextEdit)
|
||||
|
||||
//Spin Box
|
||||
spinBox := widgets.NewQSpinBox(nil)
|
||||
spinBox.SetWindowTitle("Spin Box")
|
||||
|
||||
spinBox.SetMinimum(0)
|
||||
spinBox.SetMaximum(1000)
|
||||
spinBox.SetValue(spinBox.Maximum() / 2)
|
||||
|
||||
spinBox.ConnectValueChanged(func(i int) {
|
||||
println("Spin Box Value Changed To:", i)
|
||||
})
|
||||
addWidget(spinBox)
|
||||
|
||||
//Double Spin Box
|
||||
doubleSpinBox := widgets.NewQDoubleSpinBox(nil)
|
||||
doubleSpinBox.SetWindowTitle("Double Spin Box")
|
||||
|
||||
doubleSpinBox.SetMinimum(0)
|
||||
doubleSpinBox.SetMaximum(1000)
|
||||
doubleSpinBox.SetValue(doubleSpinBox.Maximum() / 2)
|
||||
|
||||
doubleSpinBox.ConnectValueChanged(func(d float64) {
|
||||
println("Double Spin Box Value Changed To:", d)
|
||||
})
|
||||
addWidget(doubleSpinBox)
|
||||
|
||||
//Time Edit
|
||||
timeEdit := widgets.NewQTimeEdit(nil)
|
||||
timeEdit.SetWindowTitle("Time Edit")
|
||||
|
||||
timeEdit.SetTime(core.QTime_CurrentTime())
|
||||
|
||||
timeEdit.ConnectTimeChanged(func(time *core.QTime) {
|
||||
println("Time Edit Time Changed To:", time.ToString2(core.Qt__TextDate))
|
||||
})
|
||||
addWidget(timeEdit)
|
||||
|
||||
//Date Edit
|
||||
dateEdit := widgets.NewQDateEdit(nil)
|
||||
dateEdit.SetWindowTitle("Date Edit")
|
||||
|
||||
dateEdit.SetDate(core.QDate_CurrentDate())
|
||||
|
||||
dateEdit.ConnectDateChanged(func(date *core.QDate) {
|
||||
println("Date Edit Date Changed To:", date.ToString2(core.Qt__TextDate))
|
||||
})
|
||||
addWidget(dateEdit)
|
||||
|
||||
//Date/Time Edit
|
||||
dateTimeEdit := widgets.NewQDateTimeEdit(nil)
|
||||
dateTimeEdit.SetWindowTitle("Date Time Edit")
|
||||
|
||||
dateTimeEdit.SetDate(core.QDate_CurrentDate())
|
||||
dateTimeEdit.SetTime(core.QTime_CurrentTime())
|
||||
|
||||
dateTimeEdit.ConnectDateTimeChanged(func(datetime *core.QDateTime) {
|
||||
println("Date Time Edit Changed To:", datetime.ToString2(core.Qt__TextDate))
|
||||
})
|
||||
addWidget(dateTimeEdit)
|
||||
|
||||
//Dial
|
||||
dial := widgets.NewQDial(nil)
|
||||
dial.SetWindowTitle("Dial")
|
||||
|
||||
dial.SetMinimum(0)
|
||||
dial.SetMaximum(1000)
|
||||
dial.SetValue(dial.Maximum() / 2)
|
||||
|
||||
dial.ConnectValueChanged(func(value int) {
|
||||
println("Dial Value Changed To:", value)
|
||||
})
|
||||
addWidget(dial)
|
||||
|
||||
//Horizontal Scroll Bar
|
||||
hScrollBar := widgets.NewQScrollBar2(core.Qt__Horizontal, nil)
|
||||
hScrollBar.SetWindowTitle("Horizontal Scroll Bar")
|
||||
|
||||
hScrollBar.SetMinimum(0)
|
||||
hScrollBar.SetMaximum(1000)
|
||||
hScrollBar.SetValue(hScrollBar.Maximum() / 2)
|
||||
|
||||
hScrollBar.ConnectValueChanged(func(value int) {
|
||||
println("Horizontal Scroll Bar Value Changed To:", value)
|
||||
})
|
||||
addWidget(hScrollBar)
|
||||
|
||||
//Vertical Scroll Bar
|
||||
vScrollBar := widgets.NewQScrollBar2(core.Qt__Vertical, nil)
|
||||
vScrollBar.SetWindowTitle("Vertical Scroll Bar")
|
||||
|
||||
vScrollBar.SetMinimum(0)
|
||||
vScrollBar.SetMaximum(1000)
|
||||
vScrollBar.SetValue(vScrollBar.Maximum() / 2)
|
||||
|
||||
vScrollBar.ConnectValueChanged(func(value int) {
|
||||
println("Vertical Scroll Bar Value Changed To:", value)
|
||||
})
|
||||
addWidget(vScrollBar)
|
||||
|
||||
//Horizontal Slider
|
||||
hSlider := widgets.NewQSlider2(core.Qt__Horizontal, nil)
|
||||
hSlider.SetWindowTitle("Horizontal Slider")
|
||||
|
||||
hSlider.SetMinimum(0)
|
||||
hSlider.SetMaximum(1000)
|
||||
hSlider.SetValue(hSlider.Maximum() / 2)
|
||||
|
||||
hSlider.ConnectValueChanged(func(value int) {
|
||||
println("Horizontal Slider Value Changed To:", value)
|
||||
})
|
||||
addWidget(hSlider)
|
||||
|
||||
//Vertical Slider
|
||||
vSlider := widgets.NewQSlider2(core.Qt__Vertical, nil)
|
||||
vSlider.SetWindowTitle("Vertical Slider")
|
||||
|
||||
vSlider.SetMinimum(0)
|
||||
vSlider.SetMaximum(1000)
|
||||
vSlider.SetValue(vSlider.Maximum() / 2)
|
||||
|
||||
vSlider.ConnectValueChanged(func(value int) {
|
||||
println("Vertical Slider Value Changed To:", value)
|
||||
})
|
||||
addWidget(vSlider)
|
||||
|
||||
//Key Sequence Edit
|
||||
keySequenceEdit := widgets.NewQKeySequenceEdit(nil)
|
||||
keySequenceEdit.SetWindowTitle("Key Sequence Edit")
|
||||
|
||||
keySequenceEdit.ConnectKeySequenceChanged(func(keySequence *gui.QKeySequence) {
|
||||
println("Key Sequence Edit Key Sequence Changed To:", keySequence.ToString(gui.QKeySequence__NativeText))
|
||||
})
|
||||
addWidget(keySequenceEdit)
|
||||
|
||||
}
|
98
internal/examples/common/widgets/itemViews.go
Normal file
98
internal/examples/common/widgets/itemViews.go
Normal file
|
@ -0,0 +1,98 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"github.com/therecipe/qt/core"
|
||||
"github.com/therecipe/qt/gui"
|
||||
"github.com/therecipe/qt/widgets"
|
||||
)
|
||||
|
||||
func itemViews() {
|
||||
|
||||
//List View
|
||||
listView := widgets.NewQListView(nil)
|
||||
listView.SetWindowTitle("List View")
|
||||
|
||||
list := []string{"This", "Is", "A", "List", "View"}
|
||||
|
||||
listModel := core.NewQAbstractListModel(nil)
|
||||
listModel.ConnectRowCount(func(parent *core.QModelIndex) int {
|
||||
return len(list)
|
||||
})
|
||||
listModel.ConnectData(func(index *core.QModelIndex, role int) *core.QVariant {
|
||||
if role != int(core.Qt__DisplayRole) {
|
||||
return core.NewQVariant()
|
||||
}
|
||||
return core.NewQVariant14(list[index.Row()])
|
||||
})
|
||||
listView.SetModel(listModel)
|
||||
addWidget(listView)
|
||||
|
||||
//List View + String List Model
|
||||
listViewS := widgets.NewQListView(nil)
|
||||
listViewS.SetWindowTitle("List View + String List Model")
|
||||
listViewS.SetModel(core.NewQStringListModel2(list, nil))
|
||||
addWidget(listViewS)
|
||||
|
||||
//Tree View
|
||||
treeView := widgets.NewQTreeView(nil)
|
||||
treeView.SetWindowTitle("Tree View")
|
||||
|
||||
treeModel := gui.NewQStandardItemModel(nil)
|
||||
rootNode := treeModel.InvisibleRootItem()
|
||||
|
||||
americaItem := gui.NewQStandardItem2("America")
|
||||
mexicoItem := gui.NewQStandardItem2("Canada")
|
||||
usaItem := gui.NewQStandardItem2("USA")
|
||||
bostonItem := gui.NewQStandardItem2("Boston")
|
||||
europeItem := gui.NewQStandardItem2("Europe")
|
||||
italyItem := gui.NewQStandardItem2("Italy")
|
||||
romeItem := gui.NewQStandardItem2("Rome")
|
||||
veronaItem := gui.NewQStandardItem2("Verona")
|
||||
|
||||
rootNode.AppendRow2(americaItem)
|
||||
rootNode.AppendRow2(europeItem)
|
||||
americaItem.AppendRow2(mexicoItem)
|
||||
americaItem.AppendRow2(usaItem)
|
||||
usaItem.AppendRow2(bostonItem)
|
||||
europeItem.AppendRow2(italyItem)
|
||||
italyItem.AppendRow2(romeItem)
|
||||
italyItem.AppendRow2(veronaItem)
|
||||
|
||||
treeView.SetModel(treeModel)
|
||||
treeView.ExpandAll()
|
||||
addWidget(treeView)
|
||||
|
||||
//Table View
|
||||
tableView := widgets.NewQTableView(nil)
|
||||
tableView.SetWindowTitle("Table View")
|
||||
|
||||
table := [][]string{
|
||||
0: {"This", "Is", "The", "First", "Row"},
|
||||
1: {"This", "Is", "The", "Second", "Row"},
|
||||
2: {"This", "Is", "The", "Third", "Row"},
|
||||
}
|
||||
|
||||
tableModel := core.NewQAbstractTableModel(nil)
|
||||
tableModel.ConnectRowCount(func(parent *core.QModelIndex) int {
|
||||
return len(table)
|
||||
})
|
||||
tableModel.ConnectColumnCount(func(parent *core.QModelIndex) int {
|
||||
return len(table[0])
|
||||
})
|
||||
tableModel.ConnectData(func(index *core.QModelIndex, role int) *core.QVariant {
|
||||
if role != int(core.Qt__DisplayRole) {
|
||||
return core.NewQVariant()
|
||||
}
|
||||
return core.NewQVariant14(table[index.Row()][index.Column()])
|
||||
})
|
||||
tableView.SetModel(tableModel)
|
||||
addWidget(tableView)
|
||||
|
||||
//Column View
|
||||
columnView := widgets.NewQColumnView(nil)
|
||||
columnView.SetWindowTitle("Column View")
|
||||
|
||||
columnView.SetModel(treeModel)
|
||||
addWidget(columnView)
|
||||
|
||||
}
|
65
internal/examples/common/widgets/itemWidgets.go
Normal file
65
internal/examples/common/widgets/itemWidgets.go
Normal file
|
@ -0,0 +1,65 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"github.com/therecipe/qt/widgets"
|
||||
)
|
||||
|
||||
func itemWidgets() {
|
||||
|
||||
//List Widget
|
||||
listWidget := widgets.NewQListWidget(nil)
|
||||
listWidget.SetWindowTitle("List Widget")
|
||||
|
||||
list := []string{"This", "Is", "A", "List", "View"}
|
||||
|
||||
listWidget.AddItems(list)
|
||||
addWidget(listWidget)
|
||||
|
||||
//Tree Widget
|
||||
treeWidget := widgets.NewQTreeWidget(nil)
|
||||
treeWidget.SetWindowTitle("Tree Widget")
|
||||
|
||||
rootNode := treeWidget.InvisibleRootItem()
|
||||
|
||||
americaItem := widgets.NewQTreeWidgetItem2([]string{"America"}, 0)
|
||||
mexicoItem := widgets.NewQTreeWidgetItem2([]string{"Canada"}, 0)
|
||||
usaItem := widgets.NewQTreeWidgetItem2([]string{"USA"}, 0)
|
||||
bostonItem := widgets.NewQTreeWidgetItem2([]string{"Boston"}, 0)
|
||||
europeItem := widgets.NewQTreeWidgetItem2([]string{"Europe"}, 0)
|
||||
italyItem := widgets.NewQTreeWidgetItem2([]string{"Italy"}, 0)
|
||||
romeItem := widgets.NewQTreeWidgetItem2([]string{"Rome"}, 0)
|
||||
veronaItem := widgets.NewQTreeWidgetItem2([]string{"Verona"}, 0)
|
||||
|
||||
rootNode.AddChild(americaItem)
|
||||
rootNode.AddChild(europeItem)
|
||||
americaItem.AddChild(mexicoItem)
|
||||
americaItem.AddChild(usaItem)
|
||||
usaItem.AddChild(bostonItem)
|
||||
europeItem.AddChild(italyItem)
|
||||
italyItem.AddChild(romeItem)
|
||||
italyItem.AddChild(veronaItem)
|
||||
|
||||
treeWidget.ExpandAll()
|
||||
addWidget(treeWidget)
|
||||
|
||||
//Table Widget
|
||||
tableWidget := widgets.NewQTableWidget(nil)
|
||||
tableWidget.SetWindowTitle("Table Widget")
|
||||
|
||||
table := [][]string{
|
||||
0: {"This", "Is", "The", "First", "Row"},
|
||||
1: {"This", "Is", "The", "Second", "Row"},
|
||||
2: {"This", "Is", "The", "Third", "Row"},
|
||||
}
|
||||
|
||||
tableWidget.SetRowCount(len(table))
|
||||
tableWidget.SetColumnCount(len(table[0]))
|
||||
|
||||
for row := 0; row < tableWidget.RowCount(); row++ {
|
||||
for column := 0; column < tableWidget.ColumnCount(); column++ {
|
||||
tableWidget.SetItem(row, column, widgets.NewQTableWidgetItem2(table[row][column], 0))
|
||||
}
|
||||
}
|
||||
addWidget(tableWidget)
|
||||
|
||||
}
|
54
internal/examples/common/widgets/layouts.go
Normal file
54
internal/examples/common/widgets/layouts.go
Normal file
|
@ -0,0 +1,54 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/therecipe/qt/core"
|
||||
"github.com/therecipe/qt/widgets"
|
||||
)
|
||||
|
||||
func layouts() {
|
||||
|
||||
//Vertical Layout
|
||||
vboxWidget := widgets.NewQWidget(nil, 0)
|
||||
vboxWidget.SetWindowTitle("Vertical Layout")
|
||||
|
||||
vbox := widgets.NewQVBoxLayout2(vboxWidget)
|
||||
vbox.AddWidget(widgets.NewQLabel2("one", nil, 0), 0, 0)
|
||||
vbox.AddWidget(widgets.NewQLabel2("two", nil, 0), 0, 0)
|
||||
vbox.AddWidget(widgets.NewQLabel2("three", nil, 0), 0, 0)
|
||||
addWidget(vboxWidget)
|
||||
|
||||
//Horizontal Layout
|
||||
hboxWidget := widgets.NewQWidget(nil, 0)
|
||||
hboxWidget.SetWindowTitle("Horizontal Layout")
|
||||
|
||||
hbox := widgets.NewQHBoxLayout2(hboxWidget)
|
||||
hbox.AddWidget(widgets.NewQLabel2("one", nil, 0), 0, 0)
|
||||
hbox.AddWidget(widgets.NewQLabel2("two", nil, 0), 0, 0)
|
||||
hbox.AddWidget(widgets.NewQLabel2("three", nil, 0), 0, 0)
|
||||
addWidget(hboxWidget)
|
||||
|
||||
//Grid Layout
|
||||
gridWidget := widgets.NewQWidget(nil, 0)
|
||||
gridWidget.SetWindowTitle("Grid Layout")
|
||||
|
||||
grid := widgets.NewQGridLayout(gridWidget)
|
||||
for row := 0; row < 4; row++ {
|
||||
for column := 0; column < 4; column++ {
|
||||
grid.AddWidget(widgets.NewQLabel2(fmt.Sprintf("[%v:%v]", row, column), nil, 0), row, column, core.Qt__AlignCenter)
|
||||
}
|
||||
}
|
||||
addWidget(gridWidget)
|
||||
|
||||
//Form layout
|
||||
formWidget := widgets.NewQWidget(nil, 0)
|
||||
formWidget.SetWindowTitle("Form Layout")
|
||||
|
||||
form := widgets.NewQFormLayout(formWidget)
|
||||
for row := 0; row < 3; row++ {
|
||||
form.AddRow3(fmt.Sprintf("label %v", row), widgets.NewQLineEdit2(fmt.Sprintf("field %v", row), nil))
|
||||
}
|
||||
addWidget(formWidget)
|
||||
|
||||
}
|
58
internal/examples/common/widgets/main.go
Normal file
58
internal/examples/common/widgets/main.go
Normal file
|
@ -0,0 +1,58 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"os"
|
||||
|
||||
"github.com/therecipe/qt/core"
|
||||
"github.com/therecipe/qt/widgets"
|
||||
)
|
||||
|
||||
var (
|
||||
centralLayout *widgets.QGridLayout
|
||||
centralLayoutRow int
|
||||
centralLayoutColumn int
|
||||
)
|
||||
|
||||
func main() {
|
||||
widgets.NewQApplication(len(os.Args), os.Args)
|
||||
|
||||
mainWindow := widgets.NewQMainWindow(nil, 0)
|
||||
mainWindow.SetWindowTitle("Common Widgets")
|
||||
|
||||
scrollWidget := widgets.NewQScrollArea(nil)
|
||||
|
||||
centralWidget := widgets.NewQWidget(nil, 0)
|
||||
centralLayout = widgets.NewQGridLayout(centralWidget)
|
||||
|
||||
layouts()
|
||||
buttons()
|
||||
itemViews()
|
||||
itemWidgets()
|
||||
containers()
|
||||
inputWidgets()
|
||||
displayWidgets()
|
||||
|
||||
scrollWidget.SetWidget(centralWidget)
|
||||
|
||||
mainWindow.SetCentralWidget(scrollWidget)
|
||||
mainWindow.ShowMaximized()
|
||||
|
||||
widgets.QApplication_Exec()
|
||||
}
|
||||
|
||||
func addWidget(widget widgets.QWidget_ITF) {
|
||||
|
||||
if centralLayoutColumn > 6 {
|
||||
centralLayoutColumn = 0
|
||||
centralLayoutRow++
|
||||
}
|
||||
|
||||
wrappedWidget := widgets.NewQGroupBox2(widget.QWidget_PTR().WindowTitle(), nil)
|
||||
wrappedWidgetLayout := widgets.NewQVBoxLayout2(wrappedWidget)
|
||||
wrappedWidgetLayout.AddWidget(widget, 0, core.Qt__AlignCenter)
|
||||
wrappedWidget.SetFixedSize2(250, 250)
|
||||
|
||||
centralLayout.AddWidget(wrappedWidget, centralLayoutRow, centralLayoutColumn, core.Qt__AlignCenter)
|
||||
|
||||
centralLayoutColumn++
|
||||
}
|
7
internal/examples/common/widgets/qml/stub.qml
Normal file
7
internal/examples/common/widgets/qml/stub.qml
Normal file
|
@ -0,0 +1,7 @@
|
|||
import QtQuick 2.0
|
||||
import QtQuick.Layouts 1.3
|
||||
import QtQuick.Controls 1.4
|
||||
|
||||
Item {}
|
||||
|
||||
//this file is just here to inform qtdeploy about the needed QML dependencies
|
|
@ -3,4 +3,4 @@ import QtQuick.Controls 2.0
|
|||
|
||||
Item {}
|
||||
|
||||
//This file is just here to inform qtdeploy about the needed QML dependencies
|
||||
//this file is just here to inform qtdeploy about the needed QML dependencies
|
||||
|
|
40
internal/examples/quick/errors/main.go
Normal file
40
internal/examples/quick/errors/main.go
Normal file
|
@ -0,0 +1,40 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
|
||||
"github.com/therecipe/qt/core"
|
||||
"github.com/therecipe/qt/qml"
|
||||
"github.com/therecipe/qt/quick"
|
||||
"github.com/therecipe/qt/widgets"
|
||||
)
|
||||
|
||||
//this example demonstrates one possible way to deal with qml errors/warnings
|
||||
//therefore the qml file does contain errors and will NOT work properly
|
||||
|
||||
func main() {
|
||||
|
||||
widgets.NewQApplication(len(os.Args), os.Args)
|
||||
|
||||
view := quick.NewQQuickView(nil)
|
||||
view.Engine().ConnectWarnings(func(warnings []*qml.QQmlError) {
|
||||
for _, w := range warnings {
|
||||
fmt.Println("warning:", w.ToString())
|
||||
}
|
||||
os.Exit(1)
|
||||
})
|
||||
|
||||
view.SetResizeMode(quick.QQuickView__SizeViewToRootObject)
|
||||
view.SetSource(core.NewQUrl3("qrc:///qml/view.qml", 0))
|
||||
view.Show()
|
||||
|
||||
if errors := view.Errors(); len(errors) != 0 {
|
||||
for _, e := range errors {
|
||||
fmt.Println("error:", e.ToString())
|
||||
}
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
widgets.QApplication_Exec()
|
||||
}
|
9
internal/examples/quick/errors/qml/view.qml
Normal file
9
internal/examples/quick/errors/qml/view.qml
Normal file
|
@ -0,0 +1,9 @@
|
|||
import QtQuick 2.0
|
||||
|
||||
Rectangle {
|
||||
width: 300
|
||||
height: 300
|
||||
color: "green"
|
||||
|
||||
someError
|
||||
}
|
Loading…
Reference in a new issue