Qt Qtableview没有得到标题项目点击的信号

Posted

技术标签:

【中文标题】Qt Qtableview没有得到标题项目点击的信号【英文标题】:Qt Qtableview not getting signal for header item clicking 【发布时间】:2010-10-14 05:13:17 【问题描述】:

我正在使用 QtableviewQsqlTableModel 来填充表格数据。我想根据用户在列标题上的选择对列进行排序。

我尝试了QTableView sorting signal? 中提到的获取信号的方式(从QtableView 获取水平标题并连接信号sectionclicked(int logical index)。但是当我单击列标题时,没有发出相同的信号。

请找到连接完成的代码:

成员变量:

QHeaderView *m_horiz_header;

.cpp 文件

m_sqltablemodel->setTable(tabel_name);
m_sqltablemodel->setEditStrategy(QSqlTableModel::OnManualSubmit);
m_sqltablemodel->select();

m_horiz_header= m_table_view->horizontalHeader();
connect(m_horiz_header, SIGNAL(sectionClicked ( int logicalIndex ) ),
    this, SLOT(on_sectionClicked ( int logicalIndex ) ));

用于排序的槽函数:

void class::on_sectionClicked ( int logicalIndex ) 

    m_horiz_header->setSortIndicator(logicalIndex, Qt::AscendingOrder);
    m_table_view->sortByColumn(logicalIndex);

单击列标题时,不会调用此函数。

你能帮我怎么做吗,我哪里出错了?

【问题讨论】:

相关话题:***.com/questions/24714130/… 【参考方案1】:

我知道信号连接失败的原因了。

连接时不应提及参数名称。

connect(m_horiz_header, SIGNAL(sectionClicked(int)), this, SLOT(on_sectionClicked(int)));

通过像这样修改上面的代码,它起作用了。

【讨论】:

以上是关于Qt Qtableview没有得到标题项目点击的信号的主要内容,如果未能解决你的问题,请参考以下文章

Qt - 如何展开或折叠我的 QTableView

QT - 如何从 QTableView 中的单行获取值

QT中如何获取QTableView当前行的坐标

QT QTableView 获取检查项目

Qt QTableview 使用 QItemDelegate 生成的按钮显示不准确

Qt QtableView中如何得到任意一行的数据