我试图封装表视图行为,并开始将表视图头信号连接到子类中定义的表视图槽.我可以在不进行子类化的情况下获得我正在寻找的行为,但这会破坏目的.当我尝试子类时,我得到了可怕的"没有匹配函数调用连接.所有组件最终都是QObjects,所以我不认为这是问题.(但是,那么,也许这就是问题.)现在我正在连接'hideColumn()',但我最终想要连接到我自己的插槽(例如'my_sectionClicked(int)'.
下面的代码来自Jasmin Blanchette和Mark Summerfield的"C++ GUI Programming with Qt 4"的源代码,但我添加的"MyTableView"除外.
MyTableView.h
#ifndef MYTABLEVIEW_HPP
#define MYTABLEVIEW_HPP
#include <QTableView>
class MyTableView : public QTableView
{
Q_OBJECT
public:
explicit MyTableView(QWidget *parent = 0);
public slots:
void my_sectionClicked(int logicalIndex);
private slots:
public:
private:
QHeaderView *m_rowHeader;
};
#endif // MYTABLEVIEW_HPP
Run Code Online (Sandbox Code Playgroud)
MyTableView.cpp
// Qt Includes
#include <QDebug>
#include <QMenu>
// Local Includes
#include "MyTableView.h"
MyTableView::MyTableView(QWidget *parent) : QTableView(parent)
{
m_rowHeader = horizontalHeader();
connect(m_rowHeader, SIGNAL(sectionClicked(int)), this, SLOT(hideColumn(int)));
}
void MyTableView::my_sectionClicked(int logicalIndex)
{
qDebug().nospace() << "Column " << logicalIndex …Run Code Online (Sandbox Code Playgroud)