我尝试创建一个将数据逐渐加载到表中的应用程序。我的意思是该应用程序参与了工作,结果必须立即显示在表格中。但是默认表视图是唯一的整体结果。我对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++
}
}