c++ - 连接 2 个不同类别的信号 (Qstring) 和槽 (String)

标签 c++ qt signals slot

我有 2 个类:MaFentre 类和代码类

代码.h :

class Code : public QObject {

public :


explicit  Code(Q3DScatter *scatter);

    public slots:
 std::vector<point> readingData(std::string inputFileName);
}

MaFenetre.h :

class MaFenetre : public QWidget
{  Q_OBJECT
    public:
MaFenetre();
    private:
    QLineEdit *entry1;
}

代码.cpp:

std::vector<point> Code::readingData(std::string inputFileName){
// i read a file here
}

我在 MaFenetre 类的构造函数中创建了 Code 类对象

    Code *modifier = new Code(graph);

用于连接槽和信号

QObject::connect(entry1, SIGNAL(textChanged(QString)),modifier, SLOT(readingDara(std::string inputFileName)))

我知道参数必须是同一类型,为此我尝试编写代码:

    QObject::connect(entry, SIGNAL(textChanged(QString.toStdString)),modifier, SLOT(readingDara(std::string inputFileName)))

但是没用

最佳答案

您的信号和槽参数不兼容。

您可以使用 lambda 函数来解决此问题

 Code *modifier = new Code();
 MaFenetre * poMaFenetre = new MaFenetre();

 connect(poMaFenetre->Entry(), &QLineEdit::textChanged,
         [modifier](const QString & oText)
 {
     std::vector<int> data = modifier->readingData(oText.toStdString());
     // Handle data here...
 });

MaFenetre

class MaFenetre : public QWidget
{
    Q_OBJECT
    public:
    MaFenetre() {entry1.reset(new QLineEdit());}
    QLineEdit *Entry() {return entry1.data();}
    private:
    QScopedPointer<QLineEdit> entry1;
};

关于c++ - 连接 2 个不同类别的信号 (Qstring) 和槽 (String),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50856042/

相关文章:

c++ - 如果我在另一个类中使用一个类的对象,我可以使用指向第一类对象的指针来指向它的成员吗?

c++ - QDir.setNameFilter 如何仅显示具有特定扩展名的文件?

django - 如何根据使用信号更新另一个模型的字段来更新模型字段?

c++ - 在 C++ 中,当被 ctrl-c 中断时,在死亡之前调用带有参数(信号编号除外)的函数

c++ - libwebsocket : unable to write frame bigger than 7160 bytes

c++ - 为什么 ASIO 套接字 open() 会失败?

c++ - 如何在vscode中设置 "include path"来编译c++

c++ - 使用不匹配单词的正则表达式链捕获

c++ - 如何创建 QPixmap 的半透明拷贝?

c++ - 在多线程 c++0x11 程序中结合 cntr +x 或 kill 信号使用 zmq::poll