Как использовать Qt GUI (созданный с помощью Qt Designer) в Perl? - PullRequest
4 голосов
/ 27 ноября 2011

Я создал графический интерфейс Qt в Qt Designer и скомпилировал его (используя puic4) в gui.pm.Теперь я хотел бы использовать его в своем приложении Perl, но я застрял, потому что я не знаю, как создать объект окна.

У меня есть следующий код в start.pl:

use strict;
use QtCore4;
use QtGui4;
use gui; #compiled gui ('Ui_MainWindow' package)

my $a = Qt::Application(\@ARGV);
my $w = ??? #assign window object to $w

$w->show();
exit $a->exec();

Мне просто нужно создать объект окна, но я не могу найти ни одного примера, написанного на Perl.Кто-нибудь может мне помочь?

Ответы [ 2 ]

2 голосов
/ 27 августа 2015

В исходном хранилище я нашел следующее решение:

BUILD_DIR/Qt4-0.99.0/qtgui/examples/designer/calculatorform
  1. Создайте свой Ui-модуль
 > puic4 Window.ui -o Ui_MainWindow.pm
#################################################################################
## Form generated from reading UI file 'Window.ui'
##
## Created: Do. Aug 27 20:57:17 2015
##      by: Qt User Interface Compiler version 4.8.2
##
## WARNING! All changes made in this file will be lost when recompiling UI file!
################################################################################

package Ui_MainWindow;

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

sub centralwidget {  return shift->{centralwidget}; }
sub pushButton {  return shift->{pushButton}; }
sub pushButton_2 { return shift->{pushButton_2}; }
sub menubar { return shift->{menubar}; }
sub statusbar { return shift->{statusbar}; }

sub setupUi {
   my ( $class, $mainWindow ) = @_;
   my $self = bless {}, $class;
   if ( !defined $mainWindow->objectName() ) {
       $mainWindow->setObjectName( "mainWindow" );
....
  1. Создать модуль запуска MainWidow.pm. Вы должны "привести" UI-класс.
package MainWindow;
use strict;
use warnings;
use QtGui4;
# Cast the exact Qt Type for your UI class
use QtCore4::isa qw( Qt::MainWindow );

use Ui_MainWindow;

sub NEW {
  my ( $class, $parent ) = @_;
  $class->SUPER::NEW($parent);
  this->{ui} = Ui_MainWindow->setupUi(this);
}
  1. Написать приложение Perl-скрипт Main.pl:
#!/usr/bin/perl

use strict;
use warnings;

use QtCore4;
use QtGui4;
use MainWindow;

sub main {
   my $app = Qt::Application( \@ARGV );
   my $win = MainWindow();
   $win->show();
  exit $app->exec();
}

main();

привет хака

2 голосов
/ 27 ноября 2011

Представьте, что я не знаю о QTDesigner. Какой пример из http://search.cpan.org/dist/Qt/MANIFEST вы бы использовали?Я думаю, вы выбираете один из примеров .ui, запускаете make-файл (или вручную), и тогда у вас есть модуль, который вы можете вызвать (т.е. my $w = my $chat = ChatMainWindow();).

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