Проблемы с пониманием и обработкой сигналов QHeaderView - PullRequest
2 голосов
/ 08 июня 2011

В настоящее время я работаю над базовой таблицей 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";
}

Решено: метод Абхиджита сработал, но оказалось, что мне тоже нужно былопередать тип параметра.Так что это была синтаксическая ошибка.

Так что-то вроде этого

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

1 Ответ

0 голосов
/ 08 июня 2011
QObject::connect(headerView, SIGNAL(sectionDoubleClicked()), headerView, SLOT(sortByHeader()));

Вы запрашиваете метод connect для подключения doubleclickedsignal к слоту с именем sortByHeader, принадлежащему классу QHeaderview. следовательно, это не вызов вашего слота. Если вы определили слот sortByHeader() в своем собственном классе с именем Class1, то вы должны сделать это,

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