有一个button "clicked" 的信号 我想让按钮点击后窗口消失 同时执行其他的事情
我把gtk_widget_hide(window)和“其他事情”都放在同一个callbacks函数中
但每次窗口总是等到“其他事情”执行完 或者说 callbacks函数返回后 才消失
何解?
这类问题,单凭你说的,没感觉到问题所在.
你可以直接调试看看什么原因.
的一部分程序是Glade自动生成的,所以有些乱。。。
int main()
{
...............
GtkWidget *window1;
window1 = create_window1 ();
gtk_widget_show (window1);
gtk_main ();
}
GtkWidget* create_window1 (void)
{
.......
g_signal_connect ((gpointer) button1, "clicked",
G_CALLBACK (on_button1_clicked),
NULL);
}
GtkWidget* create_window2 (void)
{
...........
}
void on_button1_clicked (GtkButton *button ,gpointer user_data)
{
GtkWidget *window1;
gtk_widget_hide(window1);
my_connect( XX ,XX); //这是我自己的函数 里面含有printf语句
GtkWidget *window2;
window2=create_window2();
gtk_widget_show(window2);
}
现在的情况就是 我点击按钮 window1并没有立刻消失 而是等到printf输出后才消失
window1我定义成全局变量也没有用
有没有办法使我一点击按钮 window1就消失 my_connect()函数继续执行
还有一种方法我试了也不行
大概就是
int main()
{
...............
GtkWidget *window1;
window1 = create_window1 ();
gtk_widget_show (window1);
gtk_main ();
}
GtkWidget* create_window1 (void)
{
.......
g_signal_connect ((gpointer) button1, "clicked",
G_CALLBACK (on_button1_clicked),
NULL);
g_signal_connect ((gpointer) window1, "hide",
G_CALLBACK (window1_hide),