0

我在 ROS 节点中使用 Qt 代码。我在课堂上声明了一个静态函数setLabel()。这个函数的作用是把一张图片放到一个QLabel中。现在,我想在使用信号/插槽连接单击按钮时调用此函数。请告诉我应该在问号的地方放什么。

class ImageDisplay: public QObject
{

Q_OBJECT    

    public slots:
    void setLabel();    

    public: 
    static void imageCallback( ); 

};


void ImageDisplay::setLabel()
{

        QLabel* selectLabel= new QLabel();
        selectLabel->setText("hi");     
        selectLabel->show();
}    

void imageDisplay::imageCallBack()
{
    ImageDisplay obj;

    QObject::connect(selectButton, SIGNAL(clicked()),&obj, SLOT(setLabel()));       
}
4

2 回答 2

2

你试试这个,

QObject::connect(selectButton, SIGNAL(clicked()), listenerObj, SLOT(setLabel()));

listenerObj 是您声明插槽的类的对象指针。如果您无法在侦听器中使用“this”,则声明一个包含函数 setLabel 的公共插槽的活动对象并连接该插槽。

在新类的头文件中将 setLabel() 声明为公共插槽

class SomeClass
{
public slots:
void setLabel();
}

然后使用父指针,您可以在界面中显示标签

我认为其中一些会对您有所帮助。

于 2013-06-01T10:51:07.263 回答
0

首先,摆脱全局变量。你为什么需要它?全局变量变化很大,应该避免。
其次,将Q_OBJECT宏添加到myQtClass并做qmake
第三,您的setLabel()插槽不应该是privatepublic如果您想在myQtClass.

于 2013-06-03T16:03:59.940 回答