如何逐步更新表格

时间:2019-11-22 19:06:40

标签: qt go

我尝试创建一个将数据逐渐加载到表中的应用程序。我的意思是该应用程序参与了工作,结果必须立即显示在表格中。但是默认表视图是唯一的整体结果。我对app.ProcessEvents()有了决定,但我读这种方式不好,最好使用table.DataChanged()。我确实尝试使用最后一种方法,但是我不明白如何为core.QModelIndex_ITF和角色(函数中的参数)分配均值。我的问题是如何将DataChanged()用于更新表,或者有另一种方法。

package main

import (
"os"
"strconv"
"time"

"github.com/therecipe/qt/core"

"github.com/therecipe/qt/widgets"
)

func main() {

qApp := widgets.NewQApplication(len(os.Args), os.Args)

window := widgets.NewQMainWindow(nil, 0)
widget := widgets.NewQWidget(nil, 0)
widget.SetLayout(widgets.NewQVBoxLayout())
window.SetCentralWidget(widget)
window.SetMinimumSize2(500, 500)
window.SetWindowTitle("beta version")


button := widgets.NewQPushButton2("pbar", nil)
widget.Layout().AddWidget(button)
table := formTable(widget)

button.ConnectClicked(func(bool) {
    fillTable(table, qApp)
})
//table

window.Show()
qApp.Exec()
}



func formTable(widget *widgets.QWidget) (table     
*widgets.QTableWidget) {
table = widgets.NewQTableWidget(nil)
table.SetColumnCount(2)
table.SetRowCount(1)
fill := widgets.NewQTableWidgetItem2("column 1", 0)
table.SetItem(0, 0, fill)
fill = widgets.NewQTableWidgetItem2("column 2 ", 0)
table.SetItem(0, 1, fill)
table.HorizontalHeader().SetSectionResizeMode2(0,
widgets.QHeaderView__ResizeToContents)
table.HorizontalHeader().SetSectionResizeMode2(1,   
widgets.QHeaderView__ResizeToContents)
widget.Layout().AddWidget(table)
return table
}

func fillTable(table *widgets.QTableWidget, app  
*widgets.QApplication) {
var k int = 1

for i := 0; i < 6; i++ {
    if k >= table.RowCount() {

        table.SetRowCount(table.RowCount() + 1)
    }
    fill1 := widgets.NewQTableWidgetItem2(strconv.Itoa(i), 0)
    fill2 := widgets.NewQTableWidgetItem2(strconv.Itoa(i*i), 0)
    table.SetItem(k, 0, fill1)
    table.SetItem(k, 1, fill2)

    //table.DataChanged(nil, nil, nil)
    app.ProcessEvents(core.QEventLoop__AllEvents)

    time.Sleep(1 * time.Second)
    k++
    }
}

0 个答案:

没有答案