Qt 使用按钮更改另一个类中QLabel的文本

Qt 使用按钮更改另一个类中QLabel的文本,qt,Qt,我曾经在那里贴过一个问题:但当第一个类创建第二个类时,它就起作用了。现在我有两个类,它们都是在sametime创建的,那么如何将它们连接在一起呢?下面是我的全部代码,第一个类有一个按钮,第二个类有一个标签,我想当用户点击第一个类中的按钮时,第二个类中的标签会发生变化。它们放在stackWidget中: // file.h #include <QWidget> #include <QtGui> class widgetA; class widgetB; class A

我曾经在那里贴过一个问题:但当第一个类创建第二个类时,它就起作用了。现在我有两个类,它们都是在sametime创建的,那么如何将它们连接在一起呢?下面是我的全部代码,第一个类有一个按钮,第二个类有一个标签,我想当用户点击第一个类中的按钮时,第二个类中的标签会发生变化。它们放在stackWidget中:

// file.h

#include <QWidget>
#include <QtGui>

class widgetA;
class widgetB;

class A : public QWidget
{
    Q_OBJECT
public:
    explicit A(QWidget *parent = 0);
private:
    QComboBox* comboBox;
    QStackedWidget* stackWidget;
    widgetA *wa;
    widgetB *wb;
};

class widgetA : public QWidget
{
    Q_OBJECT
public:
    widgetA(QWidget *parent = 0);
public slots:
    void buttonClicked();
private:
    QPushButton* button;
};

class widgetB : public QWidget
{
    Q_OBJECT

public slots:
    void labelChangeText(const QString);

public:
    widgetB(QWidget *parent = 0);
    QLabel* label;
};

p/S:对不起,我的英语

是什么阻碍了您在widgetA::buttonClicked()中调用wb->labelChangeText(“某些字符串”)?在类a中有一个指向widgetB的指针。labelChangeText在类B中是公共的。只是它是一个插槽并不意味着不能将其作为普通方法调用。

您可以将
widgetB
对象的指针传递给
widgetA
,也可以将信号从
widgetA
连接到
widgetB
中的插槽

以下是信号/插槽选项的示例:

// widgeta.h
signals:
   void changeText(QString text);
-

-

-

// widgeta.h
signals:
   void changeText(QString text);
// widgeta.cpp
void widgetA::buttonClicked()
{
   emit changeText("button clicked");
}
//widgetb.h
public slots:
  void labelChangeText(const QString & text);
// a.cpp
connect(wa, SIGNAL(changeText(QString)), wb, SLOT(labelChangeText(QString)));