使用Qt信号和插槽更改另一个类的标签文本



我正在尝试从另一个类更改类Label的文本。我有一个类MainWindow,它包含Label。

我还有一个Bot类,我想从中更改标签的值。

我正在尝试创建信号和插槽,但我不知道从哪里开始。

我创建了这样的信号和插槽:

//in mainwindow.h
signals:
void changeTextSignal();
private slots:
void changeText();
//in mainwindow.cpp
void MainWindow::changeText(){
this->label->setText("FooBar");
}

但我不知道如何连接一个信号,以便能够从另一个类更改Label的文本。

阅读Qt信号槽机制。如果我理解正确的话,您正试图从Bot向MainWindow发出标签文本需要更改的信号。以下是您的操作方法…

//bot.h
class Bot
{
    Q_OBJECT;
    //other stuff here
signals:
    void textChanged(QString);
public:
    void someFunctionThatChangesText(const QString& newtext)
    {
        emit textChanged(newtext);
    }
}
//mainwindow.cpp
MainWindow::MainWindow
{
    //do other stuff
    this->label = new QLabel("Original Text");
    mybot = new Bot;   //mybot is a Bot* member of MainWindow in this example
    connect(mybot, SIGNAL(textChanged(QString)), this->label, SLOT(setText(QString)));
}
void MainWindow::hello()
{
    mybot->someFunctionThatChangesText("Hello World!");
}

相关内容

  • 没有找到相关文章

最新更新