У меня есть 2 машины, на которых установлены разные версии Ubuntu (и, возможно, для самой GTK), и отображение кнопки работает на одной машине, но не на другой.
На одной машине все работает нормально, но на моей другой машине код срабатывает, но кнопка не появляется и ошибка не генерируется. Это код, который я использую для генерации кнопки:
static void addDeviceLabels(GtkWidget *widget, vector<device>* connectedDevices, inputData * data)
{
GtkWidget *deviceButton;
/* Create the string here (not shown) */
const gchar * gdevice = (gchar*)(str.c_str());
deviceButton = gtk_button_new_with_label(gdevice);
g_signal_connect(G_OBJECT(deviceButton), "button_press_event", G_CALLBACK(connectToDevice), (gpointer) &data);
gtk_box_pack_start(GTK_BOX(data->deviceLabelBox), deviceButton, FALSE, FALSE, 0);
gtk_widget_show(deviceButton);
}
Я изначально создаю структуру следующим образом:
struct inputData {
GtkWidget *ip;
GtkWidget *pr;
GtkWidget *deviceLabelBox;
};
struct inputData input;
Main затем звонит:
g_signal_connect(refreshButton, "clicked", G_CALLBACK(refreshList), &input);
и в refreshList:
static void refreshList(GtkWidget *widget, inputData * data)
{
/* .... */
addDeviceLabels(widget, connectedDevices, data);
}
Я надеюсь, что можно создать кнопку из сигнала, но она работает на одной машине.
Я не уверен, почему этот код работает на одной машине, а не на другой. Я уверен, что «addDeviceLabels» срабатывает, и моя строка идентична. Это может быть ошибка в GTK или мой код неверен?
Большое спасибо.