GTK3如何将一个信号连接到多个窗口小部件
GTK 3 How to connect one signal to multiple widgets?
我需要创建一个表单,该表单的模型由下面的代码创建,由一个包含两个文本条目和一个按钮的窗口组成。
我需要在条目中放入一些文本,当按下按钮时,将两个条目中获得的文本放在一个数组中,(或同时打印它们,或同时使用两者执行任何操作)
用于创建窗口的代码如下:
#include <iostream>
#include <gtk/gtk.h>
using namespace std;
GtkWidget *wventana;
GtkWidget *wgrid;
void ventana(string titulo, int margen)
{
const char * tituloc = titulo.c_str();
wventana = gtk_window_new (GTK_WINDOW_TOPLEVEL);
}
void grid()
{
wgrid = gtk_grid_new();
gtk_container_add(GTK_CONTAINER(wventana), wgrid);
}
void boton(string texto, int x, int y, int lx, int ly)
{
const char * wtexto = texto.c_str();
GtkWidget *wboton;
wboton = gtk_button_new_with_label (wtexto);
gtk_grid_attach (GTK_GRID (wgrid), wboton, x, y, lx, ly);
}
void entrada(int x, int y, int lx, int ly)
{
GtkWidget *wentrada;
wentrada = gtk_entry_new();
gtk_grid_attach (GTK_GRID (wgrid), wentrada, x, y, lx, ly);
}
//INICIO
int main(int argc, char *argv[])
{
gtk_init (&argc, &argv);
ventana("ventana",10);
grid();
entrada(2, 1, 1, 1);
entrada(2, 2, 1, 1);
boton("Procesar", 2, 3, 1, 1);
gtk_widget_show_all (wventana);
gtk_main ();
return 0;
}
请有人澄清如何做到这一点(不需要使用提供的代码,仅用于所需结果的参考)
最好的方法是创建一个作为user_data
传递给信号处理程序的结构:
typedef struct {
GtkWidget *entrada1, *entrada2;
} Widgets;
...
// in main():
Widgets *w = g_slice_new0 (Widgets);
w->entrada1 = entrada (2, 1, 1, 1); // remember to return the widget from entrada()!
w->entrada2 = entrada (2, 2, 1, 1);
GtkWidget *procesar = boton ("Procesar", 2, 3, 1, 1);
g_signal_connect(procesar, "clicked", G_CALLBACK (on_procesar), w);
// ...
gtk_main ();
g_slice_free (Widgets, w);
...
void
on_procesar (GtkButton *procesar, Widgets *w)
{
// do something with w->entrada1 and w->entrada2
}
相关文章:
- 如何在Qt窗口小部件中使用QStringView(或QStringRef)
- 问:如何使用C++中的按钮从窗口打开窗口
- 当套接字连接断开时检测C/C++Unix
- 如何在Qt中连接来自不同窗口的两个对象?
- 在两个窗口中连接到相同的信号
- 在QT中的两个窗口之间共享websocket连接
- 连接 -> 窗口上没有这样的插槽
- 如何将信号从主窗口连接到对话框中的插槽
- 将工作线程信号与主窗口插槽 (Qt5) 连接时出错
- 窗口处于全屏模式时,QT连接不起作用
- 无法在C++中使用窗口的蓝牙 API 连接到蓝牙设备
- SDL视频显示窗口:如何连接窗口关闭事件回调
- OpenGL帧率:与窗口大小的连接
- QtQuick2 无法将应用程序窗口关闭信号连接到方法(C++新手)
- Qt5 将自定义窗口关闭信号连接到其他窗口
- 以编程方式在窗口中获取活动连接
- 渲染和窗口系统的独立性,通过窗口句柄进行连接
- GTK3如何将一个信号连接到多个窗口小部件
- 拦截/重定向窗口上的传出http连接
- QT 5 connect()函数连接textEditor和主窗口