如何在QtRuby中向第一列单元格添加组合框?

时间:2015-08-11 02:22:12

标签: combobox qtruby

我一直在尝试将一个带有四个项目的简单组合框添加到一个愚蠢的表格小部件单元格中,但仍然无法将其放置在正确的行和列中。我能得到的最好的结果是只有当我告诉组合框它的父元素是表格小部件时才会显示它,问题是它位于表格小部件的位置x 0 y 0处。我使用setCellWidget方法,无论我在那里指定哪一行和列,它仍然没有填充正确的单元格。那我该怎么办?

我在 PyQt 中找到了这个示例,但每当我尝试在Ruby上实现它的ruby-esque版本时,它就无法工作。

1 个答案:

答案 0 :(得分:0)

此代码可以满足您的需求:生成一个n×m表,并在给定单元格中插入一个组合框,此处位于第4行/第2列。

require 'Qt4'

qt_app = Qt::Application.new(ARGV)
win    = Qt::Dialog.new
win.show

table_widget   = Qt::TableWidget.new(win)
layout         = Qt::GridLayout.new(win)    # not required
layout.addWidget(table_widget)              # not required

rows    = table_widget.rowCount    = 7
columns = table_widget.columnCount = 4
(0..rows-1).each do |row|
  (0..columns-1).each do |column|
    text = "cell #{row}/#{column}"
    table_widget.setItem(row,column, Qt::TableWidgetItem.new(text))
  end
end

combo_box = Qt::ComboBox.new(table_widget)
combo_box.insertItems(0, ["one", "two", "three", "four", "five"])

table_widget.setCellWidget(4, 2, combo_box)
table_widget.show

qt_app.exec