Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. Portuguese
  4. TableWidget - argumentos das funcoes perdem o valor.
Forum Updated to NodeBB v4.3 + New Features

TableWidget - argumentos das funcoes perdem o valor.

Scheduled Pinned Locked Moved Portuguese
2 Posts 2 Posters 1.4k Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • B Offline
    B Offline
    Brochadinho
    wrote on last edited by
    #1

    Boas

    Tenho uma promoted tableWidget, que tou a utilizar para insercao de dados. E esta a contecer algo mt estranho. No metodo keypressEvent, tenho uma chamada para o closeEditor, com um valor de hint=EditNextItem, mas quando chega no closeEditor diz que a hint e´ submitmodel =S Tive de aldrabar o closeEditor, e usa-lo recursivamente, usando uma chamada igual e assim ja funciona.

    Mas mais e na funcao nextEditableItem, em que passo um index. Desse index retiro info sobre o numero de colunas, e col e row ativas no momento, mas segundo o debugger, o index e´ invalido! e por isso nao funciona como devia.

    Alguem me sabe explicar o que se esta a passar?

    @QModelIndex GrelhaFactura::nextEditableItem(QModelIndex originalIndex){
    int numCol=originalIndex.model()->columnCount();
    int col=originalIndex.column();
    int row=originalIndex.row();
    col++;
    for (int i = col; i < numCol; i++) {
    if(originalIndex.model()->index(row,i).flags() && Qt::ItemIsEditable)
    {
    return originalIndex.model()->index(row,i);
    }
    // //this->insertRow(row+1);6
    // return this->model()->index(row+1,0);
    }
    QModelIndex *a=new QModelIndex();// isto apenas serve para simular devolver NULL
    return *a;
    }@

    @void GrelhaFactura::keyPressEvent(QKeyEvent *event){
    //apanhar as teclas carregadas: Tab e Return(Enter)

    if(event->key()==Qt::Key_Return && this->state()!= QAbstractItemView::EditingState)
    {
        QModelIndexList selectedRows = this->selectionModel()->selectedRows();//indexes dos itens da linha selecionada
        if(!selectedRows.isEmpty()){
            QModelIndex selectedIndex=selectedRows[0];
            //QModelIndex editableIndex= this->firstEditableItem(selectedIndex);
            this->setCurrentIndex(selectedIndex.model()->index(0,0));
            this->edit(selectedIndex.model()->index(0,0));
        }
        else{
            QTableWidget::keyPressEvent(event);
        }
    }else if(event->key()==Qt::Key_Return){
        closeEditor(this, QAbstractItemDelegate::EditNextItem);
    }
    

    }@

    @void GrelhaFactura::closeEditor(QWidget *editor, QAbstractItemDelegate::EndEditHint hint)
    {
    if(hint==QAbstractItemDelegate::NoHint){//nenhuma sugestao, chama funcao por defeito
    QTableWidget::closeEditor(editor,QAbstractItemDelegate::SubmitModelCache);
    //QAbstractItemDelegate::SubmitModelCache;
    }
    if(hint==QAbstractItemDelegate::EditNextItem || hint==QAbstractItemDelegate::EditPreviousItem){
    QModelIndex editableIndex;
    if(hint==QAbstractItemDelegate::EditNextItem){//sugestão do proximo
    editableIndex = nextEditableItem(this->currentIndex());
    }else if (hint==QAbstractItemDelegate::EditPreviousItem){//sugestao do anterior
    editableIndex = previousEditableItem(this->currentIndex());
    }
    if(!editableIndex.isValid()){
    QTableWidget::closeEditor(editor,QAbstractItemDelegate::SubmitModelCache);// esta funcao so existe pk por algum motivo, quando e´chamada apartir do keypressEvent altera o valor do hint. Fazendo esta recursividade o Enter ja se comporta como um TAB.
    }else{
    QTableWidget::closeEditor(editor,QAbstractItemDelegate::NoHint);
    this->setCurrentIndex(editableIndex);
    this->edit(editableIndex);
    }
    }
    if(hint==QAbstractItemDelegate::SubmitModelCache){ // Isto aqui so existe para apanhar o hint que leva o valor modificado
    this->closeEditor(editor,QAbstractItemDelegate::EditNextItem);
    }

    else{
        QTableWidget::closeEditor(editor, hint);
    }
    

    }@

    1 Reply Last reply
    0
    • R Offline
      R Offline
      Rodrigocg
      wrote on last edited by
      #2

      resolveu o problema?

      1 Reply Last reply
      0

      • Login

      • Login or register to search.
      • First post
        Last post
      0
      • Categories
      • Recent
      • Tags
      • Popular
      • Users
      • Groups
      • Search
      • Get Qt Extensions
      • Unsolved