📜 ⬆️ ⬇️

Ruby + Qt4, a simple text editor, part 2

In the previous post ( f3ex.habrahabr.ru/blog/54673 ) I wrote how to write a simple text editor using ruby ​​and Qt4.
Continuing porting examples from Python + Qt4 to Ruby + Qt4

Part 2.

Now consider the following question: when a file is not selected or no changes are made to the text - the “save” button should be inactive.
The “enabled” property in Qt Disigner is responsible for activity, or this property can be set from ruby-code using the setEnabled method
Set the b_save button's enabled property to false (uncheck the box) and regenerate the editor.rb form.
')
image



To find out if the text has changed, we will use the textChanged () signal for textEdit.

Let's change the start.rb code to the following:

Copy Source | Copy HTML require 'Qt4' require 'editor.rb' class StartQT4 < Qt::MainWindow slots 'file_dialog()' , 'file_save()' , 'enable_save()' def initialize parent= nil super @ui = Ui_Notepad.new @ui.setupUi self Qt:: Object .connect(@ui.b_open, SIGNAL( 'clicked()' ), self , SLOT( 'file_dialog()' )) Qt:: Object .connect(@ui.b_save, SIGNAL( 'clicked()' ), self , SLOT( 'file_save()' )) Qt:: Object .connect(@ui.editor_window, SIGNAL( 'textChanged()' ), self , SLOT( 'enable_save()' )) end def file_dialog f = Qt::FileDialog if @filename = f.getOpenFileName text = File . new (@filename).read @ui.editor_window.setText text # # "" textChanged() @ui.b_save.setEnabled false end end def enable_save @ui.b_save.setEnabled true end def file_save if @filename f = File .new @filename, 'w' f. puts @ui.editor_window.toPlainText f.close end end end if $ 0 == __FILE__ app = Qt::Application. new (ARGV) myapp = StartQT4 .new myapp.show app. exec end
  1. Copy Source | Copy HTML require 'Qt4' require 'editor.rb' class StartQT4 < Qt::MainWindow slots 'file_dialog()' , 'file_save()' , 'enable_save()' def initialize parent= nil super @ui = Ui_Notepad.new @ui.setupUi self Qt:: Object .connect(@ui.b_open, SIGNAL( 'clicked()' ), self , SLOT( 'file_dialog()' )) Qt:: Object .connect(@ui.b_save, SIGNAL( 'clicked()' ), self , SLOT( 'file_save()' )) Qt:: Object .connect(@ui.editor_window, SIGNAL( 'textChanged()' ), self , SLOT( 'enable_save()' )) end def file_dialog f = Qt::FileDialog if @filename = f.getOpenFileName text = File . new (@filename).read @ui.editor_window.setText text # # "" textChanged() @ui.b_save.setEnabled false end end def enable_save @ui.b_save.setEnabled true end def file_save if @filename f = File .new @filename, 'w' f. puts @ui.editor_window.toPlainText f.close end end end if $ 0 == __FILE__ app = Qt::Application. new (ARGV) myapp = StartQT4 .new myapp.show app. exec end
  2. Copy Source | Copy HTML require 'Qt4' require 'editor.rb' class StartQT4 < Qt::MainWindow slots 'file_dialog()' , 'file_save()' , 'enable_save()' def initialize parent= nil super @ui = Ui_Notepad.new @ui.setupUi self Qt:: Object .connect(@ui.b_open, SIGNAL( 'clicked()' ), self , SLOT( 'file_dialog()' )) Qt:: Object .connect(@ui.b_save, SIGNAL( 'clicked()' ), self , SLOT( 'file_save()' )) Qt:: Object .connect(@ui.editor_window, SIGNAL( 'textChanged()' ), self , SLOT( 'enable_save()' )) end def file_dialog f = Qt::FileDialog if @filename = f.getOpenFileName text = File . new (@filename).read @ui.editor_window.setText text # # "" textChanged() @ui.b_save.setEnabled false end end def enable_save @ui.b_save.setEnabled true end def file_save if @filename f = File .new @filename, 'w' f. puts @ui.editor_window.toPlainText f.close end end end if $ 0 == __FILE__ app = Qt::Application. new (ARGV) myapp = StartQT4 .new myapp.show app. exec end
  3. Copy Source | Copy HTML require 'Qt4' require 'editor.rb' class StartQT4 < Qt::MainWindow slots 'file_dialog()' , 'file_save()' , 'enable_save()' def initialize parent= nil super @ui = Ui_Notepad.new @ui.setupUi self Qt:: Object .connect(@ui.b_open, SIGNAL( 'clicked()' ), self , SLOT( 'file_dialog()' )) Qt:: Object .connect(@ui.b_save, SIGNAL( 'clicked()' ), self , SLOT( 'file_save()' )) Qt:: Object .connect(@ui.editor_window, SIGNAL( 'textChanged()' ), self , SLOT( 'enable_save()' )) end def file_dialog f = Qt::FileDialog if @filename = f.getOpenFileName text = File . new (@filename).read @ui.editor_window.setText text # # "" textChanged() @ui.b_save.setEnabled false end end def enable_save @ui.b_save.setEnabled true end def file_save if @filename f = File .new @filename, 'w' f. puts @ui.editor_window.toPlainText f.close end end end if $ 0 == __FILE__ app = Qt::Application. new (ARGV) myapp = StartQT4 .new myapp.show app. exec end
  4. Copy Source | Copy HTML require 'Qt4' require 'editor.rb' class StartQT4 < Qt::MainWindow slots 'file_dialog()' , 'file_save()' , 'enable_save()' def initialize parent= nil super @ui = Ui_Notepad.new @ui.setupUi self Qt:: Object .connect(@ui.b_open, SIGNAL( 'clicked()' ), self , SLOT( 'file_dialog()' )) Qt:: Object .connect(@ui.b_save, SIGNAL( 'clicked()' ), self , SLOT( 'file_save()' )) Qt:: Object .connect(@ui.editor_window, SIGNAL( 'textChanged()' ), self , SLOT( 'enable_save()' )) end def file_dialog f = Qt::FileDialog if @filename = f.getOpenFileName text = File . new (@filename).read @ui.editor_window.setText text # # "" textChanged() @ui.b_save.setEnabled false end end def enable_save @ui.b_save.setEnabled true end def file_save if @filename f = File .new @filename, 'w' f. puts @ui.editor_window.toPlainText f.close end end end if $ 0 == __FILE__ app = Qt::Application. new (ARGV) myapp = StartQT4 .new myapp.show app. exec end
  5. Copy Source | Copy HTML require 'Qt4' require 'editor.rb' class StartQT4 < Qt::MainWindow slots 'file_dialog()' , 'file_save()' , 'enable_save()' def initialize parent= nil super @ui = Ui_Notepad.new @ui.setupUi self Qt:: Object .connect(@ui.b_open, SIGNAL( 'clicked()' ), self , SLOT( 'file_dialog()' )) Qt:: Object .connect(@ui.b_save, SIGNAL( 'clicked()' ), self , SLOT( 'file_save()' )) Qt:: Object .connect(@ui.editor_window, SIGNAL( 'textChanged()' ), self , SLOT( 'enable_save()' )) end def file_dialog f = Qt::FileDialog if @filename = f.getOpenFileName text = File . new (@filename).read @ui.editor_window.setText text # # "" textChanged() @ui.b_save.setEnabled false end end def enable_save @ui.b_save.setEnabled true end def file_save if @filename f = File .new @filename, 'w' f. puts @ui.editor_window.toPlainText f.close end end end if $ 0 == __FILE__ app = Qt::Application. new (ARGV) myapp = StartQT4 .new myapp.show app. exec end
  6. Copy Source | Copy HTML require 'Qt4' require 'editor.rb' class StartQT4 < Qt::MainWindow slots 'file_dialog()' , 'file_save()' , 'enable_save()' def initialize parent= nil super @ui = Ui_Notepad.new @ui.setupUi self Qt:: Object .connect(@ui.b_open, SIGNAL( 'clicked()' ), self , SLOT( 'file_dialog()' )) Qt:: Object .connect(@ui.b_save, SIGNAL( 'clicked()' ), self , SLOT( 'file_save()' )) Qt:: Object .connect(@ui.editor_window, SIGNAL( 'textChanged()' ), self , SLOT( 'enable_save()' )) end def file_dialog f = Qt::FileDialog if @filename = f.getOpenFileName text = File . new (@filename).read @ui.editor_window.setText text # # "" textChanged() @ui.b_save.setEnabled false end end def enable_save @ui.b_save.setEnabled true end def file_save if @filename f = File .new @filename, 'w' f. puts @ui.editor_window.toPlainText f.close end end end if $ 0 == __FILE__ app = Qt::Application. new (ARGV) myapp = StartQT4 .new myapp.show app. exec end
  7. Copy Source | Copy HTML require 'Qt4' require 'editor.rb' class StartQT4 < Qt::MainWindow slots 'file_dialog()' , 'file_save()' , 'enable_save()' def initialize parent= nil super @ui = Ui_Notepad.new @ui.setupUi self Qt:: Object .connect(@ui.b_open, SIGNAL( 'clicked()' ), self , SLOT( 'file_dialog()' )) Qt:: Object .connect(@ui.b_save, SIGNAL( 'clicked()' ), self , SLOT( 'file_save()' )) Qt:: Object .connect(@ui.editor_window, SIGNAL( 'textChanged()' ), self , SLOT( 'enable_save()' )) end def file_dialog f = Qt::FileDialog if @filename = f.getOpenFileName text = File . new (@filename).read @ui.editor_window.setText text # # "" textChanged() @ui.b_save.setEnabled false end end def enable_save @ui.b_save.setEnabled true end def file_save if @filename f = File .new @filename, 'w' f. puts @ui.editor_window.toPlainText f.close end end end if $ 0 == __FILE__ app = Qt::Application. new (ARGV) myapp = StartQT4 .new myapp.show app. exec end
  8. Copy Source | Copy HTML require 'Qt4' require 'editor.rb' class StartQT4 < Qt::MainWindow slots 'file_dialog()' , 'file_save()' , 'enable_save()' def initialize parent= nil super @ui = Ui_Notepad.new @ui.setupUi self Qt:: Object .connect(@ui.b_open, SIGNAL( 'clicked()' ), self , SLOT( 'file_dialog()' )) Qt:: Object .connect(@ui.b_save, SIGNAL( 'clicked()' ), self , SLOT( 'file_save()' )) Qt:: Object .connect(@ui.editor_window, SIGNAL( 'textChanged()' ), self , SLOT( 'enable_save()' )) end def file_dialog f = Qt::FileDialog if @filename = f.getOpenFileName text = File . new (@filename).read @ui.editor_window.setText text # # "" textChanged() @ui.b_save.setEnabled false end end def enable_save @ui.b_save.setEnabled true end def file_save if @filename f = File .new @filename, 'w' f. puts @ui.editor_window.toPlainText f.close end end end if $ 0 == __FILE__ app = Qt::Application. new (ARGV) myapp = StartQT4 .new myapp.show app. exec end
  9. Copy Source | Copy HTML require 'Qt4' require 'editor.rb' class StartQT4 < Qt::MainWindow slots 'file_dialog()' , 'file_save()' , 'enable_save()' def initialize parent= nil super @ui = Ui_Notepad.new @ui.setupUi self Qt:: Object .connect(@ui.b_open, SIGNAL( 'clicked()' ), self , SLOT( 'file_dialog()' )) Qt:: Object .connect(@ui.b_save, SIGNAL( 'clicked()' ), self , SLOT( 'file_save()' )) Qt:: Object .connect(@ui.editor_window, SIGNAL( 'textChanged()' ), self , SLOT( 'enable_save()' )) end def file_dialog f = Qt::FileDialog if @filename = f.getOpenFileName text = File . new (@filename).read @ui.editor_window.setText text # # "" textChanged() @ui.b_save.setEnabled false end end def enable_save @ui.b_save.setEnabled true end def file_save if @filename f = File .new @filename, 'w' f. puts @ui.editor_window.toPlainText f.close end end end if $ 0 == __FILE__ app = Qt::Application. new (ARGV) myapp = StartQT4 .new myapp.show app. exec end
  10. Copy Source | Copy HTML require 'Qt4' require 'editor.rb' class StartQT4 < Qt::MainWindow slots 'file_dialog()' , 'file_save()' , 'enable_save()' def initialize parent= nil super @ui = Ui_Notepad.new @ui.setupUi self Qt:: Object .connect(@ui.b_open, SIGNAL( 'clicked()' ), self , SLOT( 'file_dialog()' )) Qt:: Object .connect(@ui.b_save, SIGNAL( 'clicked()' ), self , SLOT( 'file_save()' )) Qt:: Object .connect(@ui.editor_window, SIGNAL( 'textChanged()' ), self , SLOT( 'enable_save()' )) end def file_dialog f = Qt::FileDialog if @filename = f.getOpenFileName text = File . new (@filename).read @ui.editor_window.setText text # # "" textChanged() @ui.b_save.setEnabled false end end def enable_save @ui.b_save.setEnabled true end def file_save if @filename f = File .new @filename, 'w' f. puts @ui.editor_window.toPlainText f.close end end end if $ 0 == __FILE__ app = Qt::Application. new (ARGV) myapp = StartQT4 .new myapp.show app. exec end
  11. Copy Source | Copy HTML require 'Qt4' require 'editor.rb' class StartQT4 < Qt::MainWindow slots 'file_dialog()' , 'file_save()' , 'enable_save()' def initialize parent= nil super @ui = Ui_Notepad.new @ui.setupUi self Qt:: Object .connect(@ui.b_open, SIGNAL( 'clicked()' ), self , SLOT( 'file_dialog()' )) Qt:: Object .connect(@ui.b_save, SIGNAL( 'clicked()' ), self , SLOT( 'file_save()' )) Qt:: Object .connect(@ui.editor_window, SIGNAL( 'textChanged()' ), self , SLOT( 'enable_save()' )) end def file_dialog f = Qt::FileDialog if @filename = f.getOpenFileName text = File . new (@filename).read @ui.editor_window.setText text # # "" textChanged() @ui.b_save.setEnabled false end end def enable_save @ui.b_save.setEnabled true end def file_save if @filename f = File .new @filename, 'w' f. puts @ui.editor_window.toPlainText f.close end end end if $ 0 == __FILE__ app = Qt::Application. new (ARGV) myapp = StartQT4 .new myapp.show app. exec end
  12. Copy Source | Copy HTML require 'Qt4' require 'editor.rb' class StartQT4 < Qt::MainWindow slots 'file_dialog()' , 'file_save()' , 'enable_save()' def initialize parent= nil super @ui = Ui_Notepad.new @ui.setupUi self Qt:: Object .connect(@ui.b_open, SIGNAL( 'clicked()' ), self , SLOT( 'file_dialog()' )) Qt:: Object .connect(@ui.b_save, SIGNAL( 'clicked()' ), self , SLOT( 'file_save()' )) Qt:: Object .connect(@ui.editor_window, SIGNAL( 'textChanged()' ), self , SLOT( 'enable_save()' )) end def file_dialog f = Qt::FileDialog if @filename = f.getOpenFileName text = File . new (@filename).read @ui.editor_window.setText text # # "" textChanged() @ui.b_save.setEnabled false end end def enable_save @ui.b_save.setEnabled true end def file_save if @filename f = File .new @filename, 'w' f. puts @ui.editor_window.toPlainText f.close end end end if $ 0 == __FILE__ app = Qt::Application. new (ARGV) myapp = StartQT4 .new myapp.show app. exec end
  13. Copy Source | Copy HTML require 'Qt4' require 'editor.rb' class StartQT4 < Qt::MainWindow slots 'file_dialog()' , 'file_save()' , 'enable_save()' def initialize parent= nil super @ui = Ui_Notepad.new @ui.setupUi self Qt:: Object .connect(@ui.b_open, SIGNAL( 'clicked()' ), self , SLOT( 'file_dialog()' )) Qt:: Object .connect(@ui.b_save, SIGNAL( 'clicked()' ), self , SLOT( 'file_save()' )) Qt:: Object .connect(@ui.editor_window, SIGNAL( 'textChanged()' ), self , SLOT( 'enable_save()' )) end def file_dialog f = Qt::FileDialog if @filename = f.getOpenFileName text = File . new (@filename).read @ui.editor_window.setText text # # "" textChanged() @ui.b_save.setEnabled false end end def enable_save @ui.b_save.setEnabled true end def file_save if @filename f = File .new @filename, 'w' f. puts @ui.editor_window.toPlainText f.close end end end if $ 0 == __FILE__ app = Qt::Application. new (ARGV) myapp = StartQT4 .new myapp.show app. exec end
  14. Copy Source | Copy HTML require 'Qt4' require 'editor.rb' class StartQT4 < Qt::MainWindow slots 'file_dialog()' , 'file_save()' , 'enable_save()' def initialize parent= nil super @ui = Ui_Notepad.new @ui.setupUi self Qt:: Object .connect(@ui.b_open, SIGNAL( 'clicked()' ), self , SLOT( 'file_dialog()' )) Qt:: Object .connect(@ui.b_save, SIGNAL( 'clicked()' ), self , SLOT( 'file_save()' )) Qt:: Object .connect(@ui.editor_window, SIGNAL( 'textChanged()' ), self , SLOT( 'enable_save()' )) end def file_dialog f = Qt::FileDialog if @filename = f.getOpenFileName text = File . new (@filename).read @ui.editor_window.setText text # # "" textChanged() @ui.b_save.setEnabled false end end def enable_save @ui.b_save.setEnabled true end def file_save if @filename f = File .new @filename, 'w' f. puts @ui.editor_window.toPlainText f.close end end end if $ 0 == __FILE__ app = Qt::Application. new (ARGV) myapp = StartQT4 .new myapp.show app. exec end
  15. Copy Source | Copy HTML require 'Qt4' require 'editor.rb' class StartQT4 < Qt::MainWindow slots 'file_dialog()' , 'file_save()' , 'enable_save()' def initialize parent= nil super @ui = Ui_Notepad.new @ui.setupUi self Qt:: Object .connect(@ui.b_open, SIGNAL( 'clicked()' ), self , SLOT( 'file_dialog()' )) Qt:: Object .connect(@ui.b_save, SIGNAL( 'clicked()' ), self , SLOT( 'file_save()' )) Qt:: Object .connect(@ui.editor_window, SIGNAL( 'textChanged()' ), self , SLOT( 'enable_save()' )) end def file_dialog f = Qt::FileDialog if @filename = f.getOpenFileName text = File . new (@filename).read @ui.editor_window.setText text # # "" textChanged() @ui.b_save.setEnabled false end end def enable_save @ui.b_save.setEnabled true end def file_save if @filename f = File .new @filename, 'w' f. puts @ui.editor_window.toPlainText f.close end end end if $ 0 == __FILE__ app = Qt::Application. new (ARGV) myapp = StartQT4 .new myapp.show app. exec end
  16. Copy Source | Copy HTML require 'Qt4' require 'editor.rb' class StartQT4 < Qt::MainWindow slots 'file_dialog()' , 'file_save()' , 'enable_save()' def initialize parent= nil super @ui = Ui_Notepad.new @ui.setupUi self Qt:: Object .connect(@ui.b_open, SIGNAL( 'clicked()' ), self , SLOT( 'file_dialog()' )) Qt:: Object .connect(@ui.b_save, SIGNAL( 'clicked()' ), self , SLOT( 'file_save()' )) Qt:: Object .connect(@ui.editor_window, SIGNAL( 'textChanged()' ), self , SLOT( 'enable_save()' )) end def file_dialog f = Qt::FileDialog if @filename = f.getOpenFileName text = File . new (@filename).read @ui.editor_window.setText text # # "" textChanged() @ui.b_save.setEnabled false end end def enable_save @ui.b_save.setEnabled true end def file_save if @filename f = File .new @filename, 'w' f. puts @ui.editor_window.toPlainText f.close end end end if $ 0 == __FILE__ app = Qt::Application. new (ARGV) myapp = StartQT4 .new myapp.show app. exec end
  17. Copy Source | Copy HTML require 'Qt4' require 'editor.rb' class StartQT4 < Qt::MainWindow slots 'file_dialog()' , 'file_save()' , 'enable_save()' def initialize parent= nil super @ui = Ui_Notepad.new @ui.setupUi self Qt:: Object .connect(@ui.b_open, SIGNAL( 'clicked()' ), self , SLOT( 'file_dialog()' )) Qt:: Object .connect(@ui.b_save, SIGNAL( 'clicked()' ), self , SLOT( 'file_save()' )) Qt:: Object .connect(@ui.editor_window, SIGNAL( 'textChanged()' ), self , SLOT( 'enable_save()' )) end def file_dialog f = Qt::FileDialog if @filename = f.getOpenFileName text = File . new (@filename).read @ui.editor_window.setText text # # "" textChanged() @ui.b_save.setEnabled false end end def enable_save @ui.b_save.setEnabled true end def file_save if @filename f = File .new @filename, 'w' f. puts @ui.editor_window.toPlainText f.close end end end if $ 0 == __FILE__ app = Qt::Application. new (ARGV) myapp = StartQT4 .new myapp.show app. exec end
  18. Copy Source | Copy HTML require 'Qt4' require 'editor.rb' class StartQT4 < Qt::MainWindow slots 'file_dialog()' , 'file_save()' , 'enable_save()' def initialize parent= nil super @ui = Ui_Notepad.new @ui.setupUi self Qt:: Object .connect(@ui.b_open, SIGNAL( 'clicked()' ), self , SLOT( 'file_dialog()' )) Qt:: Object .connect(@ui.b_save, SIGNAL( 'clicked()' ), self , SLOT( 'file_save()' )) Qt:: Object .connect(@ui.editor_window, SIGNAL( 'textChanged()' ), self , SLOT( 'enable_save()' )) end def file_dialog f = Qt::FileDialog if @filename = f.getOpenFileName text = File . new (@filename).read @ui.editor_window.setText text # # "" textChanged() @ui.b_save.setEnabled false end end def enable_save @ui.b_save.setEnabled true end def file_save if @filename f = File .new @filename, 'w' f. puts @ui.editor_window.toPlainText f.close end end end if $ 0 == __FILE__ app = Qt::Application. new (ARGV) myapp = StartQT4 .new myapp.show app. exec end
  19. Copy Source | Copy HTML require 'Qt4' require 'editor.rb' class StartQT4 < Qt::MainWindow slots 'file_dialog()' , 'file_save()' , 'enable_save()' def initialize parent= nil super @ui = Ui_Notepad.new @ui.setupUi self Qt:: Object .connect(@ui.b_open, SIGNAL( 'clicked()' ), self , SLOT( 'file_dialog()' )) Qt:: Object .connect(@ui.b_save, SIGNAL( 'clicked()' ), self , SLOT( 'file_save()' )) Qt:: Object .connect(@ui.editor_window, SIGNAL( 'textChanged()' ), self , SLOT( 'enable_save()' )) end def file_dialog f = Qt::FileDialog if @filename = f.getOpenFileName text = File . new (@filename).read @ui.editor_window.setText text # # "" textChanged() @ui.b_save.setEnabled false end end def enable_save @ui.b_save.setEnabled true end def file_save if @filename f = File .new @filename, 'w' f. puts @ui.editor_window.toPlainText f.close end end end if $ 0 == __FILE__ app = Qt::Application. new (ARGV) myapp = StartQT4 .new myapp.show app. exec end
  20. Copy Source | Copy HTML require 'Qt4' require 'editor.rb' class StartQT4 < Qt::MainWindow slots 'file_dialog()' , 'file_save()' , 'enable_save()' def initialize parent= nil super @ui = Ui_Notepad.new @ui.setupUi self Qt:: Object .connect(@ui.b_open, SIGNAL( 'clicked()' ), self , SLOT( 'file_dialog()' )) Qt:: Object .connect(@ui.b_save, SIGNAL( 'clicked()' ), self , SLOT( 'file_save()' )) Qt:: Object .connect(@ui.editor_window, SIGNAL( 'textChanged()' ), self , SLOT( 'enable_save()' )) end def file_dialog f = Qt::FileDialog if @filename = f.getOpenFileName text = File . new (@filename).read @ui.editor_window.setText text # # "" textChanged() @ui.b_save.setEnabled false end end def enable_save @ui.b_save.setEnabled true end def file_save if @filename f = File .new @filename, 'w' f. puts @ui.editor_window.toPlainText f.close end end end if $ 0 == __FILE__ app = Qt::Application. new (ARGV) myapp = StartQT4 .new myapp.show app. exec end
  21. Copy Source | Copy HTML require 'Qt4' require 'editor.rb' class StartQT4 < Qt::MainWindow slots 'file_dialog()' , 'file_save()' , 'enable_save()' def initialize parent= nil super @ui = Ui_Notepad.new @ui.setupUi self Qt:: Object .connect(@ui.b_open, SIGNAL( 'clicked()' ), self , SLOT( 'file_dialog()' )) Qt:: Object .connect(@ui.b_save, SIGNAL( 'clicked()' ), self , SLOT( 'file_save()' )) Qt:: Object .connect(@ui.editor_window, SIGNAL( 'textChanged()' ), self , SLOT( 'enable_save()' )) end def file_dialog f = Qt::FileDialog if @filename = f.getOpenFileName text = File . new (@filename).read @ui.editor_window.setText text # # "" textChanged() @ui.b_save.setEnabled false end end def enable_save @ui.b_save.setEnabled true end def file_save if @filename f = File .new @filename, 'w' f. puts @ui.editor_window.toPlainText f.close end end end if $ 0 == __FILE__ app = Qt::Application. new (ARGV) myapp = StartQT4 .new myapp.show app. exec end
  22. Copy Source | Copy HTML require 'Qt4' require 'editor.rb' class StartQT4 < Qt::MainWindow slots 'file_dialog()' , 'file_save()' , 'enable_save()' def initialize parent= nil super @ui = Ui_Notepad.new @ui.setupUi self Qt:: Object .connect(@ui.b_open, SIGNAL( 'clicked()' ), self , SLOT( 'file_dialog()' )) Qt:: Object .connect(@ui.b_save, SIGNAL( 'clicked()' ), self , SLOT( 'file_save()' )) Qt:: Object .connect(@ui.editor_window, SIGNAL( 'textChanged()' ), self , SLOT( 'enable_save()' )) end def file_dialog f = Qt::FileDialog if @filename = f.getOpenFileName text = File . new (@filename).read @ui.editor_window.setText text # # "" textChanged() @ui.b_save.setEnabled false end end def enable_save @ui.b_save.setEnabled true end def file_save if @filename f = File .new @filename, 'w' f. puts @ui.editor_window.toPlainText f.close end end end if $ 0 == __FILE__ app = Qt::Application. new (ARGV) myapp = StartQT4 .new myapp.show app. exec end
  23. Copy Source | Copy HTML require 'Qt4' require 'editor.rb' class StartQT4 < Qt::MainWindow slots 'file_dialog()' , 'file_save()' , 'enable_save()' def initialize parent= nil super @ui = Ui_Notepad.new @ui.setupUi self Qt:: Object .connect(@ui.b_open, SIGNAL( 'clicked()' ), self , SLOT( 'file_dialog()' )) Qt:: Object .connect(@ui.b_save, SIGNAL( 'clicked()' ), self , SLOT( 'file_save()' )) Qt:: Object .connect(@ui.editor_window, SIGNAL( 'textChanged()' ), self , SLOT( 'enable_save()' )) end def file_dialog f = Qt::FileDialog if @filename = f.getOpenFileName text = File . new (@filename).read @ui.editor_window.setText text # # "" textChanged() @ui.b_save.setEnabled false end end def enable_save @ui.b_save.setEnabled true end def file_save if @filename f = File .new @filename, 'w' f. puts @ui.editor_window.toPlainText f.close end end end if $ 0 == __FILE__ app = Qt::Application. new (ARGV) myapp = StartQT4 .new myapp.show app. exec end
  24. Copy Source | Copy HTML require 'Qt4' require 'editor.rb' class StartQT4 < Qt::MainWindow slots 'file_dialog()' , 'file_save()' , 'enable_save()' def initialize parent= nil super @ui = Ui_Notepad.new @ui.setupUi self Qt:: Object .connect(@ui.b_open, SIGNAL( 'clicked()' ), self , SLOT( 'file_dialog()' )) Qt:: Object .connect(@ui.b_save, SIGNAL( 'clicked()' ), self , SLOT( 'file_save()' )) Qt:: Object .connect(@ui.editor_window, SIGNAL( 'textChanged()' ), self , SLOT( 'enable_save()' )) end def file_dialog f = Qt::FileDialog if @filename = f.getOpenFileName text = File . new (@filename).read @ui.editor_window.setText text # # "" textChanged() @ui.b_save.setEnabled false end end def enable_save @ui.b_save.setEnabled true end def file_save if @filename f = File .new @filename, 'w' f. puts @ui.editor_window.toPlainText f.close end end end if $ 0 == __FILE__ app = Qt::Application. new (ARGV) myapp = StartQT4 .new myapp.show app. exec end
  25. Copy Source | Copy HTML require 'Qt4' require 'editor.rb' class StartQT4 < Qt::MainWindow slots 'file_dialog()' , 'file_save()' , 'enable_save()' def initialize parent= nil super @ui = Ui_Notepad.new @ui.setupUi self Qt:: Object .connect(@ui.b_open, SIGNAL( 'clicked()' ), self , SLOT( 'file_dialog()' )) Qt:: Object .connect(@ui.b_save, SIGNAL( 'clicked()' ), self , SLOT( 'file_save()' )) Qt:: Object .connect(@ui.editor_window, SIGNAL( 'textChanged()' ), self , SLOT( 'enable_save()' )) end def file_dialog f = Qt::FileDialog if @filename = f.getOpenFileName text = File . new (@filename).read @ui.editor_window.setText text # # "" textChanged() @ui.b_save.setEnabled false end end def enable_save @ui.b_save.setEnabled true end def file_save if @filename f = File .new @filename, 'w' f. puts @ui.editor_window.toPlainText f.close end end end if $ 0 == __FILE__ app = Qt::Application. new (ARGV) myapp = StartQT4 .new myapp.show app. exec end
  26. Copy Source | Copy HTML require 'Qt4' require 'editor.rb' class StartQT4 < Qt::MainWindow slots 'file_dialog()' , 'file_save()' , 'enable_save()' def initialize parent= nil super @ui = Ui_Notepad.new @ui.setupUi self Qt:: Object .connect(@ui.b_open, SIGNAL( 'clicked()' ), self , SLOT( 'file_dialog()' )) Qt:: Object .connect(@ui.b_save, SIGNAL( 'clicked()' ), self , SLOT( 'file_save()' )) Qt:: Object .connect(@ui.editor_window, SIGNAL( 'textChanged()' ), self , SLOT( 'enable_save()' )) end def file_dialog f = Qt::FileDialog if @filename = f.getOpenFileName text = File . new (@filename).read @ui.editor_window.setText text # # "" textChanged() @ui.b_save.setEnabled false end end def enable_save @ui.b_save.setEnabled true end def file_save if @filename f = File .new @filename, 'w' f. puts @ui.editor_window.toPlainText f.close end end end if $ 0 == __FILE__ app = Qt::Application. new (ARGV) myapp = StartQT4 .new myapp.show app. exec end
  27. Copy Source | Copy HTML require 'Qt4' require 'editor.rb' class StartQT4 < Qt::MainWindow slots 'file_dialog()' , 'file_save()' , 'enable_save()' def initialize parent= nil super @ui = Ui_Notepad.new @ui.setupUi self Qt:: Object .connect(@ui.b_open, SIGNAL( 'clicked()' ), self , SLOT( 'file_dialog()' )) Qt:: Object .connect(@ui.b_save, SIGNAL( 'clicked()' ), self , SLOT( 'file_save()' )) Qt:: Object .connect(@ui.editor_window, SIGNAL( 'textChanged()' ), self , SLOT( 'enable_save()' )) end def file_dialog f = Qt::FileDialog if @filename = f.getOpenFileName text = File . new (@filename).read @ui.editor_window.setText text # # "" textChanged() @ui.b_save.setEnabled false end end def enable_save @ui.b_save.setEnabled true end def file_save if @filename f = File .new @filename, 'w' f. puts @ui.editor_window.toPlainText f.close end end end if $ 0 == __FILE__ app = Qt::Application. new (ARGV) myapp = StartQT4 .new myapp.show app. exec end
  28. Copy Source | Copy HTML require 'Qt4' require 'editor.rb' class StartQT4 < Qt::MainWindow slots 'file_dialog()' , 'file_save()' , 'enable_save()' def initialize parent= nil super @ui = Ui_Notepad.new @ui.setupUi self Qt:: Object .connect(@ui.b_open, SIGNAL( 'clicked()' ), self , SLOT( 'file_dialog()' )) Qt:: Object .connect(@ui.b_save, SIGNAL( 'clicked()' ), self , SLOT( 'file_save()' )) Qt:: Object .connect(@ui.editor_window, SIGNAL( 'textChanged()' ), self , SLOT( 'enable_save()' )) end def file_dialog f = Qt::FileDialog if @filename = f.getOpenFileName text = File . new (@filename).read @ui.editor_window.setText text # # "" textChanged() @ui.b_save.setEnabled false end end def enable_save @ui.b_save.setEnabled true end def file_save if @filename f = File .new @filename, 'w' f. puts @ui.editor_window.toPlainText f.close end end end if $ 0 == __FILE__ app = Qt::Application. new (ARGV) myapp = StartQT4 .new myapp.show app. exec end
  29. Copy Source | Copy HTML require 'Qt4' require 'editor.rb' class StartQT4 < Qt::MainWindow slots 'file_dialog()' , 'file_save()' , 'enable_save()' def initialize parent= nil super @ui = Ui_Notepad.new @ui.setupUi self Qt:: Object .connect(@ui.b_open, SIGNAL( 'clicked()' ), self , SLOT( 'file_dialog()' )) Qt:: Object .connect(@ui.b_save, SIGNAL( 'clicked()' ), self , SLOT( 'file_save()' )) Qt:: Object .connect(@ui.editor_window, SIGNAL( 'textChanged()' ), self , SLOT( 'enable_save()' )) end def file_dialog f = Qt::FileDialog if @filename = f.getOpenFileName text = File . new (@filename).read @ui.editor_window.setText text # # "" textChanged() @ui.b_save.setEnabled false end end def enable_save @ui.b_save.setEnabled true end def file_save if @filename f = File .new @filename, 'w' f. puts @ui.editor_window.toPlainText f.close end end end if $ 0 == __FILE__ app = Qt::Application. new (ARGV) myapp = StartQT4 .new myapp.show app. exec end
  30. Copy Source | Copy HTML require 'Qt4' require 'editor.rb' class StartQT4 < Qt::MainWindow slots 'file_dialog()' , 'file_save()' , 'enable_save()' def initialize parent= nil super @ui = Ui_Notepad.new @ui.setupUi self Qt:: Object .connect(@ui.b_open, SIGNAL( 'clicked()' ), self , SLOT( 'file_dialog()' )) Qt:: Object .connect(@ui.b_save, SIGNAL( 'clicked()' ), self , SLOT( 'file_save()' )) Qt:: Object .connect(@ui.editor_window, SIGNAL( 'textChanged()' ), self , SLOT( 'enable_save()' )) end def file_dialog f = Qt::FileDialog if @filename = f.getOpenFileName text = File . new (@filename).read @ui.editor_window.setText text # # "" textChanged() @ui.b_save.setEnabled false end end def enable_save @ui.b_save.setEnabled true end def file_save if @filename f = File .new @filename, 'w' f. puts @ui.editor_window.toPlainText f.close end end end if $ 0 == __FILE__ app = Qt::Application. new (ARGV) myapp = StartQT4 .new myapp.show app. exec end
  31. Copy Source | Copy HTML require 'Qt4' require 'editor.rb' class StartQT4 < Qt::MainWindow slots 'file_dialog()' , 'file_save()' , 'enable_save()' def initialize parent= nil super @ui = Ui_Notepad.new @ui.setupUi self Qt:: Object .connect(@ui.b_open, SIGNAL( 'clicked()' ), self , SLOT( 'file_dialog()' )) Qt:: Object .connect(@ui.b_save, SIGNAL( 'clicked()' ), self , SLOT( 'file_save()' )) Qt:: Object .connect(@ui.editor_window, SIGNAL( 'textChanged()' ), self , SLOT( 'enable_save()' )) end def file_dialog f = Qt::FileDialog if @filename = f.getOpenFileName text = File . new (@filename).read @ui.editor_window.setText text # # "" textChanged() @ui.b_save.setEnabled false end end def enable_save @ui.b_save.setEnabled true end def file_save if @filename f = File .new @filename, 'w' f. puts @ui.editor_window.toPlainText f.close end end end if $ 0 == __FILE__ app = Qt::Application. new (ARGV) myapp = StartQT4 .new myapp.show app. exec end
  32. Copy Source | Copy HTML require 'Qt4' require 'editor.rb' class StartQT4 < Qt::MainWindow slots 'file_dialog()' , 'file_save()' , 'enable_save()' def initialize parent= nil super @ui = Ui_Notepad.new @ui.setupUi self Qt:: Object .connect(@ui.b_open, SIGNAL( 'clicked()' ), self , SLOT( 'file_dialog()' )) Qt:: Object .connect(@ui.b_save, SIGNAL( 'clicked()' ), self , SLOT( 'file_save()' )) Qt:: Object .connect(@ui.editor_window, SIGNAL( 'textChanged()' ), self , SLOT( 'enable_save()' )) end def file_dialog f = Qt::FileDialog if @filename = f.getOpenFileName text = File . new (@filename).read @ui.editor_window.setText text # # "" textChanged() @ui.b_save.setEnabled false end end def enable_save @ui.b_save.setEnabled true end def file_save if @filename f = File .new @filename, 'w' f. puts @ui.editor_window.toPlainText f.close end end end if $ 0 == __FILE__ app = Qt::Application. new (ARGV) myapp = StartQT4 .new myapp.show app. exec end
  33. Copy Source | Copy HTML require 'Qt4' require 'editor.rb' class StartQT4 < Qt::MainWindow slots 'file_dialog()' , 'file_save()' , 'enable_save()' def initialize parent= nil super @ui = Ui_Notepad.new @ui.setupUi self Qt:: Object .connect(@ui.b_open, SIGNAL( 'clicked()' ), self , SLOT( 'file_dialog()' )) Qt:: Object .connect(@ui.b_save, SIGNAL( 'clicked()' ), self , SLOT( 'file_save()' )) Qt:: Object .connect(@ui.editor_window, SIGNAL( 'textChanged()' ), self , SLOT( 'enable_save()' )) end def file_dialog f = Qt::FileDialog if @filename = f.getOpenFileName text = File . new (@filename).read @ui.editor_window.setText text # # "" textChanged() @ui.b_save.setEnabled false end end def enable_save @ui.b_save.setEnabled true end def file_save if @filename f = File .new @filename, 'w' f. puts @ui.editor_window.toPlainText f.close end end end if $ 0 == __FILE__ app = Qt::Application. new (ARGV) myapp = StartQT4 .new myapp.show app. exec end
  34. Copy Source | Copy HTML require 'Qt4' require 'editor.rb' class StartQT4 < Qt::MainWindow slots 'file_dialog()' , 'file_save()' , 'enable_save()' def initialize parent= nil super @ui = Ui_Notepad.new @ui.setupUi self Qt:: Object .connect(@ui.b_open, SIGNAL( 'clicked()' ), self , SLOT( 'file_dialog()' )) Qt:: Object .connect(@ui.b_save, SIGNAL( 'clicked()' ), self , SLOT( 'file_save()' )) Qt:: Object .connect(@ui.editor_window, SIGNAL( 'textChanged()' ), self , SLOT( 'enable_save()' )) end def file_dialog f = Qt::FileDialog if @filename = f.getOpenFileName text = File . new (@filename).read @ui.editor_window.setText text # # "" textChanged() @ui.b_save.setEnabled false end end def enable_save @ui.b_save.setEnabled true end def file_save if @filename f = File .new @filename, 'w' f. puts @ui.editor_window.toPlainText f.close end end end if $ 0 == __FILE__ app = Qt::Application. new (ARGV) myapp = StartQT4 .new myapp.show app. exec end
  35. Copy Source | Copy HTML require 'Qt4' require 'editor.rb' class StartQT4 < Qt::MainWindow slots 'file_dialog()' , 'file_save()' , 'enable_save()' def initialize parent= nil super @ui = Ui_Notepad.new @ui.setupUi self Qt:: Object .connect(@ui.b_open, SIGNAL( 'clicked()' ), self , SLOT( 'file_dialog()' )) Qt:: Object .connect(@ui.b_save, SIGNAL( 'clicked()' ), self , SLOT( 'file_save()' )) Qt:: Object .connect(@ui.editor_window, SIGNAL( 'textChanged()' ), self , SLOT( 'enable_save()' )) end def file_dialog f = Qt::FileDialog if @filename = f.getOpenFileName text = File . new (@filename).read @ui.editor_window.setText text # # "" textChanged() @ui.b_save.setEnabled false end end def enable_save @ui.b_save.setEnabled true end def file_save if @filename f = File .new @filename, 'w' f. puts @ui.editor_window.toPlainText f.close end end end if $ 0 == __FILE__ app = Qt::Application. new (ARGV) myapp = StartQT4 .new myapp.show app. exec end
  36. Copy Source | Copy HTML require 'Qt4' require 'editor.rb' class StartQT4 < Qt::MainWindow slots 'file_dialog()' , 'file_save()' , 'enable_save()' def initialize parent= nil super @ui = Ui_Notepad.new @ui.setupUi self Qt:: Object .connect(@ui.b_open, SIGNAL( 'clicked()' ), self , SLOT( 'file_dialog()' )) Qt:: Object .connect(@ui.b_save, SIGNAL( 'clicked()' ), self , SLOT( 'file_save()' )) Qt:: Object .connect(@ui.editor_window, SIGNAL( 'textChanged()' ), self , SLOT( 'enable_save()' )) end def file_dialog f = Qt::FileDialog if @filename = f.getOpenFileName text = File . new (@filename).read @ui.editor_window.setText text # # "" textChanged() @ui.b_save.setEnabled false end end def enable_save @ui.b_save.setEnabled true end def file_save if @filename f = File .new @filename, 'w' f. puts @ui.editor_window.toPlainText f.close end end end if $ 0 == __FILE__ app = Qt::Application. new (ARGV) myapp = StartQT4 .new myapp.show app. exec end
  37. Copy Source | Copy HTML require 'Qt4' require 'editor.rb' class StartQT4 < Qt::MainWindow slots 'file_dialog()' , 'file_save()' , 'enable_save()' def initialize parent= nil super @ui = Ui_Notepad.new @ui.setupUi self Qt:: Object .connect(@ui.b_open, SIGNAL( 'clicked()' ), self , SLOT( 'file_dialog()' )) Qt:: Object .connect(@ui.b_save, SIGNAL( 'clicked()' ), self , SLOT( 'file_save()' )) Qt:: Object .connect(@ui.editor_window, SIGNAL( 'textChanged()' ), self , SLOT( 'enable_save()' )) end def file_dialog f = Qt::FileDialog if @filename = f.getOpenFileName text = File . new (@filename).read @ui.editor_window.setText text # # "" textChanged() @ui.b_save.setEnabled false end end def enable_save @ui.b_save.setEnabled true end def file_save if @filename f = File .new @filename, 'w' f. puts @ui.editor_window.toPlainText f.close end end end if $ 0 == __FILE__ app = Qt::Application. new (ARGV) myapp = StartQT4 .new myapp.show app. exec end
  38. Copy Source | Copy HTML require 'Qt4' require 'editor.rb' class StartQT4 < Qt::MainWindow slots 'file_dialog()' , 'file_save()' , 'enable_save()' def initialize parent= nil super @ui = Ui_Notepad.new @ui.setupUi self Qt:: Object .connect(@ui.b_open, SIGNAL( 'clicked()' ), self , SLOT( 'file_dialog()' )) Qt:: Object .connect(@ui.b_save, SIGNAL( 'clicked()' ), self , SLOT( 'file_save()' )) Qt:: Object .connect(@ui.editor_window, SIGNAL( 'textChanged()' ), self , SLOT( 'enable_save()' )) end def file_dialog f = Qt::FileDialog if @filename = f.getOpenFileName text = File . new (@filename).read @ui.editor_window.setText text # # "" textChanged() @ui.b_save.setEnabled false end end def enable_save @ui.b_save.setEnabled true end def file_save if @filename f = File .new @filename, 'w' f. puts @ui.editor_window.toPlainText f.close end end end if $ 0 == __FILE__ app = Qt::Application. new (ARGV) myapp = StartQT4 .new myapp.show app. exec end
  39. Copy Source | Copy HTML require 'Qt4' require 'editor.rb' class StartQT4 < Qt::MainWindow slots 'file_dialog()' , 'file_save()' , 'enable_save()' def initialize parent= nil super @ui = Ui_Notepad.new @ui.setupUi self Qt:: Object .connect(@ui.b_open, SIGNAL( 'clicked()' ), self , SLOT( 'file_dialog()' )) Qt:: Object .connect(@ui.b_save, SIGNAL( 'clicked()' ), self , SLOT( 'file_save()' )) Qt:: Object .connect(@ui.editor_window, SIGNAL( 'textChanged()' ), self , SLOT( 'enable_save()' )) end def file_dialog f = Qt::FileDialog if @filename = f.getOpenFileName text = File . new (@filename).read @ui.editor_window.setText text # # "" textChanged() @ui.b_save.setEnabled false end end def enable_save @ui.b_save.setEnabled true end def file_save if @filename f = File .new @filename, 'w' f. puts @ui.editor_window.toPlainText f.close end end end if $ 0 == __FILE__ app = Qt::Application. new (ARGV) myapp = StartQT4 .new myapp.show app. exec end


