SetClickable - Erro a reproduzir exemplo [RESOLVIDO]



  • Pessoal,
    Estou tentando reproduzir este exemplo:

    http://www.codeprogress.com/cpp/libraries/qt/showQtExample.php?index=140&key=QTableWidgetDetectHeaderClick

    Só que sempre retorno este erro:

    @/home/will/Qt - Projetos/Telas/Variaveis.h:15: error: 'setClickable' was not declared in this scope@

    Atualmente o código está assim:

    @#ifndef VARIAVEIS_H
    #define VARIAVEIS_H

    #include <QMessageBox>
    #include <QHeaderView>
    #include <iostream>
    #include <QtGui>

    class myHeaderView : public QHeaderView
    {
    Q_OBJECT
    public:
    myHeaderView():QHeaderView(Qt::Horizontal)
    {
    setClickable(true);
    connect(this,SIGNAL(sectionClicked(int)),this,SLOT(sectionClicked(int)));
    }
    ~myHeaderView(){}

    public slots:
    void sectionClicked(int index)
    {
    QMessageBox::about(this,"Hi! Header Click Detected!","Index:"+QString::number(index));
    }

    };

    #endif // VARIAVEIS_H@



  • A versão do código era para o Qt 4.7.4.

    Se estiver compilando com o Qt 5, troque a chamada do setClickable para setSectionsClickable (http://qt-project.org/doc/qt-5.0/qtwidgets/qheaderview-compat.html#setClickable). Deve resolver.



  • TioRoy,

    Sabia que era uma versão mais antiga do Qt, dureza que o comando que você passou está sendo reconhecido pelo Qt, mas não está funcionando mesmo clicando na linha da tabela não está mostrando o MensagemBox.

    Alguma sugestão de como fazer isso funcionar no Qt 5.1?
    E obrigado pela ajuda!



  • TioRoy,

    Consegui cara depois de fuçar em uns foruns gringos achei como pegar o id da linha como queria, mas gostaria sem abuçar de você como fazer esse exemplo funcionar no Qt5.

    Usei o seguinte código para pegar o id:

    @QItemSelectionModel* selectionModel = ui->tableWidget->selectionModel();

    QModelIndexList selected = selectionModel->selectedRows();

    for(int i= 0; i< selected.count();i++)
    {
    QModelIndex index = selected.at(i);
    qDebug() << index.row();

    }@



  • Você já tentou usar o método "visualRow":http://qt-project.org/doc/qt-5.0/qtwidgets/qtablewidget.html#visualRow?

    @
    public slots:
    void sectionClicked(int index)
    {
    QMessageBox::about(this,"Hi! Header Click Detected!","Index:"+QString::number(ui->tableWidget-visualRow(index)));
    }

    @

    O sectionClicked vai disparar se foi clicado no QHeaderView (coluna ou linha).

    O código que você postou é legal para você saber as linhas que estão selecionadas (selectedRows).


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.