c++ 将信号从QSlider发送到QLineEdit插槽[重复]

fumotvh3  于 2024-01-09  发布在  其他
关注(0)|答案(2)|浏览(149)

此问题在此处已有答案

How we can connect the signals and slot with different arguments?(5个答案)
8天前关闭
我有一个水平滑块,当滑块值改变时,我想更新行编辑。
我写了这个,但什么也没发生:

  1. connect(ui->horizontalSlider1, SIGNAL(&QSlider::valueChanged), ui->lineEdit2, SLOT(&QLineEdit::setText));

字符串
我可以看到valueChanged有一个类型为int的参数,但是setText有一个不同类型的参数。
我在构建过程中没有得到错误,并且在运行应用程序时也没有发生任何事情。
这样做的正确方法是什么?

dhxwm5r4

dhxwm5r41#

首先,你的语法是错误的,正确的应该是
第一个月
但是,参数类型不匹配,所以这不会起作用。您的目的最好由lambda来实现:

  1. connect(ui->horizontalSlider1, &QSlider::valueChanged,
  2. // use context ui-lineEdit2, capture "this" by value,
  3. // match lamba parameters with the signal parameters
  4. ui->lineEdit2, [this](int value){
  5. // "this" was captured, so it is implicitly used in line below,
  6. // and format the integer as numeric string any way you need
  7. ui->lineEdit2->setText(QString::number(value));
  8. });

字符串

balp4ylt

balp4ylt2#

首先更新mainwindow.h中的MainWindow类:

  1. private:
  2. Ui::MainWindow *ui;
  3. void updateLineEdit(int);

字符串
然后将其用作mainwindow.cpp的内容:

  1. #include "mainwindow.h"
  2. #include "ui_mainwindow.h"
  3. MainWindow::MainWindow(QWidget *parent)
  4. : QMainWindow(parent)
  5. , ui(new Ui::MainWindow)
  6. {
  7. ui->setupUi(this);
  8. connect(ui->pushButton1, SIGNAL(clicked()), ui->lineEdit1, SLOT(clear()));
  9. connect(ui->horizontalSlider1, &QSlider::valueChanged, this, &MainWindow::updateLineEdit);
  10. }
  11. void MainWindow::updateLineEdit(int value) {
  12. this->ui->lineEdit2->setText(QString::number(value));
  13. }
  14. MainWindow::~MainWindow()
  15. {
  16. delete ui;
  17. }

展开查看全部

相关问题