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

Posted

技术标签:

【中文标题】如何在 QtRuby 的第一列单元格中添加组合框?【英文标题】:How do I add a combobox to first column cells in QtRuby? 【发布时间】:2015-08-11 02:22:11 【问题描述】:

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

我在 PyQt 中找到了这个示例,但每当我尝试在 Ruby 上实现它的 ruby​​ 风格版本时,它就不起作用了。

【问题讨论】:

请把你的代码贴出来好吗? 老实说,我的代码应该很糟糕。如果有人可以发布一个简短但有效的示例,说明如何将组合框添加到表格小部件(Qt::TableWidget),我将不胜感激。假设我希望将其插入第 1 行第 3 列。 【参考方案1】:

此代码执行您要查找的操作:生成一个 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

【讨论】:

以上是关于如何在 QtRuby 的第一列单元格中添加组合框?的主要内容,如果未能解决你的问题,请参考以下文章

选择具有行跨度的表的第一列

如何根据用户表单组合框选择查询单元格中的数据并将数据复制到用户表单文本框中

如何在熊猫数据框单元格中提取部分字符串并在其中创建一个包含该字符串的新列

在 DataGridView 的第 5 列的单元格中添加单词“删除”

如何在 Open Office 宏的单元格中的列表框中显示当前值?

如何查找单元格中是不是包含部分文本并引用另一列数据