ruby - 在 ruby​​qt 中禁用 QTableView 的编辑

标签 ruby qtableview

我正在尝试禁用 ruby​​qt 中 QTableView 的编辑。应该通过将触发器设置为 QAbstractView::NoEdiTriggers 来完成:

TableView.setEditTriggers(QAbstractView::NoEditTriggers);

问题是,rubyqt 无法识别 Qt::AbstractView:

irb(main):008:0> require 'Qt4'
=> true
irb(main):009:0> Qt::AbstractView
NameError: uninitialized constant Qt::AbstractView
    from (irb):9:in `const_missing'
    from (irb):9
    from /usr/bin/irb:12:in `<main>'

还有其他方法可以禁用 ruby​​ 和 qt 编辑吗?

编辑 哦,还有 irb 之外:

searcher.rb:72:in `const_missing': uninitialized constant Qt::AbstractView (NameError)

还有 searcher.rb:72: @ui.tableView.setEditTriggers(Qt::AbstractView::NoEditTriggers)

将其更改为 (Qt::AbstractView.NoEditTriggers) 也不起作用。

最佳答案

require 'Qt4'

Qt::Application.new(ARGV) do
    Qt::Widget.new do

        self.window_title = 'Hello QtRuby v1.0'
        resize(200, 100)

        button = Qt::PushButton.new('Quit') do
            connect(SIGNAL :clicked) { Qt::Application.instance.quit }
        end

        tv = Qt::TableView.new do
          setEditTriggers(Qt::TableView::NoEditTriggers)
        end

        tm = Qt::StandardItemModel.new(1, 1) do
          setItem(0,0,Qt::StandardItem.new("aaa"))
        end

        tv.setModel tm

        self.layout = Qt::VBoxLayout.new do
            add_widget(tv, 0, Qt::AlignRight)
            add_widget(button, 0, Qt::AlignCenter)
        end

        show
    end

    exec
end

主要思想是,如果 Qt 中没有抽象类绑定(bind)到 Ruby,请尝试查找它的祖先或实现。

关于ruby - 在 ruby​​qt 中禁用 QTableView 的编辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16788277/

相关文章:

ruby-on-rails - 如何计算 ruby 中的日期

ruby - 返回字符串中的最高和最低数字 : Ruby

ruby-on-rails - 表列名也是 ruby​​ 保留关键字

ruby - object#initialize 重载时与 Ruby 中的 IRB 输出混淆

c++ - 使用 Qt 和 vector 发出文件行读取

python - 如何重新排列 QTableView 的列顺序

ruby - 符号的垃圾收集 Ruby 2.2.1

c++ - 如何为 QTableView 中的特定单元格着色或加粗文本?

c++ - 使用新值更新 QTableView 中的单元格

c++ - 使用 QTableView 时将 QCombobox 选定文本设置为特定数据列