It's difficult to tell what is being asked here. This question is ambiguous, vague, incomplete, overly broad, or rhetorical and cannot be reasonably answered in its current form. For help clarifying this question so that it can be reopened, visit the help center。
6年前关闭。
我试图从静态方法中显示一个弹出窗口:
这段代码可以正常工作,我的窗口带有两个QPushbutton,但是我不知道何时应该将SIGNAL
以下代码不起作用:
我知道问题尚不清楚,但是代码在此处复制有点复杂
我特意将其重新格式化以显示以下几点:
您试图将没有参数的
相反,您需要创建一个也不检索参数的插槽。
正如ahenderson在评论中已经指出的那样,您不能在静态方法中使用
主要问题是,为什么需要静态方法?因为只想要一个弹出窗口?如果那是唯一的原因,那么通常是这样做的方式:
MainThread.h:
MainThread.cpp:
此解决方案可以使用,但是如果要从静态方法中调用它,则还必须在该静态方法中创建MainThread实例。
6年前关闭。
我试图从静态方法中显示一个弹出窗口:
void MainThread::popup(void){
static klassePopup* roiPopup;
roiPopup = new SavingROI();
roiPopup->show();}
这段代码可以正常工作,我的窗口带有两个QPushbutton,但是我不知道何时应该将SIGNAL
clicked()
与SLOT连接。以下代码不起作用:
connect(roiPopup->getsaveROIButton(),SIGNAL(clicked()),this,SLOT(saveROI(cv::Mat)));
我知道问题尚不清楚,但是代码在此处复制有点复杂
最佳答案
让我们仔细看看您的连接:
connect( roiPopup->getsaveROIButton(), SIGNAL( clicked( ) ),
this , SLOT ( saveROI( cv::Mat ) ) );
我特意将其重新格式化以显示以下几点:
您试图将没有参数的
clicked
连接到需要参数的插槽saveROI
。这不起作用,因为连接不知道从何处获取cv::Mat
的值。相反,您需要创建一个也不检索参数的插槽。
正如ahenderson在评论中已经指出的那样,您不能在静态方法中使用
this
。主要问题是,为什么需要静态方法?因为只想要一个弹出窗口?如果那是唯一的原因,那么通常是这样做的方式:
MainThread.h:
class klassePopup; // Note: This is a "forward declaration".
// Google it if you don't know what that is.
class MainThread : public QObject // or anything else which inherits QObject
{
public:
MainThread();
~MainThread();
public:
void popup(); // not static
private slots:
saveROI(); // no parameter
private:
klassePopup* _roiPopup;
};
MainThread.cpp:
#include "klassePopup.h"
#include "SavingROI.h"
MainThread::MainThread() :
_roiPopup( new SavingROI() )
{
bool bConnectionSucceeded
= connect( _roiPopup->getsaveROIButton(), SIGNAL( clicked() ),
( this , SLOT ( saveROI() ) );
}
MainThread::~MainThread()
{
delete _roiPopup;
}
void MainThread::popup()
{
_roiPopup.show();
}
void MainThread::saveROI()
{
// retrieve your cv::mat parameter from somewhere else
}
此解决方案可以使用,但是如果要从静态方法中调用它,则还必须在该静态方法中创建MainThread实例。
关于c++ - 如何以静态方法将信号连接到插槽? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14319629/
10-11 00:54