在两个类之间使用一个信号



我有一个MainWindow类,它包含一个QComboBox和一个来自另一个类的小部件。第二个类包含一个QCheckBox和一个QComboBox。我想使用一个信号来改变我的QCheckBox的checkState和显示在我的QComboBox中的字符串从我的小部件类,当我的主窗口显示在我的QComboBox的字符串已经改变。

但是我真的不明白我的信号必须有什么形式,以及我如何在我的小部件类中使用它。

MainWindow.h:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QWidget>
#include <QComboBox>
#include "devices_left_widget.h"
#define STRING_DEVICE1 "DEVICE1"
#define STRING_DEFAULT ""
class MainWindow : public QMainWindow {
Q_OBJECT
public:
explicit MainWindow(QWidget* parent = nullptr);
signals:
public slots:
void carte_OK();
protected:
QComboBox* carte_type_combo_box;
devices_left_widget* left_widget;
};
#endif // MAINWINDOW_H

device_left_widget.h:

#ifndef DEVICE_LEFT_WIDGET_H
#define DEVICE_LEFT_WIDGET_H
#include <QWidget>
#include <QCheckBox>
#include <QComboBox>
#define STRING_DEVICE1 "DEVICE1"
#define STRING_DEFAULT ""
class device_left_widget : public QWidget {
Q_OBJECT
public:
explicit device_left_widget(QWidget* parent = nullptr);
signals:
public slots:
protected:
QGridLayout* main_grid_layout;
QCheckBox* device_checkbox;
QComboBox* device_type_combo_box;
};
#endif // DEVICES_LEFT_WIDGET_H

我们将小部件的名称命名为container。我们想要将QComboBox的currentTextChanged(const QString &text)信号连接到小部件,所以我们创建一个与信号对应的插槽,设它为chosenTextChanged(const QString& text)。我们在MainWindow构造函数中连接它们:

connect(ui->comboBox, SIGNAL(currentTextChanged(const QString &)),
ui->container, SLOT(chosenTextChanged(const QString &)));

在容器类中,将槽定义为public:

public slots:
void chosenTextChanged(const QString &text) {
//change your QCheckBox's state and
//change your QComboBox's text
}

相关内容

  • 没有找到相关文章

最新更新