c++ - 连接 2 个不同类别的信号(Qstring)和插槽(String)
问题描述
我有 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;
};
推荐阅读
- reactjs - 我无法在 Azure Linux 环境中仅部署 ReactJS 应用程序的构建文件夹
- python - Pandas Out of Bounds 时间戳解决方法
- python - Python - 重复任务
- rust - 重新借用嵌套的可变引用
- javascript - 使用 gaxios(或 axios)管道请求
- ruby-on-rails - 如何通过很少的选项从连接表中选择数据记录?
- php - 当电子邮件形式的表格中没有这样的行时,PHP会给出错误
- c# - 连接到 Oracle 失败 => .Net
- maven - 在组装期间合并父子pom
- scikit-learn - sklearn的SVM中使用的决策函数是什么