762 Aufrufe
Gefragt in Skripte(PHP,ASP,Perl...) von
Hallo,

ich bin dabei ein Programm in PerlQt zu schreiben.
Es funktioniert auch soweit. Mein Problem ist jetz aber folgendes: Ich möchte die Funktion setGeometry bei meinen Widgets anwenden um 2 Buttons nebeneinander zu platzieren. Aber das funktioniert nicht. Es gibt keine Fehlermeldung, es wird einfach ignoriert.

Wenn ich eines der einfachen Beipele aus dem Internet nehme, dann klappt es.
Wahrscheinlich liegt das an meinem Programmaufbau:
Ich erzeuge ein eigenes Widget (myWidget) in dessen Konstruktor ich die grafische Oberfläche aufbaue (incl. der Buttons) und setze es als MainWidget. SetGeometry klappt wenn ich es auf dieses Widget beziehe. Wohl weil es das MAinWidget ist...

Aber es muss doch auch gehen, die Funktion bei andern Widgets anzuwenden. Ich hab Beispiele im Internet gesehen bei denen die Funktion da angewendet wurde. Also muss es ja irgendwie gehen...

Ich habe auch versucht durch ein eigenes Package für einen Button was zu ändern, aber dieser Button wird nie angezeigt. :'(

Liegt das alles rigendwie daran, dass ich aus einem Konstruktor einen anderen Konstruktor aufrufe? Oder daran, dass es verschiedene Packages sind? Ich bin total verwirrt.... Hab ich irgendwas vergessen? irgendein ->show oder so?

Das ist mein Progamm in gekürzter Fassung:

#!/usr/bin/perl -w
use strict;
use warnings;
#----------------------------------------------------------------------------
package myButton;
use Qt;
use Qt::isa qw(Qt::PushButton);

sub NEW
{
shift->SUPER::NEW(@_[0..2]);
resize (150, 50);
}
1;
#-------------------------------------------------------------------------------
package MyWidget;
use Qt;
use Qt::isa qw(Qt::VBox);
use myButton;
use Qt::slots 'subVerschl' =>[];

sub NEW {
shift->SUPER::NEW(@_);

#Erzeugen der GUI
my $lblText = Qt::Label("\nBitte den Text eingeben: ", this);
our $widgetText = Qt::MultiLineEdit(this);
my $stringDefaultText = "Text";
$widgetText->setText($stringDefaultText);

# noch ein paar andere dinge...

#Hier die Buttons sollen nebeneinander
#Verschluesseln-Button --> als normaler PushButton, funktioniert
my $btnVerschl = Qt::PushButton("Verschluesseln", this);
$btnVerschl->setFont(Qt::Font("Times", 10, &Qt::Font::Bold));
$btnVerschl->setGeometry(0,0,150,50);
this->connect($btnVerschl, SIGNAL('clicked()'), this, SLOT('subVerschl()'));

#Entschluesseln-Button --> als myButton --> nicht angezeigt!!
my $btnEntschl = myButton("Entschluesseln", this);
$btnEntschl->setFont(Qt::Font("Times", 10, &Qt::Font::Bold));
this->connect($btnEntschl, SIGNAL('clicked()'), this, SLOT('subEntschl()'));

# noch ein paar andere dinge...
}
1;

sub subVerschl{
#irgendwas...
}#Ende Verschluesselungsfunktion
1;
sub subEntschl{
#irgendwas...
}#Ende Entschluesselungsfunktion
1;
#-------------------------------------------------------------------------------------

package main;
use MyWidget;

my $app = Qt::Application(\@ARGV);
my $w = MyWidget;
$app->setMainWidget($w);
$w->setGeometry(0,0,400,400);
$w->show;
exit $app->exec;

Ich hoffe ich habe euch nicht auch total verwirrt...
Ich bin für jeden Hinweis dankbar.
viele Grüße und vielen Dank im Voraus
Susi

Deine Antwort

Dein angezeigter Name (optional):
Datenschutz: Deine Email-Adresse benutzen wir ausschließlich, um dir Benachrichtigungen zu schicken. Es gilt unsere Datenschutzerklärung.
Anti-Spam-Captcha:
Bitte logge dich ein oder melde dich neu an, um das Anti-Spam-Captcha zu vermeiden.
...