void CDialogColumns::onColumnDownClicked(void){ Glib::RefPtr<Gtk::TreeSelection> l_selection; Gtk::TreeModel::iterator l_iter, l_dest; Gtk::TreeViewColumn* l_column; std::list<Gtk::TreeViewColumn*> l_columns; std::list<Gtk::TreeViewColumn*>::iterator l_columns_iter; assert(m_tree); l_selection = m_treeview_columns.get_selection(); l_iter = l_selection->get_selected(); l_column = (*l_iter)[m_columns.m_column]; l_columns = m_tree->get_columns(); // Buscamos la columna siguiente en el treeview editado for(l_columns_iter = l_columns.begin(); l_columns_iter != l_columns.end(); l_columns_iter++){ if((*l_columns_iter) == l_column){ l_columns_iter++; break; } } // Intercambiamos las columnas en el treeview editado m_tree->move_column_after(*l_column, *(*l_columns_iter)); // Intercambiamos las filas en el listado de columnas l_dest = l_selection->get_selected(); l_dest++; m_columns_list->move(l_dest, l_iter); // Generamos un cambio de fila falso para que se actualicen los controles onColumnChanged(); }
void InterceptWidget::updateColumns() { QStringList columnList = model->getColumnNames(); QStandardItemModel *columnModel = new(std::nothrow) QStandardItemModel(columnList.size(), 1); if (columnModel == NULL ) { qFatal("Cannot allocate memory for QStandardItemModel X{"); return; } for (int i = 0; i < columnList.size(); ++i) { QStandardItem* item = NULL; item = new(std::nothrow) QStandardItem(columnList.at(i)); if (item != NULL) { item->setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsEnabled); item->setData( (packetsTable->isColumnHidden(i) ? Qt::Unchecked : Qt::Checked), Qt::CheckStateRole); columnModel->setItem(i, 0, item); } else { qFatal("Cannot allocate memory for QStandardItem 2 X{"); } } connect(columnModel, SIGNAL(dataChanged(QModelIndex,QModelIndex)), SLOT(onColumnChanged(QModelIndex,QModelIndex))); ui->columnListWidget->setModel(columnModel); }