【问题标题】:Need to get information from Qt4ruby Form's textedit(textbox) and pass back to string for console需要从 Qt4ruby Form 的 textedit(textbox) 获取信息并传回给控制台的字符串
【发布时间】:2011-03-14 10:44:39
【问题描述】:

我认为这个问题最好用代码来描述。我确定解决方案很接近,我只是找不到它。我一直在查看 Qt4 api 以及做教程。到目前为止,这是我的代码:

require 'Qt4'

class PictureCommentForm < Qt::Widget
  def initialize(parent = nil)
    super()
    #setFixedSize(300, 100)

    @comment_text = nil

    picture = Qt::Label.new()
    image = Qt::Image.new('image.jpeg')
    picture.pixmap = image

    comment = Qt::LineEdit.new()

    layout = Qt::VBoxLayout.new()
    layout.addWidget(picture)
    layout.addWidget(comment)
    setLayout(layout)

    connect(comment, SIGNAL('returnPressed()'), self, setCommentText(comment.text) )
  end

  def setCommentText(text)
    @comment_text = text
    $qApp.quit()
  end
end

app = Qt::Application.new(ARGV)
comment_form = PictureCommentForm.new()
comment_form.show()

app.exec

comment_text = comment_form.comment_text
puts "Comment was:\n #{comment_text}"

编辑:感谢那个整数的回答。我想要做的只是一个显示图片和评论的对话框,以便我可以获取该数据。我确实计划用 qt4 制作一个完整的 GUI 版本,但那是以后的事了。

【问题讨论】:

    标签: ruby user-interface qt4 user-controls


    【解决方案1】:

    我不懂 Ruby,所以请耐心等待,但我在 Python 中广泛使用 Qt。

    第一点是 Qt 真的,真的不想以你试图使用它的方式使用它。如果您正在编写某种脚本,那么 Qt 希望您将其提供给 Qt,以便它可以在您感觉如下时运行您的代码:

    我们建议您连接清理 aboutToQuit() 信号的代码, 而不是把它放在你的 应用程序的 main() 函数,因为 在某些平台上 QCoreApplication::exec() 调用可能不会 返回。

    使用 Qt,您几乎必须进行事件驱动编程,并让其控制您的程序流/主循环。

    如果您真的只是想要一些“实用程序”来显示一些 GUI 输入框并将用户输入到控制台的任何内容打印出来,请考虑将 puts 直接放在您连接到文本框的任何函数中。然后您可以在其他控制台脚本中使用该程序的输出。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-20
      相关资源
      最近更新 更多