我正在尝试设计一个GUI,它将以电子表格格式,行和列的形式输出数据。
将使用将以预定义的间隔由另一个对象提取的数据填充单元格。能够改变单个细胞颜色将是突出任何已经改变的细胞的理想选择。
经过一些研究后,看起来像Ruby的QtBindings gem是最强大的GUI选择,但我似乎无法找到任何可以帮助我完成我想要完成的文档或示例。任何代码或示例形式的建议都会有所帮助。谢谢。
更新::经过一些研究和蛮力,我想出了这个代码:
class PositionModel < Qt::AbstractTableModel
slots 'timerhit()'
def initialize(risk)
super()
@timer = Qt::Timer.new(self)
connect(@timer, SIGNAL('timeout()'), self, SLOT('timerhit()'))
@timer.start(1000)
@risk = risk
@risk_a = @risk.to_a
#pp @risk_a
end
def timerhit()
emit dataChanged(createIndex(0,0), createIndex(0,0))
#emit dataChanged()
end
def rowCount(parent)
@risk_a.size
end
def columnCount(parent)
1
end
def data(index, role)
col = index.column
row = index.row
if role == Qt::DisplayRole
return Qt::Variant.new( @risk_a[row] )
else
return Qt::Variant.new()
end
end
end
app = Qt::Application.new(ARGV)
model = PositionModel.new(@@risk)
table = Qt::TableView.new
table.model = model
table.setSortingEnabled(true)
table.show
它似乎运作良好,更重要的是我最终想要完成的事情的坚实基础。但是,我尝试通过单击列标题启用排序,但它似乎没有工作。有谁知道为什么?
答案 0 :(得分:1)
两个字:使用QTableView
或QTableWidget
。
Populating Table Widget from Text File in Qt
How change row color with Null items?
将c ++代码转换为ruby qt应该是微不足道的。此外,C ++ Qt文档真棒!祝你好运。
希望有所帮助。