What has been added. We have added a slot that is called when the text changes in textEdit and activates the button:
Copy Source | Copy HTML
  1. Qt :: Object .connect (@ ui.editor_window, SIGNAL ( 'textChanged ()' ), self , SLOT ( 'enable_save ()' ))


Copy Source | Copy HTML
  1. def enable_save
  2. @ ui.b_save.setEnabled true
  3. end


In the file_dialog method, when we add text to the textEdit from the file, we deactivate the button:
Copy Source | Copy HTML
  1. @ ui.b_save.setEnabled false


Now when we open a file, the changes in the current open file are not saved. It is necessary to make a dialog box (message box) that will ask about changes - “save”, “do not save” or “cancel”. For these purposes we will use MessageBox.

The call to the message box is as follows.
Copy Source | Copy HTML
  1. message = Qt :: MessageBox.new
  2. message. exec


image

Need to configure this window. We will add buttons and some text. But how do we do it? We need to edit the file_dialog method and if changes have been made, show the message. How do we know if there have been changes? If the “save” button is active (@ ui.b_save.idEnabled), then we have unsaved changes. And so, we will make changes:

Copy Source | Copy HTML
  1. require 'Qt4'
  2. require 'editor.rb'
  3. class StartQT4 <Qt :: MainWindow
  4. slots 'file_dialog ()' , 'file_save ()' , 'enable_save ()'
  5. def initialize parent = nil
  6. super
  7. @ui = Ui_Notepad.new
  8. @ ui.setupUi self
  9. Qt :: Object .connect (@ ui.b_open, SIGNAL ( 'clicked ()' ), self , SLOT ( 'file_dialog ()' ))
  10. Qt :: Object .connect (@ ui.b_save, SIGNAL ( 'clicked ()' ), self , SLOT ( 'file_save ()' ))
  11. Qt :: Object .connect (@ ui.editor_window, SIGNAL ( 'textChanged ()' ), self , SLOT ( 'enable_save ()' ))
  12. end
  13. def file_dialog
  14. response = false
  15. # Button text:
  16. save = 'Save'
  17. discard = 'Do not save'
  18. cancel = 'Cancel'
  19. # If there were changes, call message_box
  20. if @ ui.b_save.isEnabled && @filename
  21. message = Qt :: MessageBox.new
  22. message.setText 'What should I do with unsaved changes?'
  23. message.setWindowTitle ( 'Notepad' )
  24. message.setIcon (Qt :: MessageBox.Question)
  25. message.addButton (save, Qt :: MessageBox.AcceptRole)
  26. message.addButton (discard, Qt :: MessageBox.DestructiveRole)
  27. message.addButton (cancel, Qt :: MessageBox.RejectRole)
  28. message.setDetailedText ( 'Unsaved file changes:' + @ filename.to_s)
  29. message. exec
  30. response = message.clickedButton.text
  31. # Save file
  32. if response == save
  33. file_save
  34. @ ui.b_save.setEnabled false
  35. end
  36. # Do not save
  37. if response == discard
  38. @ ui.b_save.setEnabled false
  39. end
  40. end
  41. # If we do not want to save changes
  42. unless response == cancel
  43. f = Qt :: FileDialog
  44. if @filename = f.getOpenFileName
  45. text = File . new (@filename) .read
  46. @ ui.editor_window.setText text
  47. @ ui.b_save.setEnabled false
  48. end
  49. end
  50. end
  51. def enable_save
  52. @ ui.b_save.setEnabled true
  53. end
  54. def file_save
  55. if @filename
  56. f = File .new @filename, 'w'
  57. f. puts @ ui.editor_window.toPlainText
  58. f.close
  59. end
  60. end
  61. end
  62. if $ 0 == __FILE__
  63. app = Qt :: Application. new (ARGV)
  64. myapp = StartQT4 .new
  65. myapp.show
  66. app. exec
  67. end


Changes made to lines 18-46

We create a new instance of the Qt :: MessageBox class, assign a message text (setText), a window title setWindowTitle, an icon (setIcon), set 3 buttons (“save”, “not save” and “cancel”). As the second argument, set the types of buttons (role). Information on these types can be found in the QT documentation. setDetailedText sets a detailed message output when you click on the "show details" button. Finally, we call the exec method. message.clickedButton - returns the pushButton type of the pressed button. We in the example just operate on the text of this button.
The dialog box looks like this:

image

Source code example can be downloaded at:
Previous example: narod.ru/disk/6746280000/ruby_qt_simple_editor_1.zip.html
Current example: narod.ru/disk/6746302000/ruby_qt_simple_editor_2.zip.html

Porting to the ruby ​​of the following example: www.rkblog.rk.edu.pl/w/p/extending-pyqt4-text-editor

Source: https://habr.com/ru/post/54787/


All Articles