#qt #qheaderview
#qt #qheaderview
Вопрос:
В настоящее время я работаю над базовой таблицей QtGui, которая будет использоваться для различных приложений. Одна из функций, которую я хочу, — это иметь возможность дважды щелкнуть по заголовку столбца и вызвать функцию сортировки. Я просматривал документацию и различные публикации в Интернете, но я не совсем уловил общую идею. Я понимаю, что мне нужно подключить сигнал с двойным выделением к моему слоту 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:
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()));
Комментарии:
1. Ах. Оказывается, мне также нужно было передать тип параметра QObject::connect(headerView, SIGNAL(sectionDoubleClicked(int)), myclass, SLOT(sortByHeader(int)));
2. На самом деле ключ в том, чтобы скопировать и вставить его из ссылки 🙂