GTK显示小部件
GTK showing widget
我正在写一个小棋盘游戏,它必须在点击按钮后在按钮上添加并显示图像,然后调用其他一些函数在其他按钮上显示图像,但程序并没有像我想象的那样运行,直到所有这些函数都完成了,小部件才显示出来。这里是调试:
Breakpoint 1, GameControl::button_clicked (widget=0x80dad08, data=0x80563e0) at interface.cc:582
582 image = gtk_image_new_from_file ("arrow.bmp");
(gdb) step
583 gtk_container_add (GTK_CONTAINER (widget), image);
(gdb) step
584 gtk_widget_show (image);
(gdb) step
585 computer_move (widget, &control);
(gdb) step
GameControl::computer_move (widget=0x80dad08, data=0x80563e0) at interface.cc:520
520 computer_moving = true;
(gdb) break interface.cc:586
Breakpoint 2 at 0x804cdab: file interface.cc, line 586.
(gdb) continue
Continuing.
Breakpoint 2, GameControl::button_clicked (widget=0x80dad08, data=0x80563e0) at interface.cc:586
586 break;
(gdb) step
593 end_dialog ();
(gdb) next
595 }
(gdb) step
0xb7b1c243 in g_cclosure_marshal_VOID__VOIDv () from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0
(gdb) step
Single stepping until exit from function g_cclosure_marshal_VOID__VOIDv,which has no line number information.
0xb7b33a29 in g_signal_emit_valist () from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0
(gdb) next
Single stepping until exit from function g_signal_emit_valist,
which has no line number information.
0xb7b34453 in g_signal_emit () from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0
(gdb) continue
Continuing.
[Thread 0xb6b86b40 (LWP 7820) exited]
[Thread 0xb61ffb40 (LWP 7821) exited]
[Inferior 1 (process 7817) exited normally]
在执行最后一个continue命令之前,小部件显示,因为不知何故,当它转到"gtk_widget_show()"时,小部件没有显示,有什么建议吗?
GTK+与大多数GUI工具包一样,是事件驱动的。
您应该从回调返回,这样主事件循环(gtk_main()
)就可以处理下一个事件,否则整个程序就会冻结。
如果您想在回调进行到一半时处理一些事件,请显式执行。直接从文档:
/* computation going on */
while (gtk_events_pending ())
gtk_main_iteration ();
/* computation continued */
相关文章:
- 比较并显示使用最小值(a,b)和最大值(a、b)升序排列的4个数字
- 由于PC显示设置的更改,Qt小部件被部分剪裁
- Gtkmm 窗口为空白,不显示任何小部件或标题
- 显示文件中具有最小给定元音数的单词
- 在QT C++编辑Qtable模型数据时,我需要得到一个小盒子,我需要显示编辑文本,这怎么可能?
- 如何隐藏最大化和最小化按钮并在qml应用程序窗口中显示关闭按钮?
- 稍后初始化的小部件将不会显示在主窗口中
- 如何显示最小跨度树矩阵
- 一个人如何将QT(C )UI分为多个小部件子类,并使其显示与同一类中的所有窗口
- 在Qt小部件应用程序中显示cmd终端
- 应用程序最小化时单击显示桌面/最小化全部
- 尽可能大地显示所有小部件
- 无法获得固定的设置精度双精度以显示小数位
- 显示六个整数中的最小偶数和奇数,而不使用循环和数组
- 如何在显示时调整 QPlainTextEdit 小部件的大小
- QDial 设置范围从 0.00 到 10.00 到小部件显示
- 为什么在将小部件设置为中央时不显示场景
- C++ 创建小部件数组
- 使小部件显示毫秒时出现问题
- 矢量的最小值显示为 0