无法理解和处理QHeaderView信号

时间:2011-06-08 13:44:44

标签: qt qheaderview

我目前正在开发一个基本的QTGui表,用于各种应用程序。我想要的一个功能是能够双击列的标题并调用排序函数。我一直在浏览文档和各种在线帖子,但我还没有完全掌握整体想法。我知道我需要将一个doubleClicked信号连接到我的handleDoubleClick插槽,但它并没有真正起作用。

许多示例都指的是创建自己的自定义类以及如何为该类设置信号,但是当QHeaderView已经内置了信号时,我是否需要这样做?有没有办法将内置信号连接到我的插槽?

这基本上就是我所拥有的。

QHeaderView *headerView = mainTable->horizontalHeader();
headerView->setMovable(true);
headerView->setClickable(true);

QObject::connect(headerView, SIGNAL(sectionDoubleClicked()), headerView, SLOT(sortByHeader()));

void sortByHeader()
{
    cout << "Double clicked";
}

解决: Abhijith的方法有效,但事实证明我还需要传递参数类型。所以这是一个语法错误。

所以它就是这样的

Class1* myclass = new Class1();
QObject::connect(headerView, SIGNAL(sectionDoubleClicked(int)), myclass, SLOT(sortByHeader(int)));

1 个答案:

答案 0 :(得分:0)

QObject::connect(headerView, SIGNAL(sectionDoubleClicked()), headerView, SLOT(sortByHeader()));

您要求connect方法将doubleclickedsignal连接到属于QHeaderview类的名为sortByHeader的插槽。因此它没有打电话给你的插槽。如果您在自己的类sortByHeader()中定义了Class1个插槽,那么您应该这样做,

Class1* myclass = new Class1();
QObject::connect(headerView, SIGNAL(sectionDoubleClicked()), myclass, SLOT(sortByHeader()));