连接:没有这样的插槽QTreeView则(Connect: No such Slot QTreeVi

2019-10-19 11:44发布

我继承了一个类MainTreeQTreeview

maintree.cpp文件

void  MainTree::LaunchTree()
{
//Tree launching
 connect(this, SIGNAL(customContextMenuRequested(const QPoint& )),this,SLOT(showCustomContextMenu(const QPoint&)));
}

void MainTree::showCustomContextMenu(const QPoint &pos)  
{
  //Add actions

}

但我得到以下错误

QObject::connect: No such slot QTreeView::showCustomContextMenu(const QPoint&)

我不明白为什么,我失去的东西?

类的定义MainTree

class MainTree : public QTreeView
{

public:
    MainTree();
    MainTree(QWidget *parent = 0);

public slots:

private slots:
    void showCustomContextMenu(const QPoint& pos);

private:
     void launchTree();

 };

Answer 1:

你缺少Q_OBJECT宏了,所以试试这个:

class MainTree : public QTreeView
{
Q_OBJECT
// ^^^^^
public:
    MainTree();
    MainTree(QWidget *parent = 0);

public slots:

private slots:
    void showCustomContextMenu(const QPoint& pos);

private:
     void launchTree();

 };

不要忘记重新运行QMAKE在此之后才能正常再生商务部的文件。 请确保您有商务部包括你的源代码的结尾,或者你处理文化部代不说。

另请注意,如果您使用的Qt 5.2或更高版本,C ++ 11的支持,你会得到关于失踪Q_OBJECT宏的静态断言,这样你就不会得到运行时间的问题了。 我建议遵循,如果你能。



Answer 2:

当提到插槽和信号,你必须omn​​it所有装饰: const &等(唯一的明星可以保持)。

connect(this, SIGNAL(customContextMenuRequested(QPoint)), 
        this, SLOT(showCustomContextMenu(QPoint)))

你也忘了Q_OBJECT宏。



文章来源: Connect: No such Slot QTreeView