В моей программе есть QTableWidget, который я использую для отображения результатов, и я пытаюсь определить, когда пользователь нажимает один из вертикальных заголовков.Для этого я пытаюсь подключить сигнал sectionDoubleClicked (int) к моей функции hheaderclicked (int).Когда я пытаюсь скомпилировать код, я получаю ошибку времени компиляции из-за отсутствия соответствующей функции.Я основываю свой код с поста здесь
Ошибка компиляции:
mainwindow.cpp:138: error: no matching function for call to âMainWindow::connect(QHeaderView*, const char [27], MainWindow* const, const char [21])â
/usr/lib64/qt4/include/QtCore/qobject.h:181: note: candidates are: static bool QObject::connect(const QObject*, const char*, const QObject*, const char*, Qt::ConnectionType)
/usr/lib64/qt4/include/QtCore/qobject.h:282: note: bool QObject::connect(const QObject*, const char*, const char*, Qt::ConnectionType) const
Мой код:
QObject::connect(ui->table_results->horizontalHeader(),SIGNAL(sectionDoubleClicked(int)),
this,SLOT(hheaderclicked(int)));
Редактировать: я смогчтобы заставить мой код работать, сделав следующее:
QObject::connect((QObject*)ui->table_results->verticalHeader(),SIGNAL(sectionClicked(int)),this,SLOT(hheaderclicked(int)));
Может кто-нибудь объяснить, почему мне пришлось привести QHeaderView * к QObject *, чтобы заставить это работать, мне не нужно приводить ни одного из моихдругие вызовы QObject :: connect работают нормально.Например, это нормально работает:
QObject::connect(ui->button_start,SIGNAL(clicked()),this,SLOT(scanstart()));
, потому что этот подключается к известному объекту во время компиляции, в то время как другой подключается к объекту, который не будет известен до выполнения?