我有 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/