Qt4中的信号和插槽-不工作

Qt4中的信号和插槽-不工作,qt,qt4,qt-creator,signals-slots,Qt,Qt4,Qt Creator,Signals Slots,我正在使用Qt4和Qt Creator。我无法将自定义槽写入UI中的进度条。如何在ui文件中为特定小部件编写自定义插槽?在我的场景中,信号不是来自ui元素 以下代码在运行时产生错误: main window.h #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include<QFile> #include<QFileInfo> namespace Ui { class Ma

我正在使用Qt4和Qt Creator。我无法将自定义槽写入UI中的进度条。如何在ui文件中为特定小部件编写自定义插槽?在我的场景中,信号不是来自ui元素

以下代码在运行时产生错误:

main window.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include<QFile>
#include<QFileInfo>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

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

private slots:
    void on_btcopy_clicked();
    void on_btquit_clicked();
    void ChangeValue(qint64 val);

private:
    Ui::MainWindow *ui;
};

#endif // MAINWINDOW_H
错误消息

Object::connect: No such slot ProgressBar::CangeValue(qint64)in..\untitled\mainwindow.cpp:26
    Object::connect:  (receiver name: 'pbar')

CangeValue
是主窗口中的一个插槽(为了记录:它应该被称为
ChangeValue


因此,
connect(…)
语句中的第三个参数必须是主窗口,而不是进度条。在connect语句中,将
ui->pbar
替换为
this

CangeValue
是主窗口中的一个插槽(请注意:它应该被称为
ChangeValue


因此,
connect(…)
语句中的第三个参数必须是主窗口,而不是进度条。在您的connect语句中将
ui->pbar
替换为
this

我更改了它。但是复制插槽时无法工作。您能帮我吗?添加
qDebug(“插槽被调用”)到您的插槽,查看它是否实际被调用。如果调用了is,则可能必须添加
QApplication::processEvents(QEventLoop::ExcludeUserInputEvents)setValue
callI之后,我刚刚看到您在调用
copy
之后执行了
connect
。改变这两个的顺序。在复制整个文件之前,
copy
的调用不会返回。我更改了它。但是,当复制插槽时,插槽不起作用。您能帮我吗?添加
qDebug(“插槽被调用”)到您的插槽,查看它是否实际被调用。如果调用了is,则可能必须添加
QApplication::processEvents(QEventLoop::ExcludeUserInputEvents)setValue
callI之后,我刚刚看到您在调用
copy
之后执行了
connect
。改变这两个的顺序。在复制整个文件之前,
copy
的调用不会返回。您假设在执行QFile::copy时会发出任何信息。不会的。它将在文件系统上执行同步复制,而不通知您进度。不会的。它将在文件系统上执行同步复制,而不通知您进度。
Object::connect: No such slot ProgressBar::CangeValue(qint64)in..\untitled\mainwindow.cpp:26
    Object::connect:  (receiver name: 'pbar')