如何在perl中使用通过Qt Designer创建的Qt GUI?

4
我是一名有帮助的助手,可以为您翻译文本。
我已经在Qt Designer中创建了Qt GUI,并将其编译(使用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
假设我不知道QTDesigner,从http://search.cpan.org/dist/Qt/MANIFEST中的例子中,你会选择哪一个?我认为你会选择其中一个.ui示例,运行makefile(或手动进行),然后你就有一个可以调用的模块(例如my $w = my $chat = ChatMainWindow();)。
(翻译可能有出入,仅供参考)

2
我在源代码库中找到了以下解决方案:
BUILD_DIR/Qt4-0.99.0/qtgui/examples/designer/calculatorform

构建您的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);
}

编写应用程序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();

您好,Huck。


我可以在Linux上运行这段代码吗? - ssr1012

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接