gpt4 book ai didi

c++ - 在 C++、Qt5 中创建自定义插槽

转载 作者:搜寻专家 更新时间:2023-10-31 00:39:05 24 4
gpt4 key购买 nike

在 python 中,我们很容易编写自定义插槽,方法是传入生成信号时要调用的函数。而在 C++ 中,连接函数要求我们传递槽函数的地址,我想是这样的。我怎么做。我尝试使用 this 但没有用。

Python 代码::

 class imviu(QtGui.QWidget):
def __init__(self):
super(imvui,self).__init__()
self.btn=QtGui.QPushButton('Browse')
btn.clicked.connect(self.openimg)
def openimg(self):
#do something

C++ 代码::

class imviu: public QWidget
{
public:
imviu(QWidget *parent=0);
QPushButton *btn=new QPushButton("Browse");
void openimg(void);
};

imviu::imviu(QWidget *parent)
:QWidget(parent)
{
connect(btn, SIGNAL(clicked()),this,SLOT(openimg()));//this does'nt work:QObject::connect: No such slot QWidget::openimg()
}

void imviu::openimg()
{
//do something
}

最佳答案

为了使用信号和槽,你需要在你的类中有 Q_OBJECT 宏,并确定哪些函数应该是信号和槽。看看the documentation以获得更深入的解释。

在此之后,您需要设置项目文件,以便 MOC 可以生成必要的代码。

你的类定义应该是这样的:

class imviu: public QWidget
{
Q_OBJECT
public:
imviu(QWidget *parent=0);

public slots:
void openimg();

private:
QPushButton *btn;
};

关于c++ - 在 C++、Qt5 中创建自定义插槽,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16924515/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com