Difference between revisions of "Development/Languages/Perl"

Jump to: navigation, search
Line 1: Line 1:
Perl is a powerful and versatile high-level programming language. You can find out more about the language itself on the [http://www.perl.org/ Perl website].
+
Perl is a powerful and versatile high-level programming language. You can find out more about the language itself on the [http://www.perl.org/ Perl website].  
  
= Qt 3 =
+
= Qt 3 =
  
Complete object-oriented bindings for Qt 3, based on [[Development/Languages/Smoke|SMOKE]], are available on the [http://perlqt.sourceforge.net/ PerlQt project page]. Those bindings provide virtual functions overloading, custom slots and signals, and Rapid Application Development (RAD) through puic, a Qt Designer compatible user interface compiler.
+
Complete object-oriented bindings for Qt 3, based on [[Development/Languages/Smoke|SMOKE]], are available on the [http://perlqt.sourceforge.net/ PerlQt project page]. Those bindings provide virtual functions overloading, custom slots and signals, and Rapid Application Development (RAD) through puic, a Qt Designer compatible user interface compiler.  
  
= Qt 4 =
+
= Qt 4 =
  
== SMOKE based bindings ==
+
== SMOKE based bindings ==
  
The Qt 3 bindings have been ported to work with Qt 4, and is included with the kdebindings module for KDE SC 4.5. The rest of this document supplies information about these bindings.
+
The Qt 3 bindings have been ported to work with Qt 4, and is included with the kdebindings module for KDE SC 4.5. The rest of this document supplies information about these bindings.  
  
== Non-SMOKE bindings ==
+
== Non-SMOKE bindings ==
  
You can read more about [http://qt-apps.org/content/show.php/Perl+Qt4?content=69748 Perl bindings for Qt 4] and [http://klv.lg.ua/~vadim/perlqt4/ download Perl Qt4].
+
You can read more about [http://qt-apps.org/content/show.php/Perl+Qt4?content=69748 Perl bindings for Qt 4] and [http://klv.lg.ua/~vadim/perlqt4/ download Perl Qt4].  
  
= Hello PerlQt4 =
+
= Hello PerlQt4 =
  
<code perl>
+
<code perl="perl">
  
 
#!/usr/bin/perl
 
#!/usr/bin/perl
Line 30: Line 30:
 
$hello->show();
 
$hello->show();
 
exit $app->exec();
 
exit $app->exec();
 +
</code>
 +
 +
= API Overview  =
 +
 +
The PerlQt4 API mimics PerlQt3 very closely. So if you have written using PerlQt3, the transition should be very easy.
 +
 +
== Coverage  ==
 +
 +
PerlQt4 is modular, where one Perl module will load one Qt/KDE module. Modules currently exist for:
 +
 +
=== Qt  ===
 +
 +
*QtCore
 +
*QtGui
 +
*QtTest
 +
 +
=== KDE  ===
 +
 +
*KDECore
 +
*KDEUi
 +
*KIO
 +
*Plasma
 +
 +
== Available methods  ==
 +
 +
All Qt public and protected methods are supported, as well as friend methods.
 +
 +
== Virtual Methods  ==
 +
 +
All virtual methods can be overridden by Perl subroutines.
 +
 +
== Properties  ==
 +
 +
Some classes in Qt are implemented using publicly accessible properties, like the QStyleOption classes. To set properties, call a method called "set&lt;PropertyName&gt;", like <code perl="perl">
 +
$styleOption->setDirection();
 +
</code>
 +
 +
== Operator overloading  ==
 +
 +
The full range of Qt operator methods is available, for example: <code perl="perl">
 +
my $p1 = Qt::Point(5,5)  # (5, 5)
 +
my $p2 = Qt::Point(20,20) # (20, 20)
 +
$p1 + $p2                # (25, 25)
 
</code>
 
</code>
  
= API Overview =
+
== Subclassing ==
The PerlQt4 API mimics PerlQt3 very closely.  So if you have written using PerlQt3, the transition should be very easy.
+
  
== Coverage ==
+
To define a subclass, declare a package, and then use the "QtCore4::isa" module.  Pass the name of the class you're subclassing as an argument, similar to the syntax for "use base".
PerlQt4 is modular, where one Perl module will load one Qt/KDE module.  Modules currently exist for:
+
  
=== Qt ===
+
<code perl>
* QtCore
+
package MyWidget;
* QtGui
+
use QtCore4;
* QtTest
+
use QtCore4::isa qw( Qt::Widget );
 +
</code>
  
=== KDE ===
+
== Signals and Slots ==
* KDECore
+
* KDEUi
+
* KIO
+
* Plasma
+
  
== Available methods ==
+
Signals and slots are declared by use'ing the QtCore4::signals and QtCore4::slots modules.  The arguments is an array of string/arrayref pairs, where the items in the array define the types of arguments that signal/slot accepts.  In the background, it is building a C++ method signature.
All Qt public and protected methods are supported, as well as friend methods.
+
  
 
[[Category:Perl]]
 
[[Category:Perl]]

Revision as of 03:00, 19 June 2010

Perl is a powerful and versatile high-level programming language. You can find out more about the language itself on the Perl website.

Contents

Qt 3

Complete object-oriented bindings for Qt 3, based on SMOKE, are available on the PerlQt project page. Those bindings provide virtual functions overloading, custom slots and signals, and Rapid Application Development (RAD) through puic, a Qt Designer compatible user interface compiler.

Qt 4

SMOKE based bindings

The Qt 3 bindings have been ported to work with Qt 4, and is included with the kdebindings module for KDE SC 4.5. The rest of this document supplies information about these bindings.

Non-SMOKE bindings

You can read more about Perl bindings for Qt 4 and download Perl Qt4.

Hello PerlQt4

  1. !/usr/bin/perl

use strict; use warnings; use QtCore4; use QtGui4;

my $app = Qt::Application( \@ARGV ); my $hello = Qt::Label( 'Hello, World!' ); $hello->show(); exit $app->exec();

API Overview

The PerlQt4 API mimics PerlQt3 very closely. So if you have written using PerlQt3, the transition should be very easy.

Coverage

PerlQt4 is modular, where one Perl module will load one Qt/KDE module. Modules currently exist for:

Qt

  • QtCore
  • QtGui
  • QtTest

KDE

  • KDECore
  • KDEUi
  • KIO
  • Plasma

Available methods

All Qt public and protected methods are supported, as well as friend methods.

Virtual Methods

All virtual methods can be overridden by Perl subroutines.

Properties

Some classes in Qt are implemented using publicly accessible properties, like the QStyleOption classes. To set properties, call a method called "set<PropertyName>", like $styleOption->setDirection();

Operator overloading

The full range of Qt operator methods is available, for example: my $p1 = Qt::Point(5,5) # (5, 5) my $p2 = Qt::Point(20,20) # (20, 20) $p1 + $p2 # (25, 25)

Subclassing

To define a subclass, declare a package, and then use the "QtCore4::isa" module. Pass the name of the class you're subclassing as an argument, similar to the syntax for "use base".

package MyWidget; use QtCore4; use QtCore4::isa qw( Qt::Widget );

Signals and Slots

Signals and slots are declared by use'ing the QtCore4::signals and QtCore4::slots modules. The arguments is an array of string/arrayref pairs, where the items in the array define the types of arguments that signal/slot accepts. In the background, it is building a C++ method signature.


KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V.Legal