我有 4 个 QLineEdits 和 4 个 QPushButtons。如果我单击 QPushButton,我想在相应的 QLineEdit 内设置一些文本。
我想使用QSignalMapper来区分每个QButton及其对应的QLineEdit,因此如果单击Button1,我想在Edit1中设置文本。
在我的 maindwindow 的构造函数中,我执行以下操作:
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
signalMapper = new QSignalMapper(this);
// set mapping and pass QLineEdit as parameter
signalMapper->setMapping(ui->btn1, ui->edit1);
signalMapper->setMapping(ui->btn2, ui->edit2);
signalMapper->setMapping(ui->btn3, ui->edit3);
signalMapper->setMapping(ui->btn4, ui->edit4);
// now connect the clicked()-signal to the mapping
connect(ui->btn1, &QPushButton::clicked, signalMapper, &QSignalMapper::map);
connect(ui->btn2, &QPushButton::clicked, signalMapper, &QSignalMapper::map);
connect(ui->btn3, &QPushButton::clicked, signalMapper, &QSignalMapper::map);
connect(ui->btn4, &QPushButton::clicked, signalMapper, &QSignalMapper::map);
// connect signalMapper to my my function
connect(signalMapper, SIGNAL(mapped(QObject*)), this, SLOT(setFileName(QObject*)));
}
出于测试目的,我想显示我使用此插槽“链接”到每个按钮的编辑文本:
void MainWindow::setFileName(QObject* target)
{
QLineEdit* edit = qobject_cast<QLineEdit*>(target);
QMessageBox msgBox;
msgBox.setText(edit->text());
msgBox.exec();
}
但这甚至无法编译,我不明白这个问题:http://pastebin.com/v5sD06yJ http://pastebin.com/v5sD06yJ
有人可以向我解释一下我的代码有什么问题吗?
这是我的项目:https://copy.com/2kDf8Jr0v1if https://copy.com/2kDf8Jr0v1if
提前致谢!