Нужно получить информацию из textedit (текстовое поле) формы Qt4ruby и передать обратно в строку для консоли - PullRequest
0 голосов
/ 11 июля 2010

Я думаю, что эту проблему лучше всего описать в коде. Я уверен, что решение близко, я просто не смог его найти. Я просматривал API Qt4, а также делал уроки. Вот мой код:

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}"

РЕДАКТИРОВАТЬ: Спасибо за этот ответ целое число. Все, что я хочу сделать, это диалоговое окно с изображением и комментарием, чтобы я мог получить эти данные. Я планирую сделать полную версию GUI с qt4, но это на потом.

1 Ответ

0 голосов
/ 11 июля 2010

Я не знаю Ruby, так что терпите меня, но я широко использую Qt в Python.

Во-первых, Qt действительно, действительно не хочет, чтобы его использовали так, как вы пытаетесьиспользовать это.Если вы делаете какой-то скрипт, то Qt хочет, чтобы вы передали его Qt, чтобы он мог запускать ваш код, когда он выглядит следующим образом:

Мы рекомендуем вам подключить код очистки кСигнал aboutToQuit (), вместо того, чтобы помещать его в функцию main () вашего приложения, потому что на некоторых платформах вызов QCoreApplication :: exec () может не возвращаться.

Работая с Qt, вы в значительной степени должны сделатьпрограммирование, управляемое событиями, и управление им потоком программы / основным циклом.

Если вам действительно нужна какая-то "утилита", которая отображает поле ввода GUI и печатает любые пользовательские вводы в консоль, подумайте над тем, чтобы поместить puts непосредственно в любой функции, которую вы подключили к текстовому полю.Затем вы можете использовать вывод этой программы в других консольных скриптах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...