[英]Combo box selection slot and signal in Qt C++
尝试在QComboBox
连接新的选择更改,以在插槽中使用该选择的字符串。
基本上,后currentIndexChanged
信号时, displayData
MAPP将已持有从程序的另一部分(例如解析器)并填充随后的所有数据,使用当前selection
的组合框的comboBoxChange
,一个密钥将被给予displayData
地图为了以tset
结构的形式获得所需的值。
下面是我所有的代码设置,并尝试插槽和连接信号。 请帮助了解如何做。
主窗口
struct tset {
// struct declaration //
QString name;
double height;
}
class MainWindow : public QMainWindow {
private slots:
void comboBoxChange(QMap<QPair<QString, QString>, tset>& displayData, QString selection);
}
主窗口
#include "mainwindow.h"
//connect(ui->comboBox, &QComboBox::currentIndexChanged(const QString&), this,&MainWindow:: comboBoxChange(QMap<QPair<QString, QString>, tset>, QString selection));
connect(ui-> comboBox, &QComboBox::currentIndexChanged, this, &MainWindow::on_ comboBoxChange(QMap<QPair<QString, QString>, tset>, QString));
void MainWindow:: comboBoxChange (QMap<QPair<QString, QString>, tset> &displayData, QString s) {
// use the selection string to decide which data to get from the QMap
// from s derive blah and blah2
tset test= = displayData.value(qMakePair(QString{"blah"}, QString{"blah2"}));
qDebug() << test.name << test.height;
}
在cpp中,您必须使用从QObject基类继承的连接函数。
connect(const QObject * sender, const char * signal, const QObject * receiver, const char * method):
提示:连接在运行时设置。 如果连接不正确,则没有编译器错误(仅QDebug消息)
connect(ui->comboBox, SIGNAL(currentIndexChanged(const QString&)), this, SLOT(comboBoxChange(const QString&)));
这是标题中的声明。 您忘记在声明的顶部提到Q_OBJECT了。 您需要所有包含信号或插槽的类。
class MainWindow : public QMainWindow
{
Q_OBJECT
private slots:
void comboBoxChange(const QString& selection_text);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.