SetClickable - Erro a reproduzir exemplo [RESOLVIDO]
-
Pessoal,
Estou tentando reproduzir este exemplo: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).