Функция подключения к нажатию QPushButton - PullRequest
0 голосов
/ 11 мая 2018

Я хочу выполнить пользовательскую функцию после нажатия кнопки.Я не знаю, как правильно использовать функцию подключения для достижения поведения, указанного в фрагменте кода.

#!/usr/bin/env ruby
require 'Qt4'

def do_sth
  print "did something"
end

app = Qt::Application.new(ARGV)

btn = Qt::PushButton.new('Button')
btn.resize(75, 30)
btn.setFont(Qt::Font.new('Times', 18, Qt::Font::Bold))

# A button click will close the application.
#Qt::Object.connect(btn, SIGNAL('clicked()'),app, SLOT('quit()'))
#
# FIXME How to execute the function do_sth if the button was pressed?
Qt::Object.connect(btn, SIGNAL('clicked()'),app, SLOT('do_sth()'))

btn.show()
app.exec()

1 Ответ

0 голосов
/ 11 мая 2018

Спасибо за подсказку, все работает так, как вы предлагали.

#!/usr/bin/env ruby
require 'Qt4'

class Qo < Qt::Object
  slots 'do_sth()'
  slots 'bla()'

  def do_sth
    puts "did something"
  end

  def bla
    puts "blabla"
  end
end

qobj = Qo.new
app = Qt::Application.new(ARGV)

btn = Qt::PushButton.new('Button')
btn.resize(75, 30)
btn.setFont(Qt::Font.new('Times', 18, Qt::Font::Bold))

Qt::Object.connect(btn, SIGNAL('clicked()'),qobj, SLOT('do_sth()'))
Qt::Object.connect(btn, SIGNAL('pressed()'),qobj, SLOT('bla()'))

btn.show()
app.exec()
...