我在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()));
}
答案 0 :(得分:2)
你试试这个,
QObject::connect(selectButton, SIGNAL(clicked()), listenerObj, SLOT(setLabel()));
listenerObj是您声明插槽的类的对象指针。如果您无法在侦听器中使用“this”,则声明一个包含函数setLabel的公共插槽的活动对象并连接插槽。
将setLabel()声明为新类头文件中的公共插槽
class SomeClass
{
public slots:
void setLabel();
}
然后使用父指针,您可以在界面
中显示标签我认为其中一些可以帮到你。
答案 1 :(得分:0)
首先,摆脱全局变量。你为什么需要它?全局变量差异很大,应该避免
其次,将Q_OBJECT
宏添加到myQtClass
并执行qmake
第三,您的setLabel()
广告位不应为private
,如果您想在public
之外使用,请将其设为myQtClass
。