c++ - 没有这样的插槽 QLineEdit::setText

标签 c++ qt

我正在尝试将按钮连接到 lineEdit。单击按钮时,将 lineEdit 的文本设置为“Hello”。 但我对信号和插槽有疑问!

This is my form

主窗口.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    connect(ui->pushButton,SIGNAL(clicked()),ui->lineEdit,SLOT(setText("Hello")));
}
MainWindow::~MainWindow()
{
    delete ui;
}

主窗口.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QLineEdit>
#include <QPushButton>
namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

private:
    Ui::MainWindow *ui;
};

#endif // MAINWINDOW_H

应用输出

Starting C:\Qt\Qt5.3.0\Tools\QtCreator\bin\build-E01S01-Desktop_Qt_5_3_0_MSVC2013_OpenGL_64bit-Debug\debug\E01S01.exe...
QObject::connect: No such slot QLineEdit::setText("Hello") in ..\E01S01\mainwindow.cpp:9
QObject::connect:  (sender name:   'pushButton')
QObject::connect:  (receiver name: 'lineEdit')

最佳答案

您只能将 SIGNAL 连接到具有相同签名的 SLOT。 您可以使用 QSignalMapper 来完成您想要的:

QSignalMapper * mapper = new QSignalMapper(this);
QObject::connect(mapper, SIGNAL(mapped(const QString&)), ui->lineEdit, SLOT(setText(const QString&)));
QObject::connect(ui->pushButton, SIGNAL(clicked()), mapper, SLOT(map()));
mapper->setMapping(ui->pushButton, tr("Hello"));

关于c++ - 没有这样的插槽 QLineEdit::setText,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37241908/

相关文章:

c++ - 异步 Qt 模型加载到 QML GridView

C++ 与在线 SQL 数据库交互?

c++ - 聚丙稀 | .h 文件 (C++)

c++ - 使用 std::accumulate 以最佳精度添加 float

c++ - 何时对使用 'delete' 创建的临时对象调用 `new` ?

c++ - 根据子数据对 qtreewidget 顶层项目进行排序

c++ - 如何访问指向 QWidget 像素的指针

c++ - protobuf 与 zeromq 与 C++ 的链接错误

c++ - 让 Qt 在 Fedora 12 中工作

c++ - 颜色和纹理如何协同工作?