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