Как добавить поле со списком в ячейки первого столбца в QtRuby?

Я пытался добавить простое поле со списком с четырьмя элементами в глупую ячейку виджета таблицы, и я до сих пор не могу поместить его в правильную строку и столбец. Лучшее, что я мог сделать, это заставить его отображаться, только если я скажу выпадающему списку, что его родителем является виджет таблицы, проблема в том, что он находится в позиции x 0 y 0 виджета таблицы. Я использую метод setCellWidget, и он по-прежнему не заполняет правильную ячейку независимо от того, какую строку и столбец я там указываю. Что мне делать тогда?

Я нашел этот пример в PyQt, но всякий раз, когда я пытаюсь реализовать рубиновую версию на Ruby, это просто не работает.


person Community    schedule 11.08.2015    source источник
comment
Не могли бы вы опубликовать свой код, пожалуйста?   -  person kittykittybangbang    schedule 11.08.2015
comment
Честно говоря, мой код должен быть довольно паршивым. Если кто-нибудь может опубликовать короткий, но работающий пример того, как добавить поле со списком в виджет таблицы (Qt::TableWidget), я был бы очень признателен. Допустим, я хочу, чтобы он был вставлен в строку 1 столбца 3.   -  person    schedule 11.08.2015


Ответы (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
person bogl    schedule 09.01.2016