关于gtk和qt的疑惑,希望朋友们帮忙解答一下
代码:
#!/bin/env perl
use strict;
use warnings;
use threads;
use Gtk2;
use Glib qw(TRUE FALSE);
$|++;
my $str = 'test';
Gtk2::Gdk::Threads->init();
Gtk2->init();
my $window= Gtk2::Window->new("toplevel");
$window->signal_connect(delete_event => sub { Gtk2->main_quit(); });
$window->set_border_width(10);
my $button = Gtk2::Button->new_with_label("Hello World");
$button->signal_connect(clicked => \&new_thread);
$window->add($button);
$window->show_all();
Gtk2::Gdk::Threads->enter();
Gtk2->main();
Gtk2::Gdk::Threads->leave();
##############################################
sub hello()
{
print "sad:$str\n";
}
sub new_thread()
{
hello();
my $t = threads->create(\&test);
$t->detach();
}
sub test()
{
# Gtk2::Gdk::Threads->enter();
print "weigun\n";
# Gtk2::Gdk::Threads->leave();
}
use strict;
use warnings;
use threads;
use Gtk2;
use Glib qw(TRUE FALSE);
$|++;
my $str = 'test';
Gtk2::Gdk::Threads->init();
Gtk2->init();
my $window= Gtk2::Window->new("toplevel");
$window->signal_connect(delete_event => sub { Gtk2->main_quit(); });
$window->set_border_width(10);
my $button = Gtk2::Button->new_with_label("Hello World");
$button->signal_connect(clicked => \&new_thread);
$window->add($button);
$window->show_all();
Gtk2::Gdk::Threads->enter();
Gtk2->main();
Gtk2::Gdk::Threads->leave();
##############################################
sub hello()
{
print "sad:$str\n";
}
sub new_thread()
{
hello();
my $t = threads->create(\&test);
$t->detach();
}
sub test()
{
# Gtk2::Gdk::Threads->enter();
print "weigun\n";
# Gtk2::Gdk::Threads->leave();
}
下面这两句,无论注释与否都不行····
# Gtk2::Gdk::Threads->enter();
# Gtk2::Gdk::Threads->leave();
那个按钮按了第二次就出错了···一大堆错误·····程序的输出信息如下:
sad:test
weigun
sad:test
weigun
GLib-GObject-CRITICAL **: g_object_unref: assertion `G_IS_OBJECT (object)' failed at D:\test-area\gtk_test\gtk_threads.pl line 23.
GLib-GObject-WARNING **: instance of invalid non-instantiatable type `<invalid>' at D:\test-area\gtk_test\gtk_threads.pl line 23.
GLib-GObject-CRITICAL **: g_signal_emit_valist: assertion `G_TYPE_CHECK_INSTANCE (instance)' failed at D:\test-area\gtk_test\gtk_threads.pl line 23.
GLib-GObject-WARNING **: instance of invalid non-instantiatable type `<invalid>' at D:\test-area\gtk_test\gtk_threads.pl line 23.
GLib-GObject-CRITICAL **: g_signal_handlers_destroy: assertion `G_TYPE_CHECK_INSTANCE (instance)' failed at D:\test-area\gtk_test\gtk_threads.pl line 23.
GLib-GObject-WARNING **: instance of invalid non-instantiatable type `<invalid>' at D:\test-area\gtk_test\gtk_threads.pl line 23.
GLib-GObject-CRITICAL **: g_signal_handlers_destroy: assertion `G_TYPE_CHECK_INSTANCE (instance)' failed at D:\test-area\gtk_test\gtk_threads.pl line 23.
Usage: Glib::Object:ESTROY(sv) at D:\test-area\gtk_test\gtk_threads.pl line 23.
GLib-GObject-CRITICAL **: g_object_unref: assertion `G_IS_OBJECT (object)' failed at D:\test-area\gtk_test\gtk_threads.pl line 23.
GLib-GObject-WARNING **: instance with invalid (NULL) class pointer at D:\test-area\gtk_test\gtk_threads.pl line 23.
GLib-GObject-CRITICAL **: g_signal_handlers_destroy: assertion `G_TYPE_CHECK_INSTANCE (instance)' failed at D:\test-area\gtk_test\gtk_threads.pl line 23.
GLib-GObject-WARNING **: instance with invalid (NULL) class pointer at D:\test-area\gtk_test\gtk_threads.pl line 23.
GLib-GObject-CRITICAL **: g_signal_handlers_destroy: assertion `G_TYPE_CHECK_INSTANCE (instance)' failed at D:\test-area\gtk_test\gtk_threads.pl line 23.
============================================
一头雾水···所以··求高手解释····谢谢··
作者: wfnh 发布时间: 2010-07-30
定一个·
作者: wfnh 发布时间: 2010-07-30
闻到死底下的?
谁知道可靠不可靠阿?
Gtk的貌似都会产生很多Warning
谁知道可靠不可靠阿?
Gtk的貌似都会产生很多Warning
作者: tusooa 发布时间: 2010-08-05